|
|
BSD 4.3tahoe
/*
* @(#)zabs.c 5.2 11/3/86
*/
#ifdef tahoe
/* THIS IS BASED ON TAHOE FP REPRESENTATION */
#include <tahoemath/FP.h>
double zabs(real, imag)
double real, imag;
{
double temp, sqrt();
if(real < 0)
*(long int *)&real ^= SIGN_BIT;
if(imag < 0)
*(long int *)&imag ^= SIGN_BIT;
if(imag > real){
temp = real;
real = imag;
imag = temp;
}
if(imag == 0.) /* if((real+imag) == real) */
return(real);
temp = imag/real;
temp = real*sqrt(1.0 + temp*temp); /*overflow!!*/
return(temp);
}
#endif tahoe
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.