Math 功率函数是否在恒定时间内运行? 当我使用幂函数,如C++中的Pow(double x,double y)或数学中的h函数,这些函数在常数时间内运行吗?p>

Math 功率函数是否在恒定时间内运行? 当我使用幂函数,如C++中的Pow(double x,double y)或数学中的h函数,这些函数在常数时间内运行吗?p>,math,time-complexity,bezier,Math,Time Complexity,Bezier,我问这个问题的原因是因为我想知道(1-t)^n*p0+…+形式上的“预计算”贝塞尔函数t^(n)*pN可以在线性时间内运行,这可能比以控制点和t为参数的De Casteljaus算法的实现更快 我认为这些方法使用基于迭代的处理来获得结果,并且只有当两次迭代的值之间的差值低于给定的误差常数时才会停止 有些迭代方法收敛速度非常快,可以得到幂运算的结果。。。所以我认为它们几乎是恒定时间 这个问题有很多很好的解释: 编辑 我已经找到了很多好的材料来配合 这一个非常有趣,因为它解释了一种使

我问这个问题的原因是因为我想知道(1-t)^n*p0+…+形式上的“预计算”贝塞尔函数t^(n)*pN可以在线性时间内运行,这可能比以控制点和t为参数的De Casteljaus算法的实现更快

我认为这些方法使用基于迭代的处理来获得结果,并且只有当两次迭代的值之间的差值低于给定的误差常数时才会停止

有些迭代方法收敛速度非常快,可以得到幂运算的结果。。。所以我认为它们几乎是恒定时间

这个问题有很多很好的解释:

编辑

我已经找到了很多好的材料来配合

这一个非常有趣,因为它解释了一种使用人类语言计算指数的方法:

思想

我不是一个数学天才,但就我所见,所花的时间并不取决于你选择的数值,而是取决于你想要的精确数字的数量。我想说的是,它取决于参数,但有一个最大值

另外,为了支持这一理论,请看一下这个算法(由Sun实现):。没有循环,只有ifs。我认为这是因为实施它的人选择了他们想要的固定精度。。。然后扩展了保证精度所需的所有迭代

例如,一个迭代次数不变的循环可以像这样容易地展开:

for (int it = 0; it < 5; it++)
    a *= a;

啊,谢谢,这是一个非常好的链接!好东西!你有提到过的快速迭代方法吗?它们的速度取决于功率吗?我找不到具体的实现方式。。。他们说它是从英特尔买来的。我将尝试查找有关迭代幂法的一些信息,并将其发布在此处。您可以在该线程中找到一些优秀的信息:
a *= a; a *= a; a *= a; a *= a; a *= a;