[% setvar title Standardise Handling Of Abnormal Numbers Like Infinities And NaNs %]
|Note: these documents may be out of date. Do not use as reference!|
To see what is currently happening visit http://www.perl6.org/
Standardise Handling Of Abnormal Numbers Like Infinities And NaNs
Maintainer: Jarkko Hietaniemi <firstname.lastname@example.org> Date: 5 Aug 2000 Mailing List: email@example.com Number: 38 Version: 2 Status: Developing
The handling of various abnormal numeric entities like infinities (positive, negative), not-a-numbers (NaNs, various kinds of those, signaling, non-signaling), epsilons (positive and negative) is left to the native math libraries. A more concerted effort to standardise the behaviour of Perl across platforms would be desirable.
The abstract pretty much took care of it.
In an SV have bits that mark whether the numeric aspect of the scalar is abnormal and if so, what kind of abnormality are we dealing with. The Perl math operations have to watch out for those bits and do The Right Thing before the native math ops kick in, so that for example infinity + anything-but-nan = infinity, anything + nan = nan, and so on.
Watching out for the abnormality bits may be a performance hit. If so, it may be possible during the configuration phase probe how well the native math semantics obey the semantics we define for Perl, and let the native math take care of where it and us agree.
If Perl supported bignums as a native scalar type, then handling of nans and infinities would come out of that naturally. Supporting bignums in Perl would insulate users from details of integer and float size on native platforms and would improve portability of Perl programs. Programs would be more robust. Instead of failing mysteriously when a number overflowed, they would continue to work properly. Prior art: Lisp.
Math::Complex PDL::Math [suggested by Tim Jenness] p6rfc for bigints [to be written]