|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.