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

Re: infinity notations



 | Date: Mon, 04 Jul 2005 15:01:28 -0400
 | From: Paul Schlie <schlie@xxxxxxxxxxx>
 | 
 | > Some new possibilities have come to light.  Here are all the possible
 | > Scheme infinity notations that I know of:
 | > Notations C and G use a trailing `.' to indicate inexactness as K
 | > does.  This requires a small extension to R5RS number syntax, as
 | > rational notation (`1/0') does not currently allow a trailing period.
 | 
 | - however may not be necessary if +Inf is symbolically defined as +1/0.

 [R5RS] ... in all implementations a sequence of letters, digits, and
 "extended alphabetic characters" that begins with a character that
 cannot begin a number is an identifier.  In addition, `+', `-', and
 `...' are identifiers.

Since `+' can begin a number, +Inf would not be an identifier unless
it was made one of the "In addition" cases; which is also a syntax
extension.

 | And I'll concede my perceived necessity to denote an ambiguously
 | signed infinity in exchange for the prevention of incorrectly
 | signed infinities, which means that the region about 0 must be
 | considered correspondingly invalid, (i.e. both are considered NaN
 | or 0/0). yielding:
 | 
 | 
 |           /  NaN  \         or equivalently:          /  0/0  \
 |          /    |    \                                 /    |    \
 |         -Inf  |  +Inf                               -1/0  |  +1/0
 |         ------+------- (reciprocal projection axis) ------+------
 |         -0.0  |   0.0                               -0.0  |  +0.0
 |          \    |    /                                 \    |    /
 |           \  NaN  /                                   \  0/0  /
 |               |                                           |
 |               0                                           0
 |   (negative projection axis)                  (negative projection axis)
 | 
 | (where NaN and +-Inf may be thought of as symbols defined as 0/0
 | and +-1/0)
 | 
 | Which helps eliminates the ordering concern, although it's likely
 | still a good idea to define (= -0.0 0 +0.0) => #t, and (< -0.0 0
 | +0.0) => #t, etc.

The perceived asymmetry driving all these shades of zero is not a
consequence of infinities, but of mathematical units.  `1/0' is an
extension of division to zero divisors.  But it includes the unit `1'.

If we pick finite, nonzero numerators at random, then n_i/0 will be
negative roughly half of the time.  So there is no imbalance in the
expected proportion of signs of resulting from division by unsigned
zero.

 | However then 0/0 denotes all ambiguities in either sign or value,
 | even those which may be very small, then Therefore:
 | 
 | (+ +0.0 -0.0) => 0/0 [aka NaN]
 | 
 | as otherwise:
 | 
 |  (/ (+ +0.0 -0.0 +0.0)) :: (/ (+ 0 +0.0)) :: (/ +0.0) => +Inf
 | 
 | [which would be incorrect]
 | 
 | Thereby one can argue that this is actually good, as then the
 | iterative sum of alternating infinitely small value about 0 is
 | considered ambiguous, which would typically be the case. and
 | correspondingly yield 0/0 for all ambiguities in either sign or
 | significant magnitude.
 | 
 | (tan pi/2) => 0/0
 | (/ 0.0 0.0) => 0/0
 | 
 | and as it may not be obvious, the difference between any two
 | equivalently valued inexact value is an exact 0. I.e.:
 | 
 | (- 1.5 1.5) => 0

This violates R5RS; it also is not true for SRFI-70 inexacts, which
represent real intervals.

 | as there is no inexact 0, as that would imply a value about 0 with
 | an ambiguous sign, which would both have a value range which
 | overlaps +0.0, 0, and +0.0; and who's reciprocal was not self
 | consistent. (or if one chooses, an exact 0 is equivalent to an
 | inexact 0, both mean absolute 0.)