* device/lib/pic/Makefile.rules,
[fw/sdcc] / device / lib / _atof.c
index ee7ff24be1ebb36ee6cbeda4706055ff2dda0d22..0b897cbe29cd69fed79bc89584b44651ec722f73 100644 (file)
@@ -1,6 +1,6 @@
 /*  atof.c: converts an ASCII string to float
 
-    Copyright (C) 2003  Jesus Calvino-Fraga, jesusc@ieee.org 
+    Copyright (C) 2003  Jesus Calvino-Fraga, jesusc@ieee.org
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Lesser General Public
 
 #include <ctype.h>
 #include <stdlib.h>
+#include <stdbool.h>
 
 float atof(char * s)
 {
        float value, fraction;
        char iexp;
-#ifdef SDCC_mcs51
-       bit sign;
-#else
-       char sign;
-#endif
+       BOOL sign;
 
        //Skip leading blanks
        while (isspace(*s)) s++;
@@ -51,13 +48,13 @@ float atof(char * s)
        }
 
        //Get the fraction
-       if (*s=='.')
+       if (*s == '.')
        {
                s++;
-               for (fraction=10.0; isdigit(*s); s++)
+               for (fraction=0.1; isdigit(*s); s++)
                {
-                       value+=(*s-'0')/fraction;
-                       fraction*=10.0;
+                       value+=(*s-'0')*fraction;
+                       fraction*=0.1;
                }
        }
 
@@ -65,14 +62,13 @@ float atof(char * s)
        if (toupper(*s)=='E')
        {
                s++;
-               while(*s=='0') s++;//So atoi doesn't return an octal number
                iexp=(char)atoi(s);
                {
                        while(iexp!=0)
                        {
                                if(iexp<0)
                                {
-                                       value/=10.0;
+                                       value*=0.1;
                                        iexp++;
                                }
                                else