An approximate number can have an exponent up to 30,000 (note that the stock 50g ROM only allows an exponent up to 499). Thus, numbers can range from $10^{-30,000}$ to $10^{+30,000}$.

The precision for approximate numbers is a user selectable parameter, using SETPREC. The default is 32 digits of precision. The maximum is 2000 digits of precision (for comparison, the stock 50g ROM has a fixed precision of 12 digits displayed, 15 digits internally). One nice aspect of this precision implementation is that it can be changed mid-stream through a calculation then changed back, without affecting the rest of the chain of calculation (should certain critical parts of the calculation require higher precision).

Of course, the more precision a number has, the larger amount of memory is required to store it. Here are the storage requirements for numbers:

Number Type Number Range Bytes of storage
Exact-130,000 to +130,0004
Exact$-2^{63}$ to $2^{63}$ (but outside previous range)12
Approximateany8+4*(N/8), where N=smallest multiple of 8 > precision number of digits
ComplexanySum of space for real and imaginary parts plus 4 bytes

At the default precision of 32 digits, an approximate (non-complex) number would require a maximum of 24 bytes.

  • manual/chapter3/numformat.txt
  • Last modified: 2017/06/17 13:40
  • by smartin