Re: [請益] Pow function source file

看板Prob_Solve (計算數學 Problem Solving)作者 (卡卡獸)時間10年前 (2014/06/21 05:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
雖已是舊文了,不過我所知的大多是版友們不吝提供的, 手邊有整理過一些資源,供參考。 ※ 引述《kingzero (神武信魔)》之銘言: : 大家好 : 我的程式需要使用到Pow這一個function.但是我的基數是固定2. : 也就是說我是固定 pow(2,y); y:floating : 因為我的ROM size有限,所以我不想include math.h.用了會讓我的記憶體少一半. : 請問有人知道哪裡可以找pow這一個函數的sorcue file嗎? ^^^^^^^^^^^ fdlibm : http://www.netlib.org/fdlibm/ , e_power.c 不過很可怕的是,這個函式底層的 source code 恐怕不是想像中那麼容易理解。 像是 5.99999999999994648725e-01 大概完全不會想知道怎來的.. ( 恕我實在沒天份推導一堆 節點 , 係數 怎來的, 也不會用 ) any way, power 函式大致上概念做法 "可能" 是這麼做 令 pow(a,b) = a^b = S , 左右同取 ln b * ln(a) = ln(S) , 左右同取 exp exp( b * ln(a) ) = S 換句話說,pow 函式在底層上可能是先呼叫一次 log , 再呼叫一次 exp 達成的, 然後今天你的 a 已固定是 2.0,可以直接帶入當常數使用,令 b * ln(2.0) = c 問題就變成求 exp(c) 是多少,我不知道上述整個流程 compiler 是不是可以 聰明到直接化簡,但直接求 exp 應會較易,所以你要做的反而變成了去找 e_exp.c , 然後尷尬的事情又來了,打開 e_exp.c 還是發現一堆 macro , __HI , __LO , 嗯 , 是做 IEEE754 分析 , 我不知道你的情況是用定點數 比較合適還是用浮點數比較合適。如果還是想自己拼的話我有拼過簡易版的, 參考 http://edisonx.pixnet.net/blog/post/83426509 , 用的是 taylor series , 收斂效能差。 1. cmath / math.h 實作提要紀錄 http://edisonx.pixnet.net/blog/post/88987513 2. [C數] 優化版math.h http://edisonx.pixnet.net/blog/post/36563887 中間可紀錄幾個數值點做為計算的初值,其他的就不多說了。 : 我打算自己試者改改看. ~ 加油 ~ : 我的CPU是32bit或者16bit. : Compiler是ANSI C. -- ~ 這輩子與神手無緣 我只好當神獸了 ~ 卡卡獸 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.165.160 ※ 文章網址: http://www.ptt.cc/bbs/Prob_Solve/M.1403299582.A.2B3.html
文章代碼(AID): #1JfAR-Ap (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #1JfAR-Ap (Prob_Solve)