"Luke Palmer" schreef:

> When do we do integer/rational math and when do we do floating point
> math?
>
> That is, is 1 different from 1.0?  Should 10**500 be infinity or a 1
> with 500 zeroes after it?  Should 10**10**6 run out of memory?  Should
> "say (1/3)**500" print a bunch of digits to the screen or print 0?
>
> These are just examples.  Exponentials are the easiest to think about
> limit cases with, but the whole general issue needs precise semantics.

A Numeric could have multiple faces: Integer, Rational, Float, etc. Some
faces can have a Complex variant.

A bitstring could flag which faces are actual (usable, non-dirty).

Each face needs its own storage, for instance 1/2 could be stored as
Integer "0" (or "1", or alternating between them), Rational "1 / 2" (or
"2 ** -1"), Float "1B-1", etc.

Some conversions are without surprises, like from Integer to Float
(because loss of precision is normal when going from Integer to Float,
so even a difference of more than 1 is to be expected).
>From Float to (Big)Integer can result in an unexpected difference of 1.
Or even in Inf.

(just rambling)

-- 
Affijn, Ruud

"Gewoon is een tijger."

Reply via email to