Common wisdom on arithmetic (IEEE)
Antoniotti Marco
antoniotti.marco at disco.unimib.it
Fri Nov 2 22:15:21 UTC 2018
> On Nov 2, 2018, at 21:19 , Daniel Herring <dherring at tentpost.com> wrote:
>
> Hi Marco,
>
> I would just rely on the IEEE 754 values and define constants for convenience. Negative zero is an artifact of floating-point calculations, not a symbol in math. Don't forget that many values are classified as NaN (common exponent, many fractions).
Thanks. That is what I was thinking...
> C defines fpclassify() and related predicates to return NaN, infinite, zero, subnormal, or normal.
Yes. Bu the point is that I would like to stay in CL-land as much as possible.
> Obligatory reference: What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg
>
> Rounding error causes loss of life:
> http://www-users.math.umn.edu/~arnold/disasters/patriot.html
Exactly.
Cheers
—
Marco
>
>
> - Daniel
>
>
> On Fri, 2 Nov 2018, Antoniotti Marco wrote:
>
>> Dear all
>> I am fooling around (again!) with the spec of a math library that I want the students to work on as a project. Language is Common Lisp.
>> Essentially the library is an extended generic math library built on the basis of the many ones floating around.
>> Now. Here comes IEEE. And “infinity"
>> Among many implementations there is more or less a consensus about how to “represent” IEEE infinities in CL.
>> E.g.
>> LW > math:long-float-positive-infinity
>> +1D++0 #| +1D++0 is double-float plus-infinity |#
>> CCL ? math:long-float-positive-infinity
>> 1D++0
>> and so on.
>> NaN is not as clearly defined.
>> LW 45 > math:nan
>> 1D+-0 #| 1D+-0 is double-float not-a-number |#
>> CCL ? math:nan
>> 1D+-0 #| not-a-number |#
>> But to get a NaN in SBCL/CMUCL requires a trick. I use
>> (sb-kernel:make-double-float -524288 0)) ; Courtesy of Raymond Toy.
>> In any case… There are two issues that I would like to brainstorm a bit.
>> The first one pertains rounding modes. Give the current state of affairs, it does not seem possible to access them in all the CL implementations. CMUCL/SBCL give you the necessary hooks, but LW doesn’t.
>> Let’s skip this.
>> The second is just a simple question.
>> Given that we *do* have (with some acrobatics) access to IEEE infinities, would you add symbolic constants to such library like
>> (defconstant +posinf+ ‘+posinf+)
>> or would you just rely on the IEEE infinities?
>> Generic functions like
>> (defgeneric plus (x y) …)
>> Will obviously be affected.
>> I just want to get a feeling about the overall wisdom of this crowd.
>> All the best
>> Marco
>> --
>> Marco Antoniotti
--
Marco Antoniotti, Associate Professor tel. +39 - 02 64 48 79 01
DISCo, Università Milano Bicocca U14 2043 http://bimib.disco.unimib.it
Viale Sarca 336
I-20126 Milan (MI) ITALY
Please check: http://cdac2019.lakecomoschool.org
Please check: http://troncopackage.org
Please check: https://www.frontiersin.org/research-topics/7394/network-bioscience
Please note that I am not checking my Spam-box anymore.
Please do not forward this email without asking me first (cum grano salis).
More information about the pro
mailing list