Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#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);
}