解りやすくて好きだけど罵倒しないといけないんだよね。

たとえばN = 1,000,000なら収束するまで本当に100万回ずつ乗算をするってのは筋が良くない。
専門学校や大学1〜2年生の宿題レベルならそれでいいかもしれないが実用レベルには遥かに達しない。
整数乗ならこっちのほうが演算回数少ない。

double pow_n( double a, uint_t n )
{
double r = 1.0;
while (n > 0) {
if (n & 1) { r *= a; }
n = n >> 1;
a *= a;
}
return r;
}