【C#】n乗根の計算

n乗根の計算で、例えば8の3乗根( \(\sqrt [ 3 ]{ 8 } =2\) )を計算するにはMathクラスのPowメソッドを用いて

Math.Pow(8.0, 1.0 / 3.0);

と、すれば答え  が求められます。

しかし、負の値のn乗根、例えば \(\sqrt [ 3 ]{ -8 }\)、を求めようと

Math.Pow(-8.0, 1.0 / 3.0);

とすると、答えは -2 を期待するところですが、C#ではNaNとなり、答えが求まりません。

しかし、負の値であっても、奇数乗根の場合は答えを求めたい。

という事で、こんなメソッドを作ってみました↓

private double NthRoot(double x, int n)
{
    if (x >= 0)
    {
        // 通常のn乗根
        return Math.Pow(x, 1.0 / (double)n);
    }
    else
    {
        if ((n % 2) != 0)
        {
            // 奇数乗根の場合
            return -Math.Pow(-x, 1.0 / (double)n);
        }
        else
        {
            // 偶数乗根の場合
            return double.NaN;
        }
    }
}

(参考)Math.Powメソッド

https://msdn.microsoft.com/ja-jp/library/system.math.pow(v=vs.110).aspx

C#へ戻る