0
我试图找到sin函数的多精度版本的实现。我想通读mpfr库(C/C++源代码),但我找不到与实际实现相关的任何代码。多精度初等函数实现
我基本上想知道的是如何在这种情况下执行参数缩减(多精度),这可能是一个巨大的LUT被存储来代表pi
的倒数,这将允许处理所有可能的情况与案件我的意思是尾数大小)。
你能指出我看什么具体的来源?代码阅读起来相当复杂。
我试图找到sin函数的多精度版本的实现。我想通读mpfr库(C/C++源代码),但我找不到与实际实现相关的任何代码。多精度初等函数实现
我基本上想知道的是如何在这种情况下执行参数缩减(多精度),这可能是一个巨大的LUT被存储来代表pi
的倒数,这将允许处理所有可能的情况与案件我的意思是尾数大小)。
你能指出我看什么具体的来源?代码阅读起来相当复杂。
范围缩减不是用一个巨大的LUT实现的:这是不可能的,因为指数范围太大。所做的只是以足够的精度计算pi; pi的值被缓存以用于下一次对三角函数的调用,并且每次需要更多精度时重新计算pi。
您可以通过查看MPFR的来源和/或通过使用LaTeX从doc
目录构建algorithms.pdf
来获取信息。但是这份文件可能并不总是最新的,有些信息可能会丢失。
你的意思是准确度如何?每次我想要评估一个trig函数时是否计算它? – user8469759
@ user8469759函数实现对具有某种精度(动态确定)的变量调用'mpfr_const_pi'。例如,如果变量具有500位的精度并且pi的高速缓存值具有600位的精度,则pi将不被重新计算;但如果pi的缓存值具有400位的精度,则函数“mpfr_const_pi”将重新计算pi以获得至少500位的精度。 – vinc17
为什么'pi'代替反转('1/pi')? – user8469759