【发布时间】:2016-07-04 21:23:41
【问题描述】:
几天来,我一直想知道如何计算幅度在100000!(弧度)左右的巨大数字的正弦值。阶乘只是一个例子,数字本身可以是任何不只是阶乘积......)我显然不使用来自 boost 多精度库的double 而是cpp_rational。但我不能简单地做100000! mod 2pi,然后使用内置函数sinl(我不需要超过10个十进制数字..),因为我需要几百万位的圆周率才能准确地做到这一点。
有什么办法可以做到吗?
【问题讨论】:
-
这确实是一个非常困难的问题:好的数学库实际上使用大量 pi 的数字(无限 pi 近似),而其他人使用更差但更便宜的有限 pi 近似。
-
@duffymo 你没抓住重点。可以这么说,按一些天文单位计算。
-
无法赢得所有人。也许我们应该问他为什么/如何打算计算 100000!。那只是无知。
-
在不了解
sin(x)中的x的情况下,您只能使用足够精确的Pi 常量。如果您对结果和/或论点有更多了解,那么您可以利用它。例如,在几何问题上,您通常可以应用 CORDIC。在代数上,您可以使用恒等式或相似性。如果只是一些子结果,有时移植到复杂域会有所帮助(以exp形式使用欧拉公式)...帮助我们需要了解更多...
标签: c++ math boost trigonometry