Annotation of 43BSDReno/old/libm/liboldnm/pow.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  */
                      6: 
                      7: #ifndef lint
                      8: static char sccsid[] = "@(#)pow.c      5.1 (Berkeley) 5/8/85";
                      9: #endif not lint
                     10: 
                     11: /*
                     12:        computes a^b.
                     13:        uses log and exp
                     14: */
                     15: 
                     16: #include       <errno.h>
                     17: int errno;
                     18: double log(), exp();
                     19: 
                     20: double
                     21: pow(arg1,arg2)
                     22: double arg1, arg2;
                     23: {
                     24:        double temp;
                     25:        long l;
                     26: 
                     27:        asm("   bispsw  $0xe0");
                     28:        if(arg1 <= 0.) {
                     29:                if(arg1 == 0.) {
                     30:                        if(arg2 <= 0.)
                     31:                                goto domain;
                     32:                        return(0.);
                     33:                }
                     34:                l = arg2;
                     35:                if(l != arg2)
                     36:                        goto domain;
                     37:                temp = exp(arg2 * log(-arg1));
                     38:                if(l & 1)
                     39:                        temp = -temp;
                     40:                return(temp);
                     41:        }
                     42:        return(exp(arg2 * log(arg1)));
                     43: 
                     44: domain:
                     45:        errno = EDOM;
                     46:        return(0.);
                     47: }

unix.superglobalmegacorp.com

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