ref: 57f8b3d1acf273a88568c49d0b83b6863485b9e0
dir: /sys/src/ape/lib/ap/math/hypot.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);
}