Common wisdom on arithmetic (IEEE)

Antoniotti Marco antoniotti.marco at disco.unimib.it
Fri Nov 2 22:19:13 UTC 2018


Thanks

I know about GSLL.  I just wanted to do something different and “mostly CL”.



> On Nov 2, 2018, at 21:12 , Liam Healy <lhealy at common-lisp.net> wrote:
> 
> Marco,
> 
> If you don't mind using a foreign library, GSL provides these things
> through GSLL:
> GSL> gsl:+nan+
> #<DOUBLE-FLOAT quiet NaN>

That is the SBCL/CMU 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).

I know.  I looked at Antik.  This is more of a “let’s build it from scratch” student project.  I will see how it pans out.

Cheers
—
Marco










> 
> 
> 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
>> 
>> 
> 

--
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