Research V7 development
[unix-history] / usr / src / libm / hypot.c
/*
* sqrt(a^2 + b^2)
* (but carefully)
*/
double sqrt();
double
hypot(a,b)
double a,b;
{
double t;
if(a<0) a = -a;
if(b<0) b = -b;
if(a > b) {
t = a;
a = b;
b = t;
}
if(b==0) return(0.);
a /= b;
/*
* pathological overflow possible
* in the next line.
*/
return(b*sqrt(1. + a*a));
}
struct complex
{
double r;
double i;
};
double
cabs(arg)
struct complex arg;
{
double hypot();
return(hypot(arg.r, arg.i));
}