/* 
 * arquivo: const_e.c
 * ------------------------
 * Este programa calcula o valor da constante e
 *
 *  e = 1 + 1 / 1!  +   1 / 2!  +  1 / 3!  +  1 / 4!..
 * 
 * somando os termos da serie acima ate' que o programa 
 * atinja o limite de precisao de ponto flutuante.
 *
 * A resposta e' dada com 10 digitos significativos 
 * apos o ponto decimal. 
 *
 * OBS: as varias impressoes sao para ver o uso dos diversos formatos.
 */


#include <stdio.h>

int main()
{
    int k;
    double soma, termo;

    soma = 0.0;
    termo = 1.0;
    k = 1;

    while (soma != soma + termo) {
	soma += termo;
	termo *= 1.0 / k;
        printf("soma         = %.20g\n", soma);
        printf("soma + termo = %.20g\n", soma + termo);
        printf("k = %d\n", k);
	k++;
    }
    printf("e = %.11g\n", soma);
    printf("e = %12.10f\n", soma);
    return 0;
}
