代码
#include <iostream>
using namespace std;
const double eps = 1e-15;
double sqrtByBisection(double n); // 第一种
double sqrtByNewton(double n); // 第二种
float sqrtHack(float x); // 第三种
float Q_rsqrt(float number); // 变形
float InvSqrt(float x); // 变形
int main() {
double num;
cin >> num;
//cout << sqrtByBisection(num);
//cout << sqrtByNewton(num);
//cout << sqrtHack(num);
//cout << Q_rsqrt(num);
cout << 1 / InvSqrt(num);
return 0;
}
double sqrtByBisection(double n) {
if (n < 0) // 小于 0
return n;
double mid, last; // last 保存上一次的计算得到的 mid
double low = 0, up = n;
mid = (low