Ich versuche gerade den Chudnovsky Algorithmus in C zu implementieren um die nachkommastellen von Pi zu rechnen. Jedoch sind die häufigsten Ergebnisse immer nan, -nan, inf oder was wie 3.827783e-647. Ich hab auch verschiene print formate verwendet um das ergebnis auszugeben, aber da kam entweder 0.0000 oder inf raus.
Wie bekomm ich es hin das eine 'normale' Zahl rauskommt, quasi 3.14159...... usw.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long double fact(long double n) {
long double fac = 1.00;
for (int i = 1; i<=n; i++) {
if (i) {
fac = fac * i;
}
}
return fac;
}
int main(int argc, char* argv[]) {
long double n, i;
long double sum, pi, term;
sum = 0.00;
pi = 0.00;
n = (atoi(argv[1]));
for (i=0; i < n; i++) {
term = (powl((-1.00), n) * fact(6.00*n) * (545140134.00*n + 13591409)) / (fact(3.00*n) * powl(fact(n), 3.00) * powl(640320.00, 3*n+3/2));
sum += term;
}
sum = sum * 12;
pi = 1 / sum;
printf("PI: %Lf\n", pi);
return 0;
}