Robert G. Nelson (rgnelson)
Moderator Username: rgnelson
Post Number: 272 Registered: 06-2003
| Posted on Monday, December 06, 2004 - 03:28 pm: | |
This happens because FlexPDE tests for divides that potentially cause overflow and replaces the result with a maximum of 1e37. This is actually a vestige of earlier days. 1e37 is the largest number that can be represented in single-precision floating point format. Since FlexPDE actually performs arithmetic in double precision format, we should replace this test by 1e306, the largest number representable in double precision. Nevertheless, 1e37 is a large number, approximately equal to the number of molecules in a cubic mile of seawater. In any reasonably scaled system, this limit should not be confining. The IEEE double-precision standard provides for a precision of approximately 16 decimal digits, with minimum and maximum representable values of approximately 1e-306 to 1e306. Maximum exponential argument is about 700. From the above you can see that even at 1e37 you are running risks of loss of precision due to cancellation errors. For example, 1e37+1e20-1e37=0, not 1e20. |