Q:

Why a double-type variable returns Nan?

I am trying to solve a quadratic equation. I have all the variables of type double, and the result of the s variable Nan.
double a, b, c, x1, d, x2, s ;
Console.WriteLine("Enter a value a: ");
a = double.Parse(Console.ReadLine());
Console.WriteLine("Enter a value b: ");
b = double.Parse(Console.ReadLine());
Console.WriteLine("Enter a value c: ");
c = double.Parse(Console.ReadLine());

d = b * b - 4 * a * c;

Console.WriteLine("solution: ");

Console.WriteLine("1) Substitute the values entered in the equation " + "{0} * x^2 + {1} * x + {2} = 0 ", a, b, c);
Console.WriteLine("2) Сalculate the discriminant: d = b * b - 4 * a * c ");
Console.WriteLine("3) D = {0}*{0} - 4*{1}*{2} = {3}", b, a, c, d);

if (d > 0)
{
    x1 = (-b + Math.Sqrt(d))/2*a;
    x2 = (-b - Math.Sqrt(d))/2*a;
    s = (a * Math.Sqrt(x2) )+ (b * x1) + c;
    Console.WriteLine("{0} ; {1}",x1,x2);
    Console.WriteLine("Сheck: " + "{0} * {1} + {2} * {3} + {4} = {5} ", a, x2, b, x1, c, s);

}
else if (d == 0)
{
    x1 = (-b)/2*a;
    Console.WriteLine(x1);
}
else if (d < 0)
{
    Console.WriteLine("Since the discriminant is less than zero, then the equation has no solution.");
}

the following string returns Nan  s = (a * Math.Sqrt(x2) )+ (b * x1) + c;
Why it is Nan and not double?

A:

Why it is Nan and not double

NaN isn't a type, it's a value - and I suspect you're getting it because x2 is negative. The result of the square root of a negative number is undefined in real numbers (as opposed to complex numbers), so Math.Sqrt returns NaN ("not a number") for negative input, as documented:

d parameter                 Return value
Zero or positive            The positive square root of d.
Negative                    NaN
Equals NaN                  NaN
Equals PositiveInfinity     PositiveInfinity

double.NaN is documented as:

Represents a value that is not a number (NaN). This field is constant.
  ...
  A method or operator returns NaN when the result of an operation is undefined.

