Numeric Computation References

Description



The numeric computation environment in Maple is based on the IEEE Standard 754 for Binary FloatingPoint Arithmetic [1], and its subsequent generalization to base 10 machines, known as IEEE/854 [2]. These standards have natural generalizations to the arbitrary precision computing environment in Maple, and by adopting such natural generalizations the hardware and software numeric computing environments are formed into a cohesive whole.


The hardware computation environment simulated within Maple (currently under development) is referred to as the Maple hardware computation environment, to distinguish it from the underlying physical hardware computation environment.


Floating point systems are specified by four parameters, Fl(B, p, L, U), and elements of these systems are specified by three parameters, (s, m, e):


s is the sign of a floatingpoint number,


m is its (unsigned) mantissa, and


Certain values of these parameters are reserved for special values (for example, to represent objects within the system that do not have interpretations as numbers). Otherwise, the number represented is s * m * B^e.


B is the base of the number system.


p is the precision. It specifies the maximum number of baseB digits in the mantissa of a floatingpoint number in the machine. Unspecified trailing digits, if any, are assumed to be 0.


L is the largest negative (baseB) exponent of a representable number. The smallest positive, normalized, representable number is (1, 1, L).


U is the largest positive (baseB) exponent of a representable number. The largest positive representable number is (1, ddd...d, U), where the mantissa has p d's and d = B  1.


Maple's software floatingpoint environment can be viewed as a large (effectively infinite) collection of distinct virtual machines, with b = 10, and these machines are distinguished only by the value of the parameter p. That is, all machines are base 10, and floatingpoint numbers in all machines have the same ranges of possible exponent values. The smallest value of p is 1; the largest can be dependent on the underlying physical machine architecture.


Note: To avoid certain difficulties, Maple considers the largest representable software float to be (1, 9, U), independent of Digits.


These virtual machines coexist with each other according to the following rule: A software float (s,m,e) belongs to no virtual machine until it is used in a computation in which a specific virtual machine is required, at which time it is "entered" into that machine. "Entering" a software float (s, m, e) into a machine Fl(10, p, L, U) requires nothing to be done if the length of m is no more than p. However, if the length of m is more than p, then m must be properly rounded to p digits. Similarly, software floats are "entered" into the Maple hardware computational environment only when this operation is required, and Maple hardware floats are "entered" into a virtual machine only when required. A software float that results from a floatingpoint computation is again treated as belonging to no specific virtual machine.



References



[1] "IEEE Standard 7541985 for Binary FloatingPoint Arithmetic." Reprinted in ACM SIGPLAN Notices, Vol. 22 No. 2. (1987): 925.


[2] "A Proposed Radix and WordLengthIndependent Standard for FloatingPoint Arithmetic." Reprinted in IEEE Micro, (August 1984): 86100.


[3] Goldberg, D. "What Every Computer Scientist Should Know About FloatingPoint Arithmetic." ACM Comp. Surv. Vol. 23. (1991): 548.


[4] "Programming Languages  C." ISO/IEC 9899 "C9X" (esp. Annexes "F" and "G").


[5] "Information technology  Language independent arithmetic." ISO/IEC 109671 (1994).


