Annotation of researchv10dc/libc/math/pow.c, revision 1.1.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.