Dans le cadre d'un test d'un cluster de deux machines virtuelles, je souhaite leur faire exécuter un petit calcul: le nombre PI
j'ai donc le code suivant:
Code:#include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> inline double f(double x) { return (4.0/(1.0+x*x)); } int main(int argc, char **argv) { long long int num_trap = 0; long long int i = 0; double x = 0; double h = 0; double sum = 0; /* En cas de probleme, le programme s arete en 60 sec */ alarm(600); num_trap = atoll(argv[1]); printf("Nombre de trapezes: %Ld\n", num_trap); h = 1 / (long double)num_trap; h = 0; sum = 0; for(i=2;i<num_trap;i++) { sum += f(x)*h; x += h; } sum += (f(0)+(f(1)))*h/((long double)2); printf("pi=%.12Ld\n", sum); return 0; }
Mais voilà le problème, le résultat du calcul est toujours:
Code:NODE1:~# time ./pi-seq 10000000 Nombre de trapezes: 1000000 pi=000000000000 real 0m3.475s user 0m3.496s sys 0m0.004s NODE1:~#
Il me semblait que PI commencait par 3,14
N'étant pas vraiment un développeur (je suis plus à l'aise avec les réseaux) je me tourne vers les spécialistes.
A quel endroit ais je fait une erreure ?
J'ai pas mal bricoler mais je ne trouve pas ma faute.
D'avance merci.
-----