--- gforth/engine/ecvt.c 2000/09/23 15:06:07 1.6 +++ gforth/engine/ecvt.c 2007/12/31 18:40:25 1.10 @@ -1,12 +1,12 @@ /* cheap ecvt replacement - Copyright (C) 1998,2000 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)