diff options
author | Richard M. Stallman <rms@gnu.org> | 1998-02-02 01:09:35 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1998-02-02 01:09:35 +0000 |
commit | eccf4d74145a00db8fc43b2af628f1660a52bb30 (patch) | |
tree | 6b9c03ecbc693669e63632d289a77b96cd81de62 /src | |
parent | 0899df6189fdf4c2363897c239df9242e4231166 (diff) | |
download | emacs-eccf4d74145a00db8fc43b2af628f1660a52bb30.tar.gz |
(float_to_string): Handle infinities and NaN specially.
Diffstat (limited to 'src')
-rw-r--r-- | src/print.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/print.c b/src/print.c index a9c83ea821d..e3fbc393fea 100644 --- a/src/print.c +++ b/src/print.c @@ -956,6 +956,26 @@ float_to_string (buf, data) unsigned char *cp; int width; + /* Check for plus infinity in a way that won't lose + if there is no plus infinity. */ + if (data == data / 2 && data > 1.0) + { + strcpy (buf, "1.0e+INF"); + return; + } + /* Likewise for minus infinity. */ + if (data == data / 2 && data < -1.0) + { + strcpy (buf, "-1.0e+INF"); + return; + } + /* Check for NaN in a way that won't fail if there are no NaNs. */ + if (! (data * 0.0 >= 0.0)) + { + strcpy (buf, "0.0e+NaN"); + return; + } + if (NILP (Vfloat_output_format) || !STRINGP (Vfloat_output_format)) lose: |