[問題] 數學函式的實作

作者: SMpeng (peng)   2015-01-14 22:17:10
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
gcc
補充說明(Supplement):
其實應該算閒聊XD
這學期學了C,大致上還OK,不過剛剛突然有點好奇,在標準程式庫的math.h當中,
那些用到double的函數大致上是用什麼樣的方法實作的阿?
比方說
double pow(double base, double exponent);
double log(double x);
double exp(double x);
如果想要自己寫一個這樣的函式是不是有點困難?
作者: tj386 (最愛歐陽三姊妹♥♥♥)   2015-01-14 22:27:00
可以參考glibc都是open source,有興趣可以慢慢trace
作者: EdisonX (卡卡獸)   2015-01-14 22:39:00
glibc 的 math.h 幾乎看不到 source, 比較推 fdlibmhttp://www.netlib.org/fdlibm/另在 c 裡的 math.h , 沒記錯的話有些是直接呼叫組語做的至於原理的話-都是數值分析,而且方法不只一種。像求 sin我所知的方法大概就三種了。想自己做玩具級(速度慢)的話http://edisonx.pixnet.net/blog/post/88987513 參考下
作者: SMpeng (peng)   2015-01-14 22:45:00
太感謝了! 來研究看看XD
作者: suhorng ( )   2015-01-14 22:55:00
像是..x86 有 fsin, fcos 組語指令XD
作者: LPH66 (-6.2598534e+18f)   2015-01-15 00:04:00
還有一個 fsincos 可以一次做完, 補一個除就變 tan 了
作者: hidog (.....)   2015-01-15 16:06:00
有學過微積分就能實做了 剩下是精確度還有效率問題
作者: wenyonba (射後不理很XX啊!!!!)   2015-01-15 16:14:00
樓上你也跑來這閒晃啊 XD
作者: hidog (.....)   2015-01-15 16:17:00
因為是工程師阿XD
作者: Killercat (殺人貓™)   2015-01-15 17:24:00
這邊除了新手 學生以外就只剩下工程師跟攻城獸了吧...
作者: amozartea (單車單)   2015-01-16 11:05:00
exp用泰勒展式做就好了
作者: tubbysong (song)   2015-01-16 20:57:00
Double 是雙精倍浮點數,被用表現「自然數」計算

Links booklink

Contact Us: admin [ a t ] ucptt.com