为什么幂函数通常被计算为对数
Why a power function is often computed as a logarithm?
我正在研究一些x86 ASM代码和代码真正做什么,这是我的理解,power
函数(x^y)内部工作作为对数函数。我所说的内部是指CPU寄存器。
为什么会这样?好处是什么?这是其他高级语言(如c++)可以复制和借鉴的优点吗?
你应该看看这个MATH,
答案说的是对数函数可以通过泰勒级数和查找表相结合来实现。如果存在查找表,则可以对其进行哈希,查找比只能通过计算获得的pow更容易。
对于xy可以写成
y = log<sub>10</sub> x .
或
y = (ln x)/(ln 10);
如果pow没有日志实现,那么它应该通过加法链求 Wiki实现,这需要运行时计算,可能比查找日志需要更长的时间。
编辑:感谢@harold,使用对进行平方运算可以更优化地执行幂运算。
查看这个问题的答案:How to: pow(real, real) in x86
回想一下你的对数法则:2的底与log2(x)约掉,只剩下x^y。
编辑:我们有一条x86指令来计算所需的每个组件。
相关文章:
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何计算函数的时间复杂度?
- 有没有办法计算函数内arry的长度而不是作为参数传入?
- 如何计算函数的搜索复杂度
- 使用引用参数计算函数
- 递归计算函数f = n!/(c^n)的值
- 为什么这个C++字符串长度计算函数比另一个更快
- 用递归计算函数f(n)
- C++平均计算函数返回0
- 有没有比生成/累积更快的方法来计算函数结果的平均值
- 如何计算函数的时间
- 由于标识符未知,LLDB 无法计算函数
- 从 C++11 中的列表中选择并计算函数
- 计算后缀表达式.pop() 返回不正确的值来计算函数
- 在计算函数返回值之前或之后是否销毁了局部变量
- 计算函数指针的类型
- 计算函数中的模给出了与直接使用%运算符不同的答案
- 提升:以秒/毫/微米/纳米为单位计算函数的运行时间
- 行列式计算函数的优化
- 如何在c++中计算函数的执行时间和cpu消耗