Some time ago someone asked me to write my own implementation of the hyperbolic cosine (http://pl.wikipedia.org/wiki/Funkcje_hiperboliczne) based on the Taylor series.
A quick proof-of-concept version:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double silnia (double n){
if (n <= 1) return 1;
else return silnia(n - 1)*n;
}
double mycosh(double z){
double result = 1;
int ilosc_wyr_ciagu = 30;
int i;
for (i = 1; i < ilosc_wyr_ciagu; i++){
result += pow(z, 2*i) / silnia(2*i);
}
return result;
}
int main(int argc, char *argv[]) {
double arg, c1, c2, blad;
arg = 3.113408;
c1 = cosh(arg);
c2 = mycosh(arg);
blad = abs(c2-c1)/c2;
printf(" z=%f; cosh(z)=%f; mycosh(z)=%f; blad=%.90f \n", arg, c1, c2, blad);
system("PAUSE");
return 0;
}