Re: [Scheme-reports] Strong win later reversed: Real numbers have imaginary part #e0 Mark H Weaver 15 Dec 2012 17:27 UTC

Sascha Ziemann <ceving@gmail.com> writes:
> 2012/12/14 John Cowan <cowan@mercury.ccil.org>:
>>> For example, this reversal means that (max 1.0+0.0i 1.0-0.0i) is
>>> permitted, and the result is no longer uniquely determined.
>>> What should the result be?
>>
>> I'd say it's correct to return either one, since they are =.
>
> Wolfram thinks it is neither the first nor the second:
>
> http://www.wolframalpha.com/input/?i=max+%281.0%2B0.0i%2C+1.0-0.0i%29

Scheme is unusual in that it distinguishes between exact and inexact
numbers, and keeps track of whether the results of numerical operations
are exact or inexact.  If the 'exact?' predicate answers true to the
result of a computation, then you can be assured that the answer is
precisely mathematically correct (assuming that the Scheme implementor
did his job properly).

Notationally, 0.0 is an inexact zero and 0 is the exact zero.
Therefore, in Scheme notation, 1.0 (i.e. 1.0+0i) has a different meaning
than 1.0+0.0i.  In the case of 1.0, the imaginary part is known to be
exactly zero, whereas for 1.0+0.0i the imaginary part is merely
estimated to be approximately zero.

Common Lisp, and (as far as I can tell) Wolfram Alpha do not keep track
of the exactness of their results, so they can simply turn 1.0+0.0i into
1.0.

   Regards,
     Mark

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports