1*3e12c5d1SDavid du Colombier #include <math.h> 2*3e12c5d1SDavid du Colombier /* 3*3e12c5d1SDavid du Colombier * sqrt(a^2 + b^2) 4*3e12c5d1SDavid du Colombier * (but carefully) 5*3e12c5d1SDavid du Colombier */ 6*3e12c5d1SDavid du Colombier 7*3e12c5d1SDavid du Colombier double hypot(double a,double b)8*3e12c5d1SDavid du Colombierhypot(double a, double b) 9*3e12c5d1SDavid du Colombier { 10*3e12c5d1SDavid du Colombier double t; 11*3e12c5d1SDavid du Colombier 12*3e12c5d1SDavid du Colombier if(a < 0) 13*3e12c5d1SDavid du Colombier a = -a; 14*3e12c5d1SDavid du Colombier if(b < 0) 15*3e12c5d1SDavid du Colombier b = -b; 16*3e12c5d1SDavid du Colombier if(a > b) { 17*3e12c5d1SDavid du Colombier t = a; 18*3e12c5d1SDavid du Colombier a = b; 19*3e12c5d1SDavid du Colombier b = t; 20*3e12c5d1SDavid du Colombier } 21*3e12c5d1SDavid du Colombier if(b == 0) 22*3e12c5d1SDavid du Colombier return 0; 23*3e12c5d1SDavid du Colombier a /= b; 24*3e12c5d1SDavid du Colombier /* 25*3e12c5d1SDavid du Colombier * pathological overflow possible 26*3e12c5d1SDavid du Colombier * in the next line. 27*3e12c5d1SDavid du Colombier */ 28*3e12c5d1SDavid du Colombier return b * sqrt(1 + a*a); 29*3e12c5d1SDavid du Colombier } 30