merge in onyx changes
[unix-history] / usr / src / usr.bin / pascal / libpc / EXPO.c
index 48c81d7..46f2988 100644 (file)
@@ -1,12 +1,24 @@
 /* Copyright (c) 1979 Regents of the University of California */
 
 /* Copyright (c) 1979 Regents of the University of California */
 
-static char sccsid[] = "@(#)EXPO.c 1.1 %G%";
+static char sccsid[] = "@(#)EXPO.c 1.2 %G%";
 
 
+long
 EXPO(value)
 
 EXPO(value)
 
-       long    value;
+       double  value;
 {
 {
-       if (value == 0)
+       register int retval;
+       register char *cp;
+       char sign, buf[30];
+       extern char *index();
+
+       if (value == 0.0)
                return 0;
                return 0;
-       return ((value & ~0xffff8000) >> 7) - 128;
+       sprintf(buf, "%.1e", value);
+       cp = index(buf, 'e') + 1;
+       sign = *cp++;
+       retval = 0;
+       while (*cp)
+               retval = retval * 10 + *cp++ - '0';
+       return sign == '-' ? -retval : retval;
 }
 }