Improving Dylan floating-point support

[repost]

There are several features missing from Dylan's support for

floating-point arithmetic that I would consider essential for any sort

of numeric programming. I propose adding the following symbols to the

common-extensions module of common-dylan:

// Numerics

function decode-float (<float>) => (<float>, <integer>, <float>);

function scale-float (<float>, <integer>) => (<float>);

function float-radix (<float>) => (<integer>);

function float-digits (<float>) => (<integer>);

function float-precision (<float>) => (<integer>);

constant $single-float-epsilon :: <single-float>;

constant $double-float-epsilon :: <double-float>;

constant $extended-float-epsilon :: <extended-float>;

constant $minimum-single-float-exponent :: <integer>;

constant $maximum-single-float-exponent :: <integer>;

constant $minimum-double-float-exponent :: <integer>;

constant $maximum-double-float-exponent :: <integer>;

constant $minimum-extended-float-exponent :: <integer>;

constant $maximum-extended-float-exponent :: <integer>;

function finite? (<object>) => (<boolean>);

function infinite? (<object>) => (<boolean>);

// Formatting

function string-to-float

(<string>, #"key", #"start", #"end", #"default-class")

=> (<float>, <integer>);

The semantics of these follows that of the corresponding functions in

the ANSI Common Lisp standard

( http://www.*-*-*.com/ ).

Additional constants such as $most-positive-single-float and the like

( http://www.*-*-*.com/ ) were

omitted but could be added.

Support for NaN (Not a Number) was also omitted.

I plan on implementing these in Gwydion Dylan in the next few days.

Any comments or suggested additions would be appreciated.

-Peter-