#include #include #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) /* Find the square root of a non-negative number using bisection search*/ int main() { int x = 25; double epsilon = 0.01; int numGuesses = 0; double low = 0.0; double high = MAX(1.0, x); double ans = (high + low)/2.0; while (fabs(ans*ans - x) >= epsilon) { printf("low = %.5lf high = %.5lf ans = %.5lf\n", low, high, ans); numGuesses++; if (ans*ans < x) low = ans; else high = ans; ans = (high + low)/2.0; } printf("numGuesses = %d\n", numGuesses); printf("%.5lf is close to square root of %d", ans, x); return 0; }