Restore LR in case __eabi was called multiple times
[official-gcc.git] / libf2c / libF77 / cabs.c
blob2fad044e884081c0cee7f0a3f35a67e7f78949da
1 #ifdef KR_headers
2 extern double sqrt();
3 double f__cabs(real, imag) double real, imag;
4 #else
5 #undef abs
6 #include <math.h>
7 double f__cabs(double real, double imag)
8 #endif
10 double temp;
12 if(real < 0)
13 real = -real;
14 if(imag < 0)
15 imag = -imag;
16 if(imag > real){
17 temp = real;
18 real = imag;
19 imag = temp;
21 if((real+imag) == real)
22 return(real);
24 temp = imag/real;
25 temp = real*sqrt(1.0 + temp*temp); /*overflow!!*/
26 return(temp);