/* 
 * arquivo: exp2indif3.c
 * ---------------------
 * Dado numero real x, este programa calcula exp(x) 
 * atraves da soma dos termos da serie
 *
 * 1 + x + x^2/2! + x^3/3! + ...
 *
 * A soma 'e feita ate que a soma de um termo nao faca mais
 * diferenca.  Isto 'e, ate somar novos termos fique
 * "indiferente".
 */

#include <stdio.h>
#include <math.h>

int main()
{
  int i;
  double x, s = 0.0, t = 1.0, tmp;

  printf("Forneca o valor de x: ");
  scanf("%lf", &x);

  tmp = t;
  i = 1;
  while (s != tmp) {
    s = tmp;
    t *= x / i;
    tmp = s + t;
    i++;
  }

  printf("exp(%g) = %.20g [nossa serie]\n", x, s);
  printf("exp(%g) = %.20g [biblioteca math]\n", x, exp(x));
  return 0;
}
