我有一個項目,我們試圖獲得代碼空間。我們在一個文件中有一個點,它從數學庫中調用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. 建立你自己的網絡控制
- 2. 繪製你自己的標籤欄?
- 3. PHP文本解析和/或製作你自己的語言?
- 4. 製作我自己的AsynchronousSocketChannel
- 5. SAMS教你自己dismissModalViewController不工作
- 6. 實現你自己的* ngIf
- 7. 你可以在F#中定義你自己的操作符嗎?
- 8. 如果我製作自己的DialogFragment,我必須製作自己的按鈕嗎?
- 9. Tkinter:Listbox請表現你自己
- 10. 用oauth製作我自己的api
- 11. 如何製作自己的命令
- 12. 製作自己的流體模板
- 13. 製作我自己的外殼
- 14. 製作我自己的API,請查看
- 15. Bash:製作我自己的shell
- 16. 如何製作我自己的UIPickerView?
- 17. 製作我自己的例外Java
- 18. 如何製作自己的日食?
- 19. 你可以爲你自己的應用程序使用二進制DLL嗎?
- 20. java.lang.Exception與滾動你自己的異常
- 21. Zend DB Table?或者你自己的SQL?
- 22. 爲你自己的文件命名
- 23. 打破你自己的例外IntelliJ
- 24. 編寫你自己的Jquery函數?
- 25. 用你自己的UIImage提供UIImagePicker。
- 26. Phalcon你自己之間的關係?
- 27. 你自己命名的項目(c#)
- 28. 編寫你自己的圖層
- 29. 拋出你自己的例外
- 30. PHP:讓你自己的函數在while循環中工作
Duh ..明顯的總是讓我......對於讀這個並且到達這裏的任何人來到維基百科並且搜索「第n個根算法」,並且這個等式的後半部分在那裏解釋得非常好。這也可以用來刪除任何不必要的sqrt()調用。這消除了很多不必要的代碼,但我不知道完成後會有多少。我不會去編寫這個了幾天。 – user1054210 2012-03-21 14:59:51