问题标签 [sqrt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
16503 浏览

c - C 中 int 类型的 sqrt()

我在 mac os x 上用 c 语言编程。我正在使用来自 math.h 的 sqrt,函数如下:

这行得通,但为什么呢?为什么我没有收到警告?在 sqrt 的手册页上,它需要一个 double 作为参数,但我给它一个 int - 它是如何工作的?

谢谢

0 投票
3 回答
11670 浏览

java - Java中的快速sqrt以牺牲准确性为代价

我正在为 [0, 2*10^12] 的输入范围内的双精度值寻找 Java 中的快速平方根实现。对于此范围内的任何值,精度应为小数点后 5 位。换言之,结果可能与Math.sqrt()小数点后 5 位的方法不同。但是,这种方法需要比Math.sqrt().

有任何想法吗?谢谢!

0 投票
2 回答
448 浏览

.net - OpenTK 的 Vector2.Length 是 Vector2.LengthFast 的两倍

这些OpenTK库,以及 MonoTouch 和 MonoDroid,包含方法LengthFast,它应该在不使用的情况下计算向量长度的近似值Math.Sqrt(这似乎被称为慢)。LengthFast使用MathHelper.InverseSqrtFast,一个非常有趣的方法,它应该给出平方根的快速近似值(参见http://www.opentk.com/files/doc/_math_helper_8cs_source.html的第 172 和 196 行)。

我创建了一个小基准,它调用两个计算100'000'000时间,向量长度在 1 到 100 之间。

在 Windows 7 / Intel i7-2600 3.40 GHz 上,我得到:

Length2947 ms

LengthFast4754 ms

在带有 MonoTouch 的 iPad 3 上,我得到:

Length51575 ms

LengthFast41252 ms

因此,LengthFast在 Intel CPU 上要慢得多,在 iPad 的 ARM 上要快一些。

对此有何解释?这是英特尔 CPU 能够“本机”计算平方根(不使用软件近似)的结果吗?不LengthFast应该总是更快,至少一点点?

0 投票
1 回答
2238 浏览

python - gmpy sqrt 精度

我想知道为什么这段代码在 Python 中

给出结果 44,而不是 44.82186966 ......就像我想要的那样?如何设置函数以显示十进制数字。

先感谢您。

0 投票
2 回答
1217 浏览

c++ - 模糊度平方根

可能重复:
C++ 编译器错误:对重载函数的模糊调用

刚刚将一些代码从 pdf 复制到 C++builder XE2 和 Visual Studio Express 2012 中。两个编译器都给出了关于歧义的错误代码。我刚开始,所以我真的不知道该怎么做。也许我的教科书(pdf)现在已经过时了?它被称为“14 天学会 C++”。无论如何,这里是复制的代码。

我在 c++builder 中得到的错误代码是:

[BCC32 错误] SquareRoot.cpp(19): E2015 Ambiguity between 'std::sqrt(float) at c:\program files (x86)\embarcadero\rad studio\9.0\include\windows\crtl\math.h:266 ' 和 'std::sqrt(long double) 在 c:\program files (x86)\embarcadero\rad studio\9.0\include\windows\crtl\math.h:302' 完整的解析器上下文 SquareRoot.cpp(18):解析: void getSqrRoot(char *,int)

附带说明一下,我的 pdf 手册中的引号与我键入的普通“”字符不同。这些“也与编译器不兼容。也许有人也知道这个问题的解决方法吗?提前谢谢。

0 投票
1 回答
410 浏览

python - Python中的sqrt函数奇怪的行为

在 Python 中,我编写了一个自定义代码 sqrt(x, delta) 以使用 delta-close 近似值计算给定数字的平方根。它使用 while 循环和类似二分搜索的算法。
编码:


它基本上可以工作并且速度非常快,但是在某些情况下它会进入无限的while循环。
例子:

我首先认为它的数字超过了限制,比如 1e20.. 但后来它也适用于它们。此外,我认为大约是 1e'odd' 或 1e'even' 数字,但正如我们在示例中看到的那样,事实并非如此。我也尝试使用不同的增量而不是 1/1024,但它们表现出类似的行为。

我将不胜感激任何解释导致这种行为的幕后发生的事情。

0 投票
4 回答
1496 浏览

c++ - 在 c++ 下调用 asm sqrtsd

在visual 2012下如何在c++项目中调用sqrtsd asm函数

我无法通过谷歌找到它

就像是 :

编辑:

在 32 位模式下

0 投票
1 回答
1174 浏览

fortran90 - sqrt函数fortran 90错误

我正在尝试处理 sqrt 但不知何故我无法理解为什么在编译该程序时会出现分段错误错误。我检测到这是因为 sqrt。但是我怎样才能在这些类型的配方中正确使用 sqrt 呢?

. x_w(cont_L,0) = x2 - ((x-obstX)^2.0d0 + (y-obstY)^2.0d0) ^0.5d0 - obstR

. x_w(cont_L,1) = y2 - ((x-obstX)^2.0d0 + (y-obstY)^2.0d0) ^0.5d0 - obstR

如果需要更多信息,请告诉我,

真挚地,

阿尔伯特 P

PD,3 个整数欧拉网格是 0 / 1 2D 网格,其中 1 分配给由圆盘分隔的墙,w_b(y,x) 是边界点,w(y,x) 是整个圆盘点和 x_w 我想为障碍物设置离散精确位置的朗朗日向量。真的不需要明白这一点。

0 投票
1 回答
1089 浏览

math - 如何比较 a + b*sqrt(c) 形式的数字而中间整数不会越来越大?

我正在开发一个应用程序,用于解决涉及圆和线(可构造数字)的二维欧几里得几何中的二次约束并以图形方式表示结果。我发现这篇关于在二叉树中表示此类问题的论文,但我遇到了一个实现问题:

我需要比较a + b*sqrt(c)小于、大于和相等的标准关系运算的形式数。我的应用程序的值c限制为2, 3, 5, 6, 10, 15, 或30. 例如(类似 C 的伪代码,^是“幂”运算符):

这种幼稚的实现需要我多次相乘,因此 32 位整数变为 64 位整数,然后是 128 位等。我不想在我的实现中仅使用自定义 BigInteger 来存储仅用于的临时值比较。

我也不想使用浮点数,并希望避免在尝试直接计算sqrt(c)为浮点数时出现舍入错误的风险。我需要对此应用程序进行精确计算,不一定是无限精度,但我想避免舍入误差并确保正确的结果。

如何在a + b * sqrt(c)不需要巨大的中间整数值的情况下比较表格的可构造数字?a我对和的初始值b在 32 位范围内。

****更新****感谢大家的回复。遵循继续分数的建议,我能够使用基本递归公式为平方根生成任意精确的近似值。

我还发现这篇论文讨论了实数的近似值与整数的定点表示相乘的误差累积。幸运的是,我感兴趣的所有平方根的整数部分最多为 6(只需要 3 位),所以我有很多位可用于表示近似的小数部分。对于乘以 32 位整数,我需要Q3.32位的最小定点近似值,以在乘法后将误差保持在 1 位。

因此,虽然 53 位精度double足以存储足够精确的平方根近似值,但存储乘以 32 位整数后的结果是不够的,因为这需要至少 67 位精度才能最小化错误。c使用 64 位整数(比如 Q16.48)和 32 位整数中的定点表示b,我计划使用 96 位或 128 位数字的多字算术来进行比较,而不会产生足够的错误结果。我相信这对于比较仅使用这 7 个平方根的可构造数字来说足够准确,但我对第二意见感兴趣。有什么想法吗?

0 投票
3 回答
164 浏览

c++ - 让编译器知道我在 sqrt - C++ 中传递正值

我有这个

我知道a大于b。我怎样才能让编译器知道?