#include "stdafx.iik"
#include
double squareRoot (double radicand, double precision) ;
int _tmain(int argc, _TCHAR* argv[])
{
std ::cout << squareRoot(9, 0.000001) << std ::endl ;
return 0;
}
double squareRoot (double radicand, double precision)
{
if (radicand > 0)
{
double squareRoot = radicand / 10 ;
while (squareRoot * squareRoot > radicand)
squareRoot /= 2 ;
double fakePrecision = 0.1;
while (1)
{
while ((squareRoot + fakePrecision) * (squareRoot + fakePrecision) <= radicand)
{
squareRoot += fakePrecision ;
}
if (fakePrecision > precision)
{
fakePrecision /= 10 ;
}
else
{
return squareRoot ;
}
}
}
else
{
std ::cerr << "Radicand must > 0" << std ::endl ;
return 0 ;
}
}