title: Why this sin(x) function in C# return NaN instead of a number
body: <p>I have this function wrote in C# to calc the sin(x). But when I try with x = 3.14, the printed result of sin X is NaN (not a number),
  but when debugging, its is very near to 0.001592653
  The value is not too big, neither too small. So how could the NaN appear here?</p>
  
  <pre><code>static double pow(double x, int mu)
          {
              if (mu == 0)
                  return 1;
              if (mu == 1)
                  return x;
              return x * pow(x, mu - 1);
          }
  
          static double fact(int n)
          {
              if (n == 1 || n == 0)
                  return 1;
              return n * fact(n - 1);
          }
  
          static double sin(double x)
          {
              var s = x;
  
              for (int i = 1; i &lt; 1000; i++)
              {
                  s += pow(-1, i) * pow(x, 2 * i + 1) / fact(2 * i + 1);
              }
              return s;
          }
  
          public static void Main(String[] param)
          {
              try
              {
                  while (true)
                  {
                      Console.WriteLine("Enter x value: ");
                      double x = double.Parse(Console.ReadLine());
                      var sinX = sin(x);
                      Console.WriteLine("Sin of {0} is {1}: " , x , sinX);
  
                      Console.ReadLine();
                  }
              }
              catch (Exception ex)
              {
                  Console.WriteLine(ex.Message);
              }
          }
  </code></pre>