C # Math.Pow () está roto

Y no, esto no implica (a mi entender) problemas de división de enteros o redondeo de punto flotante.

Mi código exacto es:

    static void Main(string[] args)
    {
        double power = (double)1.0 / (double)7.0;
        double expBase = -128.0;
        System.Console.WriteLine("sanity check: expected: -128 ^ 0.142857142857143 = -2.    actual: " + expBase + " ^ " + power + " = " + Math.Pow(expBase, power));
        System.Console.ReadLine();
    }

La salida es:

sanity check: expected: -128 ^ 0.142857142857143 = -2. actual: -128 ^ 0.14285 7142857143 = NaN

El Marco de destino para este código es (de acuerdo con las propiedades de la solución) .NET Framework 4.0 Client Profile.

Curiosamente no he encontrado ninguna mención de esto en ninguna parte de la Web. ¿Estoy tomando pastillas locas aquí?

Respuestas a la pregunta(6)

Su respuesta a la pregunta