date and time created 85/05/08 12:21:54 by dist
authorDistribution Folks <dist@ucbvax.Berkeley.EDU>
Thu, 9 May 1985 03:21:54 +0000 (19:21 -0800)
committerDistribution Folks <dist@ucbvax.Berkeley.EDU>
Thu, 9 May 1985 03:21:54 +0000 (19:21 -0800)
SCCS-vsn: old/libm/liboldnm/pow.c 1.1

usr/src/old/libm/liboldnm/pow.c [new file with mode: 0644]

diff --git a/usr/src/old/libm/liboldnm/pow.c b/usr/src/old/libm/liboldnm/pow.c
new file mode 100644 (file)
index 0000000..0ffb7f4
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+       computes a^b.
+       uses log and exp
+*/
+
+#include       <errno.h>
+int errno;
+double log(), exp();
+
+double
+pow(arg1,arg2)
+double arg1, arg2;
+{
+       double temp;
+       long l;
+
+       asm("   bispsw  $0xe0");
+       if(arg1 <= 0.) {
+               if(arg1 == 0.) {
+                       if(arg2 <= 0.)
+                               goto domain;
+                       return(0.);
+               }
+               l = arg2;
+               if(l != arg2)
+                       goto domain;
+               temp = exp(arg2 * log(-arg1));
+               if(l & 1)
+                       temp = -temp;
+               return(temp);
+       }
+       return(exp(arg2 * log(arg1)));
+
+domain:
+       errno = EDOM;
+       return(0.);
+}