问题标签 [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.

0 投票
23 回答
63391 浏览

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)版本仍然每次都名列前茅。

0 投票
20 回答
74683 浏览

c# - 如何在 C# 中计算 PI?

如何使用 C# 计算 PI 的值?

我在想这将是通过一个递归函数,如果是这样,它会是什么样子,是否有任何数学方程式可以支持它?

我对性能并不太挑剔,主要是从学习的角度来看如何去做。

0 投票
3 回答
8382 浏览

python - python中的高斯-勒让德算法

我需要一些帮助来计算 Pi。我正在尝试编写一个将 Pi 计算为 X 位的 python 程序。我已经从 python 邮件列表中尝试了几个,它对我的​​使用来说很慢。我已阅读有关Gauss-Legendre Algorithm的信息,并尝试将其移植到 Python 中但没有成功。

我正在阅读Here,我将不胜感激任何关于我哪里出错的意见!

它输出:0.163991276262

0 投票
8 回答
6428 浏览

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的值,圆周长与其直径的比率。

它省略了常数中可疑的最后五位数字。

生产

如果你在浮点数据类型方面有一定的专业知识,你能说服我这些库常量是完全相等的吗?或者他们绝对不相等?

0 投票
3 回答
4663 浏览

python - 使用 Monte Carlo 查找 PI 数字

我尝试了许多算法来使用蒙特卡洛找到 π。解决方案之一(在 Python 中)是这样的:

可悲的是,即使有 1000000000,精度也非常差(3.141...)。

这是该方法可以提供的最大精度吗?我选择蒙特卡洛的原因是它很容易在平行部分中分解。是否有另一种易于分解和计算的 π 算法?

0 投票
10 回答
1496 浏览

pi - Pi/无限数

我对计算中的无限数很好奇,尤其是 pi。

对于要渲染圆的计算机,它必须了解 pi。但如果它是无限的,它怎么可能呢?

我是不是看得太多了?它会只使用四舍五入的值吗?

0 投票
10 回答
8297 浏览

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 语句也不起作用。我不确定还能做什么。我假设这可能是一个简单的逻辑错误。

0 投票
4 回答
2250 浏览

algorithm - 在 sas 中如何计算 π?

只是好奇!但我发现 SAS 持有的 π 值实际上是不正确的。

例如:

给出的 π 值为 (3.)141592653589792961327005696

但是 - π 当然是 (3.)1415926535897932384626433832795 ( http://www.joyofpi.com/pi.html ) - 到 31 dp。

是什么赋予了??!!

0 投票
4 回答
1940 浏览

c# - 在 C# 中将 π 计算为“无限”二进制精度

到目前为止,Fabrice Bellard 的 base 2 方程似乎是可行的方法

替代文字

具有讽刺意味的是,这将需要一个 BigReal 类型;我们有这个 .Net 吗?.Net 4.0 有 BigInteger。

有人有Haskell版本吗?

0 投票
3 回答
5010 浏览

c# - C# 数学与 XNA MathHelper

自从我需要在 C# 中使用 PI (3.1415...) 以来,我一直使用 Math.PI 来获取值。通常我只会使用Math.PI/2.0or之类的值2.0*Math.PI,但现在我刚刚注意到 XNA 提供了一个 MathHelper 类。这样做的好处是我可以调用MathHelper.PiOver2and MathHelper.TwoPi,从而使一个极其微不足道的步骤变得更加微不足道。;-)

我认为这两个类是可以互换的,但我注意到Math.PI/2.0 != MathHelper.PiOver2. 我试图研究为什么会这样,但我一无所获。所以,我想我会在这里碰碰运气。关于使用 PI,Math 类和 MathHelper 类之间有什么区别吗?一个比另一个更受欢迎吗?还是我应该独自离开,并确保在整个程序中始终使用其中一种?