Diff for /gforth/engine/ecvt.c between versions 1.1 and 1.5

version 1.1, 1997/05/21 20:40:07 version 1.5, 2000/07/30 19:56:06
Line 1 Line 1
 /* cheap ecvt replacement */  /* cheap ecvt replacement
   
     Copyright (C) 1998 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., 675 Mass Ave, Cambridge, MA 02139, USA.
   */
   
   #include <stdio.h>
 #include "config.h"  #include "config.h"
 #include <math.h>  #include <math.h>
 extern double floor(double);  extern double floor(double);
Line 36  char* ecvt(double x, int len, int* exp, Line 56  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 53  char* ecvt(double x, int len, int* exp, Line 74  char* ecvt(double x, int len, int* exp,
                   scratch[j]='0';                    scratch[j]='0';
                }                 }
           }            }
         if(j==0)          if(j<0)
           {            {
              scratch[0]='1';               scratch[0]='1';
              *exp += 1;               *exp += 1;
Line 69  char* ecvt(double x, int len, int* exp, Line 90  char* ecvt(double x, int len, int* exp,
 int main(int argc, char ** argv)  int main(int argc, char ** argv)
 {  {
    int a, b;     int a, b;
    char * conv=ecvt(PI*1e10,20,&a,&b);     char * conv=ecvt(9e0,20,&a,&b);
         
    printf("ecvt Test: %f -> %s, %d, %d\n",PI,conv,a,b);     printf("ecvt Test: %f -> %s, %d, %d\n",9e0,conv,a,b);
 }  }
 #endif  #endif
   

Removed from v.1.1  
changed lines
  Added in v.1.5


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