#include "stdio.h"
#include "math.h"
#define MAX_STEPS 150

double approx(int angle, int steps) {
	int i;
	double sum = 0;
	double zaehler = 1;
	double nenner = 1;
	double phi_halbe_rad = angle * M_PI / 360;
	double sinus = sinl(phi_halbe_rad);
	for(i = 1; i <= steps; i++) {
		zaehler *= i;
		nenner *= (i+1);
		sum += powl(zaehler / nenner, 2) * powl(sinus, 2 * i); 
	}
	return(sum);
}


int main(void) {
	printf("Doing %d steps.\n", MAX_STEPS);
	printf("  5°: %f\n", approx(  5, MAX_STEPS));
	printf(" 10°: %f\n", approx( 10, MAX_STEPS));
	printf(" 15°: %f\n", approx( 15, MAX_STEPS));
	printf(" 20°: %f\n", approx( 20, MAX_STEPS));
	printf(" 25°: %f\n", approx( 25, MAX_STEPS));
	printf(" 30°: %f\n", approx( 30, MAX_STEPS));
	printf(" 35°: %f\n", approx( 35, MAX_STEPS));
	printf(" 40°: %f\n", approx( 40, MAX_STEPS));
	printf(" 45°: %f\n", approx( 45, MAX_STEPS));
	printf(" 50°: %f\n", approx( 50, MAX_STEPS));
	printf(" 55°: %f\n", approx( 55, MAX_STEPS));
	printf(" 60°: %f\n", approx( 60, MAX_STEPS));
	printf(" 70°: %f\n", approx( 70, MAX_STEPS));
	printf(" 80°: %f\n", approx( 80, MAX_STEPS));
	printf(" 90°: %f\n", approx( 90, MAX_STEPS));
	printf("100°: %f\n", approx(100, MAX_STEPS));
	printf("110°: %f\n", approx(110, MAX_STEPS));
	printf("120°: %f\n", approx(120, MAX_STEPS));
	printf("130°: %f\n", approx(130, MAX_STEPS));
	printf("140°: %f\n", approx(140, MAX_STEPS));
	return(0);
}
