为实数提供动力的最快方法是什么?
What is the fastest way to power real numbers?
当然我知道 cmath(math.h) 中有一个很好的 pow() 函数,但没有触及 pow() 的背景什么是幂数最快的方法 亲手?
您在问两个不同的问题:
- 为实数求幂的最快方法是什么?
- 用自己的双手计算幂数的最快方法是什么?
这些有不同的答案。
pow
很快。标准库实现通常由非常聪明的人编写,由其他聪明人审查,然后由更聪明的人重构。因此,使用提供的标准库实现几乎总是比尝试自己重新实现标准库要好。
但是,如果您坚持创建自己的 pow
实现,您应该首先使用它们的泰勒级数展开实现 exp
和 log
。然后使用下面的属性:
pow(base,power) = exp( power * log(base) )
注意,如果base
为负数,则应先计算pow(-base,power)
,然后对base
进行奇偶校验以确定结果的符号。
当然我知道 cmath(math.h) 中有一个很好的 pow() 函数,但没有触及 pow() 的背景什么是幂数最快的方法 亲手?
您在问两个不同的问题:
- 为实数求幂的最快方法是什么?
- 用自己的双手计算幂数的最快方法是什么?
这些有不同的答案。
pow
很快。标准库实现通常由非常聪明的人编写,由其他聪明人审查,然后由更聪明的人重构。因此,使用提供的标准库实现几乎总是比尝试自己重新实现标准库要好。
但是,如果您坚持创建自己的 pow
实现,您应该首先使用它们的泰勒级数展开实现 exp
和 log
。然后使用下面的属性:
pow(base,power) = exp( power * log(base) )
注意,如果base
为负数,则应先计算pow(-base,power)
,然后对base
进行奇偶校验以确定结果的符号。