plan9fox/sys/src/ape/lib/ap/math/hypot.c
2011-03-30 19:35:09 +03:00

30 lines
325 B
C

#include <math.h>
/*
* sqrt(a^2 + b^2)
* (but carefully)
*/
double
hypot(double a, double 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);
}