[racket-dev] long double for racket

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Jan 28 20:18:57 EST 2013

At Sat, 29 Dec 2012 14:05:08 +0300, Michael Filonenko wrote:
> I have prepared a new version of the patch (attached).

Thanks!

I've merged your patch into the git repo, with some changes:

 * Abstracted more to both reduce code duplication and make the
   "product line" variation easier to read and write.

 * Renamed a few operations to consistently use "extfl", and added
   `extfl->inexact' and `extfl-available?'.

 * Changed the module organization, so that the extflonum bindings are
   always available, and operations raise `exn:fail:unsupported' when
   they are not supported. The operations `extflonum?', `extflvector?',
   and `extflonum-available?' always work.

 * Adjusted the reader to more completely isolate extflonums (e.g., no
   complex numbers with an extflonum part).

 * Changed "sconfig.h" and "scheme.h" to infer when extflonums can be
   supported (see also the new note in "src/README"), and added
   `--disable-extflonum' to `configure'.

 * Reorganized and expanded the documentation.

I ran out of steam before trying a MinGW compile, so that's almost
certainly broken. Meanwhile, I have some thoughts on making an MSVC
build work with a MinGW-compiled support DLL (more later).

Unboxing of locally-bound extflonums is still not implemented, but I
think it's probably not too far away. If you want to give that a try, I
recommend continuing in the direction of threading an `extfl' flag
through the JIT, instead of duplicating functions.

Finally, I think the test suite probably needs a lot more tests to
cover the extflonum operations. Most of the flonum tests are in
"optimize.rktl", and I think it would make sense to add similar tests
there for extflonum operations --- guarded by `(when
(extflonum-available?) ...)'.


Posted on the dev mailing list.