我有一个项目,我们试图获得代码空间。我们在一个文件中有一个点,它从数学库中调用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