Sqrt double

来源:互联网 发布:淘宝订单险是什么意思 编辑:程序博客网 时间:2024/06/07 02:12

EPI: https://code.google.com/p/elements-of-programming-interviews/source/browse/trunk/Square_root.cpp

    public static double sqrt(double num) {        double left = 0, right = 0;        if (num < 1) {            left = num;            right = 1;        } else {            left = 1;            right = num;        }        while (left < right) {            double m = left + (right-left)/2;            if ((num-EPSILON)/m <= m && (num+EPSILON)/m >= m) {                return m;            } else if ((num-EPSILON)/m > m) {                left = m;            } else {                right = m;            }        }        return num;    }


Newton's method

f(x0)' = f(x0)/(x-x0)

x = x0/2+num/2x0 (the following code replaces x with y, num with x)

    public static double sqrtNewton(double num) {        double x = num;        double y = x/2;        while (Math.abs((num-y*y)) > EPSILON) {            y = (x/y+y)/2;        }        return y;    }


0 0
原创粉丝点击