summaryrefslogtreecommitdiffstats
path: root/lib/libF77/pow_zz.c
diff options
context:
space:
mode:
authorljo <ljo@FreeBSD.org>1994-10-26 18:17:41 +0000
committerljo <ljo@FreeBSD.org>1994-10-26 18:17:41 +0000
commit2195d627fb793fec6c00bdddf1c4d46982b9f27f (patch)
treec2961f38c1507b80baefaca1d568747c113f28c0 /lib/libF77/pow_zz.c
parent80b2e1963004e4ae0173b4f9bc965518ba81d3b0 (diff)
downloadFreeBSD-src-2195d627fb793fec6c00bdddf1c4d46982b9f27f.zip
FreeBSD-src-2195d627fb793fec6c00bdddf1c4d46982b9f27f.tar.gz
Library for f2c (part 2 of 2)
Obtained from: netlib.att.com
Diffstat (limited to 'lib/libF77/pow_zz.c')
-rw-r--r--lib/libF77/pow_zz.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/libF77/pow_zz.c b/lib/libF77/pow_zz.c
new file mode 100644
index 0000000..55785df
--- /dev/null
+++ b/lib/libF77/pow_zz.c
@@ -0,0 +1,23 @@
+#include "f2c.h"
+
+#ifdef KR_headers
+double log(), exp(), cos(), sin(), atan2(), f__cabs();
+VOID pow_zz(r,a,b) doublecomplex *r, *a, *b;
+#else
+#undef abs
+#include "math.h"
+extern double f__cabs(double,double);
+void pow_zz(doublecomplex *r, doublecomplex *a, doublecomplex *b)
+#endif
+{
+double logr, logi, x, y;
+
+logr = log( f__cabs(a->r, a->i) );
+logi = atan2(a->i, a->r);
+
+x = exp( logr * b->r - logi * b->i );
+y = logr * b->i + logi * b->r;
+
+r->r = x * cos(y);
+r->i = x * sin(y);
+}
OpenPOWER on IntegriCloud