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