2016-12-16 44 views
0

我试图找到sin函数的多精度版本的实现。我想通读mpfr库(C/C++源代码),但我找不到与实际实现相关的任何代码。多精度初等函数实现

我基本上想知道的是如何在这种情况下执行参数缩减(多精度),这可能是一个巨大的LUT被存储来代表pi的倒数,这将允许处理所有可能的情况与案件我的意思是尾数大小)。

你能指出我看什么具体的来源?代码阅读起来相当复杂。

回答

1

范围缩减不是用一个巨大的LUT实现的:这是不可能的,因为指数范围太大。所做的只是以足够的精度计算pi; pi的值被缓存以用于下一次对三角函数的调用,并且每次需要更多精度时重新计算pi。

您可以通过查看MPFR的来源和/或通过使用LaTeX从doc目录构建algorithms.pdf来获取信息。但是这份文件可能并不总是最新的,有些信息可能会丢失。

+0

你的意思是准确度如何?每次我想要评估一个trig函数时是否计算它? – user8469759

+0

@ user8469759函数实现对具有某种精度(动态确定)的变量调用'mpfr_const_pi'。例如,如果变量具有500位的精度并且pi的高速缓存值具有600位的精度,则pi将不被重新计算;但如果pi的缓存值具有400位的精度,则函数“mpfr_const_pi”将重新计算pi以获得至少500位的精度。 – vinc17

+0

为什么'pi'代替反转('1/pi')? – user8469759