2013-10-19 54 views
1

考慮一個複雜的參數z=x+iy的C複雜數學函數cfunction(z)。我想運行自動測試來檢查複雜平面上該功能的結果。什麼值可用於基準和檢查數學函數的複平面​​?

爲此,腳本將打印此函數的結果以獲得值矩陣:例如,所有組合爲x in [-inf, 0, inf]y in [-inf, 0, inf]

因此,如果我對x in [list]y in [list]執行此測試,我應該在[list]中有效檢查複平面上函數的有效性?

我想到類似的東西:list = [-inf, -1., -0., 0., 1., +inf, NaN],但我認爲這種檢查是一個衆所周知的問題,一些圖書館可能已經用更徹底的方法解決了這個問題。

備註:我認爲函數沒有任何對稱或特定值的屬性。

+0

你想 「在複平面上檢查的有效性」。那是什麼意思?那cfunction(z)實際上爲所有z返回一個複數(而不是運行時異常)?有無數的檢查點,所以你不能全部檢查。對於你測試的那些,你如何「檢查」它們? –

回答

0

有些想法太大而不能發表評論。

到您的列表:list = [-inf, -1., -0., 0., 1., +inf, NaN],可以添加:

一組隨機的(也許100S)
生成由以下union填充u64領域,折騰了非有限的數字。

經典常數

M_PI 
e 

更多特殊值

union { 
    uint64_t u64; 
    double d; 
} sNaN, qNan; 
// http://en.wikipedia.org/wiki/QNaN#Signaling_NaN 
sNaN.u64 = 0x7ff0000000000001; 
// http://en.wikipedia.org/wiki/QNaN#Quiet_NaN 
qNaN.u64 = 0x7ff1000000000000; 
// Max/Min float 
DBL_MAX;  
-DBL_MAX;  
// Small 
DBL_MIN 
DBL_TRUE_MIN 
// 
OnePLus = 1.0 + DBL_EPSILON;