我有一個項目,我們試圖獲得代碼空間。我們在一個文件中有一個點,它從數學庫中調用pow()函數,它爲這一行代碼添加了一個額外的+ 12k代碼到最終的十六進制。我已經做了一些搜索,我似乎無法找到一種在數學庫之外做pow函數的好方法。我找到的每個例子都是使用數學庫。最糟糕的是我需要浮點數,因爲我需要提出一些不斷變化爲1.4的冪的未知變量,而我所掌握的控制器實際上並沒有浮點數。一些沒有浮點的72Mhz 32位ARM器件被告知,因此這是一個庫函數的巨大空間。有沒有人試圖做到這一點,贏得了戰鬥?製作你自己的pow()
1
A
回答
1
您可以使用this rule on fractional exponents將其分解爲一個整數根和整數冪函數,一個接一個地應用。
由於指數是固定的,因此可以使您的代碼更簡單,因爲1.4 = 7/5
。現在您只需編寫一個函數,在整數輸入上一次執行這兩個精確的兩個步驟,您可以避免浮點計算的損失。
0
你可能逃脫使用float
代替double
和powf()
更少的代碼:
float var=0.12345f;
var=powf(var,1.4f);
當然,其結果將是不太準確。
1
由於 的指數是固定的,因此您的問題比編寫廣義pow()函數稍微簡單一些。您也可以從全功能的pow()中稍微放寬精度要求 。
選項1:爲f(x)= x^1.4實施Taylor Series展開式。你會 需要選擇一些x的值來擴大泰勒級數,並且當x離這個值越遠,你將會失去精度。選項2:通過在某些 點數處列出x^1.4的值構造插值表,然後使用線性(或更高階多項式)插值計算中間點處的值。
相關問題
- 1. Python:製作你自己的報表
- 2. Rails:製作你自己的寶石
- 3. 建立你自己的網絡控制
- 4. 繪製你自己的標籤欄?
- 5. PHP文本解析和/或製作你自己的語言?
- 6. 製作我自己的AsynchronousSocketChannel
- 7. SAMS教你自己dismissModalViewController不工作
- 8. 實現你自己的* ngIf
- 9. 寫你自己的malloc
- 10. 編譯你自己的glibc
- 11. 你可以在F#中定義你自己的操作符嗎?
- 12. 如果我製作自己的DialogFragment,我必須製作自己的按鈕嗎?
- 13. Tkinter:Listbox請表現你自己
- 14. 速度限制你自己的過載外部API的
- 15. 用oauth製作我自己的api
- 16. 製作自己的虛擬鍵盤
- 17. 爲MonkeyTalk製作自己的Pod
- 18. 製作我自己的例外Java
- 19. 製作我自己的數據類型
- 20. 如何製作自己的日食?
- 21. 製作我自己的網站分析
- 22. Bash:製作我自己的shell
- 23. 製作自己的流體模板
- 24. 製作我自己的jquery分頁
- 25. 如何製作自己的命令
- 26. 製作我自己的數獨謎題
- 27. 製作我自己的外殼
- 28. 製作我自己的bootstrap btn類
- 29. 如何製作我自己的UIPickerView?
- 30. 製作我自己的API,請查看
Duh ..明顯的總是讓我......對於讀這個並且到達這裏的任何人來到維基百科並且搜索「第n個根算法」,並且這個等式的後半部分在那裏解釋得非常好。這也可以用來刪除任何不必要的sqrt()調用。這消除了很多不必要的代碼,但我不知道完成後會有多少。我不會去編寫這個了幾天。 – user1054210 2012-03-21 14:59:51