Annotation of researchv10no/libc/math/pow.c, revision 1.1

1.1     ! root        1: /*
        !             2:        computes a^b.
        !             3:        uses log and exp
        !             4: */
        !             5: 
        !             6: #include       <errno.h>
        !             7: int errno;
        !             8: double log(), exp();
        !             9: 
        !            10: double
        !            11: pow(arg1,arg2)
        !            12: double arg1, arg2;
        !            13: {
        !            14:        double temp;
        !            15:        long l = arg2;
        !            16: 
        !            17:        if(l != arg2 || l>64 || l<-64) {
        !            18:                if(arg1 <= 0.) {
        !            19:                        if(arg1 == 0.) {
        !            20:                                if(arg2 <= 0.)
        !            21:                                        goto domain;
        !            22:                                return(0.);
        !            23:                        }
        !            24:                        if(l != arg2)
        !            25:                                goto domain;
        !            26:                        temp = exp(arg2 * log(-arg1));
        !            27:                        return l&1? -temp: temp;
        !            28:                }
        !            29:                return(exp(arg2 * log(arg1)));
        !            30:        }
        !            31:        temp = (l&1) ? arg1 : 1.0;
        !            32:        for(l=l<0?-l:l; l >>= 1;) {
        !            33:                arg1 *= arg1;
        !            34:                if(l & 1)
        !            35:                        temp *= arg1;
        !            36:        }
        !            37:        return arg2 < 0? 1/temp: temp;
        !            38: 
        !            39: domain:
        !            40:        errno = EDOM;
        !            41:        return(0.);
        !            42: }

unix.superglobalmegacorp.com

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