/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
auto
mid (double a, double b)
{
return (a + b) / 2;
}
int
sign (double x)
{
return (x > 0) - (x < 0);
}
double
equation (double x, double a)
{
return x * x - a;
}
double
sqrt (double a, double epsilon)
{
double left = 0;
auto right = a;
auto root = mid (left, right);
while (right - left >= epsilon)
{
auto left_value = equation (left, a);
auto mid_value = equation (root, a);
if (sign (left_value) * sign (mid_value) < 0)
{
right = root;
}
else
{
left = mid (left, right);
}
root = mid (left, right);
}
return root;
}
int
main ()
{
std::cout << sqrt (2.0, 0.001) << std::endl;
return 0;
}