--- gforth/engine/ecvt.c 2000/07/30 19:56:06 1.5
+++ gforth/engine/ecvt.c 2007/12/31 18:40:25 1.10
@@ -1,12 +1,12 @@
/* cheap ecvt replacement
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998,2000,2007 Free Software Foundation, Inc.
This file is part of Gforth.
Gforth is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
+ as published by the Free Software Foundation, either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
@@ -15,8 +15,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program; if not, see http://www.gnu.org/licenses/.
*/
#include
@@ -33,6 +32,20 @@ char* ecvt(double x, int len, int* exp,
int i, j;
double z;
+ if (isnan(x)) {
+ *sign=0;
+ *exp=0;
+ return "nan";
+ }
+ if (isinf(x)) {
+ *sign=0; /* this mimics the glibc ecvt */
+ *exp=0;
+ if (x<0)
+ return "-inf";
+ else
+ return "inf";
+ }
+
if(len > (MAXCONV-1)) len = MAXCONV-1;
if(x<0)