Diff for /gforth/engine/ecvt.c between versions 1.2 and 1.9

version 1.2, 1998/05/02 21:29:02 version 1.9, 2007/12/31 17:34:59
Line 1 Line 1
 /* cheap ecvt replacement */  /* cheap ecvt replacement
   
     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
     of the License, or (at your option) any later version.
   
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     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., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
   */
   
 #include <stdio.h>  #include <stdio.h>
 #include "config.h"  #include "config.h"
Line 13  char* ecvt(double x, int len, int* exp, Line 32  char* ecvt(double x, int len, int* exp,
 {  {
    int i, j;     int i, j;
    double z;     double z;
    fprintf(stderr, "using own ecvt\n");  
         
      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(len > (MAXCONV-1)) len = MAXCONV-1;
         
    if(x<0)     if(x<0)
Line 38  char* ecvt(double x, int len, int* exp, Line 70  char* ecvt(double x, int len, int* exp,
    for(i=0; i < len; i++)     for(i=0; i < len; i++)
      {       {
         z=floor(x);          z=floor(x);
           if(z<0) z = 0;
         scratch[i]='0'+(char)((int)z);          scratch[i]='0'+(char)((int)z);
         x = (x-z)*10;          x = (x-z)*10;
      }       }
Line 76  int main(int argc, char ** argv) Line 109  int main(int argc, char ** argv)
    printf("ecvt Test: %f -> %s, %d, %d\n",9e0,conv,a,b);     printf("ecvt Test: %f -> %s, %d, %d\n",9e0,conv,a,b);
 }  }
 #endif  #endif
   

Removed from v.1.2  
changed lines
  Added in v.1.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>