ニュートン法
引数に負数とか0付近の数値を渡しちゃダメ
数値誤差の範囲が狭いから大きすぎる値もダメ
#include<stdio.h>

double mysqrt(double y)
{
double d, d_abs, x=1.0;

while(1)
{
d=y-x*x;
d_abs=(d>0)?d:-d;
if(d_abs<=1.0e-10) break;
x+=d/(2*x);
}
return x;
}

int main(void)
{
printf("%f\n", mysqrt(5));

return 0;
}