Annotation of researchv10no/cmd/basic/bite/src/atof1.c, revision 1.1

1.1     ! root        1: /* Copyright Bell Telephone Laboratories Whippany, N.J.
        !             2: 
        !             3:  *     ***********************************
        !             4:  *     ***********************************
        !             5:  *     **** ASCII TO FLOAT CONVERSION ****
        !             6:  *     *** R. B. Drake WH 8C-005 X4163 ***
        !             7:  *     **** Fri Aug 24 14:29:13 1979 *****
        !             8:  *     ***********************************
        !             9:  *     ***********************************
        !            10: 
        !            11: */
        !            12: /*   "@(#) atof1.c:  V 1.1  12/21/80" */
        !            13: 
        !            14: /*
        !            15: this is a more generalized version of atof. It is also written in "c"
        !            16: so that it can be compiled for the LSX system.
        !            17:  * CONVERT STRING TO FLOAT
        !            18:  */
        !            19: double atof1(s)
        !            20: char s[];
        !            21: {
        !            22:        register char *s1, *s2; /* string pointer regs */
        !            23:        register        i;      /* index register */
        !            24:        double val,power;
        !            25:        int sign,esin,exp;
        !            26: 
        !            27:        s1 = s;
        !            28:        s2 = s;
        !            29:        while(*s2 != '\0')
        !            30:                switch (*s2) {
        !            31:                        case ' ' :
        !            32:                        case '\015' :
        !            33:                        case '\012' :
        !            34:                        case '\t':
        !            35:                        s2++;
        !            36:                        break;
        !            37:                        case 'E':
        !            38:                        *s1++ = 'e';
        !            39:                        s2++;
        !            40:                        break;
        !            41:                        default:
        !            42:                        *s1++ = *s2++;
        !            43:                }
        !            44:        *s1 = '\0';
        !            45:        i=0;
        !            46:        sign = 1;
        !            47:        if(s[i] == '+' || s[i] == '-')
        !            48:                sign = (s[i++] == '+') ? 1 : -1 ;
        !            49:        for(val = 0;s[i] >= '0' && s[i] <= '9';i++)
        !            50:                val = 10 * val + s[i] - '0';
        !            51:        if(s[i] == '.')
        !            52:        {
        !            53:                i++;
        !            54:                for(power = 1;s[i] >= '0' && s[i] <= '9'; i++)
        !            55:                {
        !            56:                        val = val * 10 + s[i] - '0';
        !            57:                        power *= 10;
        !            58:                }
        !            59:                val /= power;
        !            60:        }
        !            61:        if(s[i] == 'e')
        !            62:        {
        !            63:                i++;
        !            64:                esin = 1;
        !            65:                if(s[i] == '+' || s[i] == '-')
        !            66:                        esin = (s[i++] == '+') ? 1 : -1;
        !            67:                for(exp = 0;s[i] >= '0' && s[i] <= '9';i++)
        !            68:                        exp = 10 * exp + s[i] - '0';
        !            69:                power = 1;
        !            70:                for(i=0;i<exp;i++)
        !            71:                        power *= 10;
        !            72:                val = (esin == -1) ? val/power : val * power ;
        !            73:        }
        !            74:        return(sign * val);
        !            75: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.