ちょっと前に、x^yを計算したくなった。xはともかく、yも浮動小数点の範囲にある数なので、単純な以下の関数は使えない。 double pow(double x, int y){ if(y == 0) return 1; if(y == 1) return x; tmp = pow(x, y/2); if(y % 2 == 0){ return tmp * tmp; }else{ return tmp * tmp * x; } } それならと言うことで、よく分からないままに こんな感じのものを書いてみた。 double pow(double x, double y){ double ans = pow(x, (int)y);//上のpowを呼び出す double d = 1.0/2; double m = Math.sqrt(x); y -= (int)y; while(d > 1E-5){