{
double low=0;
double high=n;
if (n<=4)
{
low=n/2;
}
else
{
high=n/2;
}
double sqrtValue=n/2;
while((sqrtValue*sqrtValue>n?sqrtValue*sqrtValue-n:n-sqrtValue*sqrtValue)>1e-8)
{
sqrtValue=(low+high)/2;
if (sqrtValue*sqrtValue>n)
{
high=sqrtValue;
}
else
{
low=sqrtValue;
}
}
return sqrtValue;
}