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@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@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).