问题标签 [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 投票
12 回答
2063 浏览

programming-languages - 为什么大多数编程语言对 4 的平方根只给出一个答案?

大多数编程语言都会给出2平方根的答案4。但是,有两个答案:2-2。是否有任何特殊原因,历史原因或其他原因,为什么通常只给出一个答案?

0 投票
3 回答
979 浏览

actionscript-3 - 寻找半径内的物体

寻找一种轻量级的方法来查找半径内的对象。

到目前为止,对我来说显而易见的答案是遍历每个对象,将其 x 和 y 位置与半径中心进行比较。

例子:

Turret- 寻找半径内的目标。

TargetArray- 可能的目标数组。

WithinRangeArray- 我们将适用目标推送到的数组

避免平方根应该可以节省一些处理能力。但我感觉可能还有其他算法/理论/方法可能更好(更轻量级)。

TargetArray 的理想长度:一次少于 500 个目标。

0 投票
6 回答
5308 浏览

php - PHP中的平方根

为什么sqrtPHP 中“16”的输出不是整数?

例子

我觉得问题出在 PHP 与 Python 类似隐藏的内部表示中。那么,在取平方根之后,你怎么知道给定的数字是整数呢?

那么如何在不使用正则表达式的情况下区分PHP4和PHP 呢?4.12323

0 投票
4 回答
5087 浏览

java - Java:性能 SQRT 计算

我有这个代码:

这种 sqrt 方法称为“ heroon ”。
如果我运行我的程序并询问 80000 次计算并禁用输出,则 Math.sqrt() 比我的方法快得多。如果我要求 80000 计算并启用输出,我的方法会快得多。

有人可以解释一下吗?

谢谢

抱歉英语不好。

0 投票
6 回答
1482 浏览

c++ - Visual Studio 2008 编译器不会在 C++ 中与 sqrt 一起自动转换吗?

编译器不应该在下面自动转换为 double 吗?至少根据沃尔特·萨维奇的说法。

0 投票
6 回答
42762 浏览

c++ - 是否可以推出更快的 sqrt 版本

在我正在分析的应用程序中,我发现在某些情况下,此函数能够占用总执行时间的 10% 以上。

多年来,我已经看到使用偷偷摸摸的浮点技巧实现更快的 sqrt 实现的讨论,但我不知道这些东西在现代 CPU 上是否已经过时。

正在使用 MSVC++ 2008 编译器,以供参考……尽管我认为 sqrt 不会增加太多开销。

有关modf函数的类似讨论,另请参见此处。

编辑:作为参考,是一种广泛使用的方法,但它实际上更快吗?这些天SQRT到底有多少个周期?

0 投票
9 回答
11695 浏览

algorithm - 确定 Int 是否是 Haskell 中的完美正方形的方法是什么?

我需要一个简单的功能

它确定 Int N 是否为完美正方形(是否存在整数 x 使得 x*x = N)。

当然我可以写一些像

但它看起来很糟糕!也许有一种常见的简单方法来实现这样的谓词?

0 投票
7 回答
18810 浏览

c - sqrt() 函数不适用于可变参数

我不知道我是否遗漏了一些明显的东西,但似乎我无法计算 C 中变量的平方根;sqrt() 函数似乎只适用于常量。这是我的代码:

当我运行这个程序时,我收到以下错误:

但是,如果我将 sqrt() 中的参数替换为常数,例如 2.0,例如 ( b = sqrt(2.0)),那么它可以正常工作。sqrt() 不应该与变量或其他东西一起使用吗?

谢谢您的帮助

0 投票
9 回答
4145 浏览

objective-c - 估计平方根

我正在编写一个 iPhone 应用程序,它需要每 1/30 秒计算大约 2000 次数字的平方根。sqrt() 在计算机上运行良好,但在 iPhone 或 iPad 上帧速率下降到 10 FPS 左右,我已经优化了其余代码。我听说可以通过估计平方根来显着加快速度,但我找不到任何代码来做到这一点。我只需要一到两位小数的精度。任何有关如何执行此操作或其他加快速度的方法的建议将不胜感激。

谢谢!

0 投票
3 回答
1856 浏览

c - 如何解释反三角(和 sqrt)函数(在 C 中)的浮点算术中的舍入误差?

我有一个相当复杂的函数,它需要几个 double 值,它们代表 3 空间中的两个向量(幅度、纬度、经度),其中纬度和经度以弧度和角度表示。该函数的目的是将第一个向量围绕第二个向量旋转指定的角度并返回结果向量。我已经验证了代码在逻辑上是正确的并且有效。

该函数的预期用途是用于图形,因此不需要双精度;但是,在目标平台上,采用浮点数(特别是sinf、cosf、atan2f、asinf、acosf 和 sqrtf)的 trig(和 sqrt)函数在双精度数上的工作速度比在浮点数上更快(可能是因为计算这些值的指令实际上可能需要double;如果传递了一个浮点数,则该值必须强制转换为双精度数,这需要将其复制到具有更多内存的区域——即开销)。结果,函数中涉及的所有变量都是双精度的。

这是问题所在:我正在尝试优化我的功能,以便每秒可以调用更多次。因此,我用对这些函数的浮点版本的调用替换了对 sin、cos、sqrt 等的调用,因为它们导致整体速度提高了 3-4 倍。这适用于几乎所有输入;但是,如果输入向量与标准单位向量(i、j 或 k)接近平行,则各种函数的舍入误差会累积到足以导致稍后调用 sqrtf 或逆触发函数(asinf、acosf、 atan2f) 来传递刚刚超出这些函数域的参数。

所以,我陷入了两难境地:要么我只能调用双精度函数并避免这个问题(最终限制为每秒大约 1,300,000 次向量操作),要么我可以尝试提出其他方法。最终,我想要一种方法来清理逆触发函数的输入以处理边缘情况(对于 sqrt 来说这样做很简单:只需使用 abs)。分支不是一种选择,因为即使是单个条件语句也会增加太多开销,以至于失去任何性能提升。

那么,有什么想法吗?

编辑:有人对我使用双精度和浮点运算表示困惑。如果我将所有值实际存储在双倍大小的容器(即双类型变量)中,则该函数比将它们存储在浮点大小的容器中要快得多。但是,出于显而易见的原因,浮点精度三角运算比双精度三角运算更快。