double型数据的整数次方

来源:互联网 发布:shell脚本调用java类 编辑:程序博客网 时间:2024/05/22 03:44
// 此方法能减少乘法次数, O(1)#include <iostream>#include <cassert>using namespace std;// do not consider doulbe overflowdouble pow(double base, int exponent){// initializeint i = 0;assert(base!=0 && exponent>=0);// if the condition is true, go ahead, else break;if (exponent==0) return 1.0;double power = 1.0;unsigned int mask = 1;double ret = 1.0;for (i=0; i<32; ++i){if (i==0) power = base;else power = power*power;if ( ((mask<<i) & (unsigned int)exponent) != 0){ret = ret * power;}}return ret;}int main(int argc, char* argv[]){cout<<pow(2.5,2)<<endl;cout<<pow(-2.5,2)<<endl;cout<<pow(1,0)<<endl;cout<<pow(100,3)<<endl;cout<<pow(-100,4)<<endl;return 0;}


原创粉丝点击