自己动手实现C标准库中sqrt()函数
今天在C和指针P63看到了这个计算公式,ai+1 = ( ai + number/ai ) / 2。之前也有在网上看到过,不过出处忘了,记得好像是关于组合数学还是数论里面的一个内容。
公式很简单,理论这个我就不懂了,还希望各位给指导一下。下面贴出自己的代码,作为记忆保留。
1 float my_sqrt(float number) { 2 float new_guess; 3 float last_guess; 4 5 if (number < 0) { 6 printf("Cannot compute the square root of a negative number!\n"); 7 return -1; 8 } 9 10 new_guess = 1; 11 do { 12 last_guess = new_guess; 13 new_guess = (last_guess + number / last_guess) / 2; 14 printf("%.15e\n", new_guess); 15 } while (new_guess != last_guess); 16 17 return new_guess; 18 }