问题标签 [pi]
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.
performance - 获取 π 值的最快方法是什么?
我正在寻找获得 π 值的最快方法,作为个人挑战。更具体地说,我使用的方法不涉及使用#define
常量,如M_PI
,或硬编码数字。
下面的程序测试了我所知道的各种方法。理论上,内联汇编版本是最快的选择,但显然不可移植。我已将其作为基线与其他版本进行比较。在我的测试中,使用内置插件,该4 * atan(1)
版本在 GCC 4.2 上是最快的,因为它会自动将 折叠atan(1)
成一个常量。-fno-builtin
指定后,版本atan2(0, -1)
最快。
这是主要的测试程序(pitimes.c
):
fldpi.c
以及仅适用于 x86 和 x64 系统的内联汇编内容 ( ):
还有一个构建脚本,它构建了我正在测试的所有配置(build.sh
):
除了在各种编译器标志之间进行测试(我也比较了 32 位和 64 位,因为优化不同),我还尝试过切换测试的顺序。但是,该atan2(0, -1)
版本仍然每次都名列前茅。
c# - 如何在 C# 中计算 PI?
如何使用 C# 计算 PI 的值?
我在想这将是通过一个递归函数,如果是这样,它会是什么样子,是否有任何数学方程式可以支持它?
我对性能并不太挑剔,主要是从学习的角度来看如何去做。
python - python中的高斯-勒让德算法
我需要一些帮助来计算 Pi。我正在尝试编写一个将 Pi 计算为 X 位的 python 程序。我已经从 python 邮件列表中尝试了几个,它对我的使用来说很慢。我已阅读有关Gauss-Legendre Algorithm的信息,并尝试将其移植到 Python 中但没有成功。
我正在阅读Here,我将不胜感激任何关于我哪里出错的意见!
它输出:0.163991276262
java - java.lang.Math.PI 是否等于 GCC 的 M_PI?
我正在用 Java 和 C/C++ 编写几个参考算法。其中一些算法使用 π。我希望每个算法的两种实现产生相同的结果,而不会以不同的方式舍入。迄今为止一直有效的一种方法是使用pi
在两种语言中完全相同的自定义常量,例如 3.14159。然而,当 Java 和 GCC 库中已经定义了高精度常量时,定义 pi 让我觉得很愚蠢。
我花了一些时间编写快速测试程序,查看每个库的文档,并阅读浮点类型。但我无法说服自己 java.lang.Math.PI(或 java.lang.StrictMath.PI)是否等于 math.h 中的 M_PI。
GCC 3.4.4 (cygwin) math.h 包含:
但是这个
生产
这表明最后 5 位数字不可信。
同时,Javadocs 说 java.lang.Math.PI 是:
double
比任何其他值更接近pi的值,圆周长与其直径的比率。
和
它省略了常数中可疑的最后五位数字。
生产
如果你在浮点数据类型方面有一定的专业知识,你能说服我这些库常量是完全相等的吗?或者他们绝对不相等?
python - 使用 Monte Carlo 查找 PI 数字
我尝试了许多算法来使用蒙特卡洛找到 π。解决方案之一(在 Python 中)是这样的:
可悲的是,即使有 1000000000,精度也非常差(3.141...)。
这是该方法可以提供的最大精度吗?我选择蒙特卡洛的原因是它很容易在平行部分中分解。是否有另一种易于分解和计算的 π 算法?
pi - Pi/无限数
我对计算中的无限数很好奇,尤其是 pi。
对于要渲染圆的计算机,它必须了解 pi。但如果它是无限的,它怎么可能呢?
我是不是看得太多了?它会只使用四舍五入的值吗?
c++ - 计算 pi 的值-我的代码有什么问题
我正在做另一个 C++ 练习。我必须从无限级数中计算 pi 的值:
pi=4 - 4/3 + 4/5 - 4/7 + 4/9 -4/11+ 。. .
该程序必须在本系列的前 1,000 个术语之后打印 pi 的近似值。这是我的代码:
它编译时没有错误和警告,但执行后只出现空的控制台窗口。如果我删除行“if(i%1000==0)”,我可以看到它运行并打印每个 pi 值,但它不会停止,这意味着第二个 if 语句也不起作用。我不确定还能做什么。我假设这可能是一个简单的逻辑错误。
algorithm - 在 sas 中如何计算 π?
只是好奇!但我发现 SAS 持有的 π 值实际上是不正确的。
例如:
给出的 π 值为 (3.)141592653589792961327005696
但是 - π 当然是 (3.)1415926535897932384626433832795 ( http://www.joyofpi.com/pi.html ) - 到 31 dp。
是什么赋予了??!!
c# - 在 C# 中将 π 计算为“无限”二进制精度
到目前为止,Fabrice Bellard 的 base 2 方程似乎是可行的方法
具有讽刺意味的是,这将需要一个 BigReal 类型;我们有这个 .Net 吗?.Net 4.0 有 BigInteger。
有人有Haskell版本吗?
c# - C# 数学与 XNA MathHelper
自从我需要在 C# 中使用 PI (3.1415...) 以来,我一直使用 Math.PI 来获取值。通常我只会使用Math.PI/2.0
or之类的值2.0*Math.PI
,但现在我刚刚注意到 XNA 提供了一个 MathHelper 类。这样做的好处是我可以调用MathHelper.PiOver2
and MathHelper.TwoPi
,从而使一个极其微不足道的步骤变得更加微不足道。;-)
我认为这两个类是可以互换的,但我注意到Math.PI/2.0 != MathHelper.PiOver2
. 我试图研究为什么会这样,但我一无所获。所以,我想我会在这里碰碰运气。关于使用 PI,Math 类和 MathHelper 类之间有什么区别吗?一个比另一个更受欢迎吗?还是我应该独自离开,并确保在整个程序中始终使用其中一种?