[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Wrapping up SRFI-70



> From: bear <bear@xxxxxxxxx>
> On Wed, 17 Aug 2005, Paul Schlie wrote:
>> ...
>>  therefore in representations where they
>>  are not distinguishable, it would seem that it may then be correspondingly
>>  appropriate to presume values represented as infinites are over/under-
>>  flowed values, thereby implying that any value other than an exact
>>  infinity multiplied by an exact 0 is 0, and correspondingly implying
>>  that only 0/0 and/or any value who's absolute value is greater than 1
>>  divided by, or who's absolute value is less than 1 multiplied by, an
>>  infinity are considered NaN's [aka 0/0] (as otherwise the resulting value
>>  will be known to be within the value ranges designated for infinites
>>  and/or their reciprocals, and represented as such)?
> 
> Okay, I had to reread that three times, but if I understand
> you correctly, I think I agree. I've been awake too long
> maybe and I'm having trouble thinking around corners.

In attempt to more clearly depict the above:

          (additive inverse axis)
                     |
   * -sInf | * -s0.0 | * +s0.0 | * +sInf
   => sInf | => s0.0 | => s0.0 | => sInf
   --------|---------|---------|-------- (multiplicative Infinities)
   -Inf   -1  -0.0   0  +0.0  +1    +Inf
   ==|=====|====|====|====|====|=====|== (multiplicative inverse axis)
   -0.0   -1  -Inf  Inf +Inf  +1    +0.0
   --------|---------|---------|-------- (multiplicative NaN's)
   * sInf  | * s0.0  | * s0.0  | * sInf
   => NaN  | => NaN  | => NaN  | => NaN

i.e:

 for x!=Inf:  (* x 0) => 0, (/ x Inf) => 0 ; true zero
 for x!=0:    (* x Inf) => Inf, (/ x 0) => Inf ; true infinity

 for x<=-1:   (* x -Inf) => +Inf, (/ x -0.0) => +Inf ; +infinity/overflow
              (* x +Inf) => -Inf, (/ x +0.0) => -Inf ; -infinity/overflow

 for -1<=x<0: (* x -0.0) => +0.0, (/ x -Inf) => +0.0 ; +zero/underflow
              (* x +0.0) => -0.0, (/ x +Inf) => -0.0 ; -zero/underflow

 for 0<x<=+1: (* x +0.0) => +0.0, (/ x +Inf) => +0.0 ; +zero/underflow
              (* x -0.0) => -0.0, (/ x -Inf) => -0.0 ; -zero/underflow

 for +1<=x:   (* x +Inf) => +Inf, (/ x +0.0) => +Inf ; +infinity/overflow
              (* x -Inf) => -Inf, (/ x -0.0) => -Inf ; -infinity/overflow

 otherwise for any other value of x above, => NaN