#include #include void squareroots(double y) { double min=0, max=y+1; // for binary chop double g = y/2; // g = guess for Newton-Raphson for (int i=0; i<100; i+=1) { double mid = (min+max)/2; if (mid*mid > y) max = mid; else min = mid; double correction = (g - y/g)/2; // f(g) / derivative_of_f(g) g -= correction; printf("%2d %25.17f %25.17f\n", i, mid, g); } } void main(int argc, char * argv[]) // type "a.out 123" to run the program // and calculate the square root of 123. { double v = atof(argv[1]); printf(" Binary Chop Newton\n"); printf("------------------------------------------------------\n"); squareroots(v); }