這陣子研究 math.h 與 bitwise 優化問題,找了很多資料後,發現其實別人寫好的 library 實在也很多,原本是要優化三角函式,最後還是只把觀念帶走,下次有空的時候再實際 coding 吧。以下為我找到的參考資料。

(1) Bit Twiddling Hacks
http://www-graphics.stanford.edu/~seander/bithacks.html
這篇文章在探討 bitwise 操作,裡面有提出許多平常運算加速之方式,但建議要用的話還是包成 function 或 marco 再使用, 不然會看不懂。

(2) Fast and accurate sine/cosine
http://www.devmaster.net/forums/showthread.php?t=5784
這篇原po主要討論 sin/cos 之加速,裡面的回文內容我覺得相當充實,其中 1F-Nick 說明包含了以 taylor series 做分析。另 29F-Groove 也提供了他用的數學函式連結 - OpenGL,其餘的怕流水帳過長, 就不一一列表了。

(3) A Guide to Approximations
http://www.ganssle.com/approx/approx.pdf
這篇文章我覺得寫得相當淺顯易懂,適合初學者看, 裡面也有分析精度之問題。

(4) fdlibm
http://www.netlib.org/fdlibm/
這裡幾乎包含所有 math.h 的實做,甚至優化,最後我幾乎只看這裡。

(5) 其它相關文獻介紹

再列二個我覺得質量還不錯的研究

Elementary Functions and Calculators
http://0rz.tw/35BdF (這個太長不得不用縮的,pdf檔)

A Fast, Vectorizable Algorithm for Producing  Single-Precision Sine-Cosine Pairs
http://arxiv.org/PS_cache/cs/pdf/0406/0406049v1.pdf

總而言之,要知道 C 語言是怎麼算出三角函式、指對數的話,先把高中課本、Talyor Series 拿出來複習、翻一翻就是了。

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()