#include <stdio.h>
double our_sqrt(double y) // solve x*x=y correct to three decimal places
{ double min_x = 0;
double max_x = y+1;
double acceptable_accuracy = 0.0;
while (max_x-min_x > acceptable_accuracy)
{ const double guess_x = (min_x+max_x)/2.0;
const double guess_y = guess_x * guess_x;
if (guess_y == y)
return guess_x;
else if (guess_y > y)
max_x=guess_x;
else
min_x=guess_x;
acceptable_accuracy=guess_x/1000.0; }
return (min_x+max_x)/2.0; }
void main(void)
{ printf("for reference\n");
printf(" sqrt(2) really = %f\n", sqrt(2));
printf("testing our function\n");
printf(" sqrt(2) is about %f\n", our_sqrt(2));
printf(" sqrt(200) is about %f\n", our_sqrt(200));
printf(" sqrt(20000) is about %f\n", our_sqrt(200));
printf(" sqrt(1000000) is about %f\n", our_sqrt(1000000));
printf(" sqrt(2000000) is about %f\n", our_sqrt(2000000)); }