2016-12-16 43 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