Floating point math issues

From Geos-chem
Revision as of 14:13, 9 April 2008 by Bmy (Talk | contribs)

Jump to: navigation, search

Safe floating-point division

From http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/8b367f44c419fa1d/

Thank you to all that offered their suggestions for a "safe division" routine to prevent overflow. For those that are curious about the solution to the problem, I found useful to adopt a subroutine along the lines suggested by William Long:
    if(exponent(a) - exponent (b) >= maxexponent(a) .OR. b==0)Then 
     q=altv 
    else 
     q=a/b 
    endif 
The = in the >= is to take into account the case when the fractional part of a is 1.111... and that of b is 1.
It works very well.
Thank you again,
Julio.