Common wisdom on arithmetic (IEEE)

Liam Healy lhealy at common-lisp.net
Fri Nov 2 20:12:29 UTC 2018


Marco,

If you don't mind using a foreign library, GSL provides these things
through GSLL:
GSL> gsl:+nan+
#<DOUBLE-FLOAT quiet NaN>
GSL> gsl:+positive-infinity+
#.SB-EXT:DOUBLE-FLOAT-POSITIVE-INFINITY
GSL> gsl:+negative-infinity+
#.SB-EXT:DOUBLE-FLOAT-NEGATIVE-INFINITY

This should work on any CL implementation that can load GSLL.

I'm interested in your generic math library, as I have some of that in
Antik (which GSLL uses).


Liam
On Fri, Nov 2, 2018 at 3:24 PM Antoniotti Marco
<antoniotti.marco at disco.unimib.it> 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
>
>



More information about the pro mailing list