From John W. Eaton.
authorMarius Vollmer <mvo@zagadka.de>
Mon, 6 May 2002 22:33:10 +0000 (22:33 +0000)
committerMarius Vollmer <mvo@zagadka.de>
Mon, 6 May 2002 22:33:10 +0000 (22:33 +0000)
commit7351e207174532a0c90d105fe4b4a5bfe3fb48e0
treefef95bba0bb07a57c1bb586023ed29abdbe8484d
parent232898d93d67b60758d7ccbaf62b672ca8f902fa
From John W. Eaton.

* numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
and scm_nan.
* numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
[SCO && ! HAVE_ISINF] (isinf): New function.
(xisinf, xisnan): New functions.
(IS_INF): Delete.
(isfinite): Define in terms of xisinf.
(scm_inf_p, scm_nan_p): New functions.
(guile_Inf, guile_NaN): New file-scope vars.
(guile_ieee_init): New function.
(scm_inf, scm_nan): New functions.
(idbl2str): Handle Inf and NaN. Remove funny label and
corresponding gotos.
(ALLOW_DIVIDE_BY_ZERO): New macro.
(scm_divide): Allow division by zero to occur if
ALLOW_DIVIDE_BY_ZERO is defined.
Handle bignums and ints as special cases.

Additional stuff by me:

numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
(scm_even_p, scm_odd_p): Treat infinity as even and odd.
(iflo2str): Don't output a '+' for negative numbers or for Inf and
NaN.  They will provide their own sign.
(scm_divide): Only allow divides by inexact zeros.  Dividing by
exact zeros still signals an errors.
libguile/numbers.c