Программа выводит значения в виде Nan при некоторых условиях в уравнении - C#
Формулировка задачи:
Здравствуйте! Помогите разобраться. Написал программу для решения уравнений вида x^n=a. Почему при вводе A отрицательного числа, а степени N положительного, нечетного, ответ выходит в виде Nan
using System;
class Uravnenie
{
static void Main()
{
double a,n,k,x;
Console.WriteLine("Введите A и N в уравнение вида x^n=a");
Console.WriteLine("Введите A");
a = double.Parse(Console.ReadLine());
Console.WriteLine("Введите N");
n = double.Parse(Console.ReadLine());
k = 1 / n;
x = Math.Pow(a,k);
if ((n % 2 == 0) & (a >= 0) | (n % 2 != 0) & (a>=0 | a<0))
{
Console.WriteLine("Ответ: Х равен " + x);
Console.ReadLine();
}
else
Console.WriteLine("Нет корней!!");
}
}Решение задачи: «Программа выводит значения в виде Nan при некоторых условиях в уравнении»
textual
Листинг программы
using System;
namespace Power
{
static class MyMath
{
public static double Power(double x, double n)
{
if (Math.Abs(n - 0) < double.Epsilon)
return 1;
if (Math.Abs(n - 1) < double.Epsilon)
return x;
if (Math.Abs(x - 0) < double.Epsilon)
return 0;
if (Math.Abs(x - 1) < double.Epsilon)
return 1;
if (x > 0)
return Math.Pow(x, n);
return Math.Round(-Math.Exp(n * Math.Log(-x, Math.E)), 15);
}
}
internal class Program
{
private static void Main()
{
for (double i = -2; i < 3; i += 0.5)
for (double j = -2; j < 2; j += 0.5)
Console.WriteLine("{0}^{1} = {2}", i.ToString(), j.ToString(), MyMath.Power(i, j).ToString());
Console.WriteLine(MyMath.Power(-8, 1.0 / 3));
Console.ReadKey();
}
}
}