xref: /csrg-svn/usr.bin/f77/libF77/cabs.c (revision 10448)
1*10448Sdlw /*
2*10448Sdlw  *	"@(#)cabs.c	1.1"
3*10448Sdlw  */
4*10448Sdlw 
5*10448Sdlw double cabs(real, imag)
6*10448Sdlw double real, imag;
7*10448Sdlw {
8*10448Sdlw double temp, sqrt();
9*10448Sdlw 
10*10448Sdlw if(real < 0)
11*10448Sdlw 	real = -real;
12*10448Sdlw if(imag < 0)
13*10448Sdlw 	imag = -imag;
14*10448Sdlw if(imag > real){
15*10448Sdlw 	temp = real;
16*10448Sdlw 	real = imag;
17*10448Sdlw 	imag = temp;
18*10448Sdlw }
19*10448Sdlw if((real+imag) == real)
20*10448Sdlw 	return(real);
21*10448Sdlw 
22*10448Sdlw temp = imag/real;
23*10448Sdlw temp = real*sqrt(1.0 + temp*temp);  /*overflow!!*/
24*10448Sdlw return(temp);
25*10448Sdlw }
26