Bell 32V development
[unix-history] / usr / src / libF77 / c_sqrt.c
CommitLineData
0c9e74ab
TL
1#include "complex"
2
3c_sqrt(r, z)
4complex *r, *z;
5{
6double mag, sqrt(), cabs();
7
8if( (mag = cabs(z->real, z->imag)) == 0.)
9 r->real = r->imag = 0.;
10else if(z->real > 0)
11 {
12 r->real = sqrt(0.5 * (mag + z->real) );
13 r->imag = z->imag / r->real / 2;
14 }
15else
16 {
17 r->imag = sqrt(0.5 * (mag - z->real) );
18 if(z->imag < 0)
19 r->imag = - r->imag;
20 r->real = z->imag / r->imag /2;
21 }
22}