#include <stdio.h>

#define N	20
#define PI	3.14159265359

double factorial(int n) {		// P2
	int i;
	double f;

	for(f=1,i=2; i<=n;i++) {
		f *= i;
	}
	return f;
}

double potencia(float b, int e) {	// P3
	int i;
	double p;

	for(p=1,i=1; i<=e;i++) {
		p *= b;
	}
	return p;
}

double calc_e() {			// P4
	int i; double sum;

	for(sum=0,i=0;i<=N;i++) {
		sum += 1/factorial(i);
	}
	return sum;
}

double e_elevat_x(int x) {		// P5.3
	int i; double sum;

	for(sum=0,i=0;i<=N;i++) {
		sum += potencia(x,i)/factorial(i);
	}
	return sum;
}

double cos(double x) {			// P5.2
	int i; double sum;
	for(sum=0,i=0;i<=N;i++) {
		sum += potencia(x,2*i)/factorial(2*i)*
			potencia(-1,i);
	}
	return sum;
}

double sin(double x) {			// P5.1
	int i; double sum;
	for(sum=0,i=0;i<=N;i++) {
		sum += potencia(x,2*i+1)/
			factorial(2*i+1)*
			potencia(-1,i);
	}
	return sum;
}

main() {
	int x=10;
	printf("e = %lf\n", calc_e());
	printf("e^%d = (aprox) %lf\n", x, e_elevat_x(x));
	printf("e^%d = %lf\n", x, potencia(calc_e(),x));
	printf("sin(PI) = %lf\n", sin(PI));
	printf("cos(PI) = %lf\n", cos(PI));
}

