2012-12-19 95 views
0

如何計算exp(i * x)其中| x | >> 2 pi?指數化大浮點虛構參數

我知道它可以用一個任意的精度庫來完成,但是有沒有一種算法可以穩定地執行(沒有舍入錯誤)而不需要庫?

回答

4

exp(i*x)cos(x) + i*sin(x)。即使當x很大時,好的數學庫也會正確計算cos(x)sin(x)。例如,您應該在幾個ULP範圍內使用OS X或iOS標準數學庫得到正確的結果。

在C,這應該工作:

#include <complex.h> 
… 
    double complex Y = cexp(I * x); 
+0

一個X多大會一個好的圖書館處理?我以爲,一旦ulp(x)> pi,大多數庫不會打擾... –

+1

@ aka.nice:一個好的庫處理所有的值。 OS X和iOS處理所有值。圖書館決定「嗯,你的投入很大,你必須得到一些計算錯誤,所以我不會很努力」。所有的圖書館知道它是通過一個浮點對象非常明確的(它是在一個非常好的標準中指定的)完全代表一定的價值,其工作是返回該值的餘弦或正弦。很可能用戶在輸入輸入時要小心,圖書館應避免引入新的錯誤。 –

+0

我喜歡這個原理,它尚未落後於Sun數學庫。我會嘗試它的樂趣。是否有任何步驟需要與海灣合作委員會確保使用正確的庫,而不是破碎的x86 hardwired cos/sin? –