/ * タイトル: 機能のダブルパワー(ダブルベース、int型の指数を実装して 、) 指数力の基盤を求めています。 * / / * 思考: 必要性はもっと考慮すべきことをケース: 1,0エラーの負のパワー。 図2に示すように、0の二値が決定され、精度が必要。 3、指数が負の数であることを検討してください。 「革新的な点をS: 検索X(n乗)、使用可能なX(N / 2乗)×2(N / 2乗)xが偶数である X(n乗)を見つけ、利用できるX(N / 2乗)* 2(N / 2乗)* xxは奇数である * / の#include <iostreamの> する#include <string.hの> する#include <アルゴリズム> の#include <cmath> 使用して名前空間STD; 。の#define MIN_VALUE-1E 8 BOOL g_InvalidInput偽へ=; BOOL equal0(ダブルNUM1){ 真のIF(ABS(NUM1)<MIN_VALUE)リターン; 偽に戻ります。 } PowerWithUnsignedExponentダブル(ダブルベース、unsigned int型を指数部){ IFは、{(== 0指数部) ;リターン1 } {(1 ==を指数部)IF 、ベースを返す } によって代わりに除算の//ビット演算 二重結果= PowerWithUnsignedExponent(ベース、指数1 >>); 結果=結果*; //指数が奇数より必要性によって、決定されます。 代わりにモジュロを使用する//ビット演算 IF {(==&0x1のを指数部1) の検索結果* BASE =; } リターン結果; } ダブルパワー{(ダブルベースは、INTを指数部) IF(equal0(塩基)&&指数部<0){ g_InvalidInput真=に、 リターン0.0; } unsigned int型absExponent =(unsigned int型)(指数)。 もし(指数<0){ absExponent =(unsigned int型)( -指数)。 } 二重結果= PowerWithUnsignedExponent(ベース、absExponent)。 (指数<0){もし 結果= 1.0 /結果。 } 結果を返します。 } int型のmain(){ COUT <<電源(2,9)<< ENDL。 }