- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一些代码可以在单位球体上找到一个点。回想一下,对于单位球体:
1 = sqrt( x^2 + y^2 + z^2 )
该算法在 0 和 1 之间随机选择两个点(x 和 y 坐标)。如果它们的大小小于 1,我们就有空间通过求解上述 z 方程来定义第三个坐标。
void pointOnSphere(double *point){
double x, y;
do {
x = 2*randf() - 1;
y = 2*randf() - 1;
} while (x*x + y*y > 1);
double mag = sqrt(fabs(1 - x*x - y*y));
point[0] = 2*(x*mag);
point[1] = 2*(y*mag);
point[2] = 1 - 2*(mag*mag);
}
从技术上讲,我继承了这段代码。以前的所有者使用 -Ofast 编译,它“无视严格的标准合规性”。 TL;DR 这意味着您的代码不需要遵循严格的 IEEE 标准。因此,当我尝试在不进行优化的情况下进行编译时,我遇到了错误。
undefined reference to `sqrt'
什么是 IEEE 标准?好吧,由于计算机无法将 float 存储到无限精度,如果您不小心,在某些计算过程中会出现舍入错误。
谷歌搜索后,我遇到了 this question这让我走上了正确使用 IEEE 东西的正确轨道。我什至读过this article关于 float (我推荐)。不幸的是它没有回答我的问题。
我想在我的函数中使用 sqrt() 而不是像 Newton Iteration 这样的东西.我知道我的算法中的问题可能来自于我可能(即使不是真的)将负数传递给 sqrt() 函数这一事实。我只是不太确定如何解决这个问题。感谢所有的帮助!
哦,如果相关的话,我正在使用 Mersenne Twister数字生成器。
澄清一下,我将 libm 与 -lm 链接起来!我还确认它指向正确的库。
最佳答案
对于 sqrt
的 undefined reference ,您需要使用 libm
进行链接,通常使用 -lm
或类似选项。
还要注意
Provided their magnitude is less than one we have room to define a third coordinate by solving the above equation for z.
错了。 x 和 y 必须满足 x * x + y * y <= 1 才能有 z 的解。
关于c - C 算法中的平方根问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063724/
出于某种原因,我的平方根程序得到的答案与大多数输入应得到的答案略有不同。我不确定这是为什么。只有某些输入是错误的。在给出答案后的最后我也遇到了段错误,我不确定为什么会这样。 #include #inc
我目前正在实现一个可以处理与物理单位相关的数字数据的类。 我想实现一种计算实例平方根的方法。假设您有一个具有属性值和名称的类的实例: from math import sqrt class Foo:
我正在使用 HTML + CSS + AngularJS 制作一个简单的计算器。一切正常,但我想添加一个 SquareRoot 函数。这是一些代码: function _solve(){ switc
问题是关于在通用数值接口(interface)中定义平方根算法的问题的策略方法。我知道存在解决不同条件下问题的算法。我对以下算法感兴趣: 仅使用选定的函数解决问题; 不关心操作的对象是整数、 floa
好吧,我已经研究了一段时间了,我知道我的逻辑是正确的,但是,我似乎无法生成正数的正确底平方根。 public int mySqrt(int x) { if(x 0) uppe
我找不到让这个函数 Math.sqrt(value) 工作的方法。 (╯°□°)╯︵┻━┻我不确定,但问题似乎出在运营商。我还尝试在 const calculation 中添加该函数,但它也不起作用。
我发现了这段获得平方根的代码,令我惊讶的是它的工作方式,使用 union 和位移这是代码: float sqrt3(const float x) { union { int i;
在 python 中使用 sqrt 函数时,我遇到了“distance ValueError: math domain error”问题。 这是我的代码: from math import sqrt
我一直在做一些研究,寻找一种对大整数进行运算的相对快速的平方根算法。我在这里找到了几个例程。第一个(下面)是用 C 语言编写的... int isqrt(int n) { int b = 0;
好吧,我想知道 math.h 平方根与其中包含神奇数字的那个(因 Quake 而出名,但由 SGI 制作)相比有多快。 但这对我来说是一个受伤的世界。 我首先在 Mac 上尝试了此操作,其中 math
有谁知道如何解决这个复发? 大定理在这里不起作用。 最佳答案 这在 O(1) 中似乎很明显,因为 T(n) = T(n - sqrt(n)) = T(m) with 0 < m < n 通过归纳,你得
我是一名优秀的程序员,十分优秀!