#ifdef KR_headers | |
extern double sqrt(); | |
double f__cabs(real, imag) double real, imag; | |
#else | |
#undef abs | |
#include <math.h> | |
double f__cabs(double real, double imag) | |
#endif | |
{ | |
double temp; | |
if(real < 0) | |
real = -real; | |
if(imag < 0) | |
imag = -imag; | |
if(imag > real){ | |
temp = real; | |
real = imag; | |
imag = temp; | |
} | |
if((real+imag) == real) | |
return(real); | |
temp = imag/real; | |
temp = real*sqrt(1.0 + temp*temp); /*overflow!!*/ | |
return(temp); | |
} |