|
* P0 T' R, H% H4 |7 N
其實是原作者一時手快, 原文應該寫成下面這樣比較好懂...7 w& |8 @( ~! o9 w+ ]& g' c
1 `+ w* ~# T! c' ]: u3 X0 F2 sX 先寫成 X = a * 2^n, (a = 0.5~1) 的form(形式) , 將乘數 a 給normalized to 0.5~1的範圍.
3 k: J" Z9 G: h8 C- q: p5 f5 q* j) \+ y2 [" ?6 w8 x6 r/ h% N" D l% n
這樣子 X = 2時, a = 1, n = 1
7 O+ n6 a. Y* P1 g- j1 cX = 6 時, x= 0.75, n = 36 F) v' Q# Z/ _) B) j
* r% m( r; s h原因是 a 介於 0.5~1時, 它的小數表示法會是 0.1xxx (2進位) 對整個表達空間的使用會比較好 (不會浪費太多bit).
3 K) r1 ^ P# ]1 H" I8 m5 m; z
% N: P7 P; W$ s: M, J至於用泰勒展開式, 是工程計算常用的方法, 因為.... 它能有效的控制到精度誤差 (就是收斂, 到第幾項能收斂到多少, 是可以確定的), 又很萬用- J& A1 }5 l- A" F' x
所以在數值計算上, 泰勒展開式很常見到. 但不見得是最好的解, 有時候看場合會改用查表法, cordic..., Z" }8 c, V( S4 q4 _. o
" I4 R. n. a+ G1 G) Q# T
數學真的很重要! (雖然我都忘光了 haha)! \+ {0 {5 U( f
' T* {& e) R/ n. A& T
|
|