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

double Expo_Einheitsintervall(double x)
{
	double ergebnis=1.0;
	int zaehler=17;
  
	for(zaehler=17; zaehler>0; zaehler--)
		ergebnis=ergebnis*x/(double)(zaehler)+1.0;
  
	return(ergebnis);
  
}

/* --------------------------------*/

double Expo(double x)
{
	double ergebnis=1.0, euler=Expo_Einheitsintervall(1.0);
  
	while(x>1.0)
	{
		x=x-1.0;
		ergebnis=ergebnis*euler;
	}
  
	while(x<0.0)
	{
		x=x+1.0;
		ergebnis=ergebnis/euler;
	} 
  
	return(ergebnis*Expo_Einheitsintervall(x));
  
  
}

/* --------------------------------*/


int main(void)
{
	double zahl, ergebnis;
 
	printf("Dieses Programm berechnet die Exponentialfunktion fuer von Ihnen eingegebene Argumente.\n\
Geben Sie bitte Ihre Zahl ein: "); 
 
	scanf("%lf",&zahl);
     
	printf("Die Exponentialfunktion von %lf lautet:\nTaylorpolynom mit 18 Termen auf [0,1],\
kombiniert mit Funktionalgleichung:\n%.14lf\
\nIn math.h implementierte exp-Funktion:\n%.14lf\n", zahl, Expo(zahl), exp(zahl)); 
     
 
	return(0);
  
}
