|
|
1.1 ! root 1: /* ! 2: * "@(#)zabs.c 1.1" ! 3: */ ! 4: ! 5: /* THIS IS BASED ON TAHOE FP REPRESENTATION */ ! 6: #include <FP.h> ! 7: ! 8: double zabs(real, imag) ! 9: double real, imag; ! 10: { ! 11: double temp, sqrt(); ! 12: ! 13: if(real < 0) ! 14: *(long int *)&real ^= SIGN_BIT; ! 15: if(imag < 0) ! 16: *(long int *)&imag ^= SIGN_BIT; ! 17: if(imag > real){ ! 18: temp = real; ! 19: real = imag; ! 20: imag = temp; ! 21: } ! 22: if(imag == 0.) /* if((real+imag) == real) */ ! 23: return(real); ! 24: ! 25: temp = imag/real; ! 26: temp = real*sqrt(1.0 + temp*temp); /*overflow!!*/ ! 27: return(temp); ! 28: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.