gpt4 book ai didi

c - 有什么方法可以在不使用 math.h 和 sqrt() 的情况下获得数字的平方根?

转载 作者:行者123 更新时间:2023-12-02 05:36:43 25 4
gpt4 key购买 nike

我为使用 MPI 执行 Fox 块矩阵乘法方法的类编写了一个程序。我可以通过在 中使用 sqrt() 函数来做到这一点,但是为了编译程序,我必须输入“mpicc -lm -o ...”。硬件状态使用“mpicc -o ...”编译程序的说明,没有 -lm。我只是想知道是否有办法找到一个数字的平方根(而不必编写单独的程序来这样做)。如果没有,我会将免责声明放在我的 .txt 文件顶部的评论中。认为这可能是一个询问的好地方。谢谢!

最佳答案

该方法使用逐次逼近。它不需要很多迭代。因为root的值可以抖动,我检查收敛到一个小错误。

//#define MINDIFF 2.2250738585072014e-308   // smallest positive double
#define MINDIFF 2.25e-308 // use for convergence check

double sqroot(double square)
{
double root=square/3, last, diff=1;
if (square <= 0) return 0;
do {
last = root;
root = (root + square / root) / 2;
diff = root - last;
} while (diff > MINDIFF || diff < -MINDIFF);
return root;
}

或者,您可以通过迭代固定次数来更简单地做到这一点
double sqroot(double square)
{
double root=square/3;
int i;
if (square <= 0) return 0;
for (i=0; i<32; i++)
root = (root + square / root) / 2;
return root;
}

关于c - 有什么方法可以在不使用 math.h 和 sqrt() 的情况下获得数字的平方根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com