* aclocal.m4 (gcc_AC_CHECK_DECL): Before attempting the test,
[official-gcc.git] / libf2c / libF77 / c_sqrt.c
blob8481ee4857e00a8a80b3a4ad63f36effe5786c1f
1 #include "f2c.h"
3 #ifdef KR_headers
4 extern double sqrt(), f__cabs();
6 VOID c_sqrt(r, z) complex *r, *z;
7 #else
8 #undef abs
9 #include "math.h"
10 extern double f__cabs(double, double);
12 void c_sqrt(complex *r, complex *z)
13 #endif
15 double mag, t;
16 double zi = z->i, zr = z->r;
18 if( (mag = f__cabs(zr, zi)) == 0.)
19 r->r = r->i = 0.;
20 else if(zr > 0)
22 r->r = t = sqrt(0.5 * (mag + zr) );
23 t = zi / t;
24 r->i = 0.5 * t;
26 else
28 t = sqrt(0.5 * (mag - zr) );
29 if(zi < 0)
30 t = -t;
31 r->i = t;
32 t = zi / t;
33 r->r = 0.5 * t;