#include #include #include #include /* Calcule la valeur de Pi avec une precision superieure ou egale a 0.1^precision en utilisant la limite de la somme pour i variant entre 0 et l'infini de (-1^i / 2i+1) * [4 * (1/5)^(2i+1) - (1/239)^(2i+1)] qui est egale a Pi/4. A chaque iteration pour le calcul de la somme, on conserve la puissance negative impaire courante de 5 et 239. Pour la puissance de -1, on utilise la parite de l'iteration. */ double pi(int precision) { double somme = 0.0 ; double delta=1.0; double puiss_5 = 1.0 /5.0 ; double puiss_239 = 1.0/ 239.0; int i; assert(precision > 0); for (i = 0; fabs(delta) > pow(10.0, -precision); i++) {delta = 1.0 / (2 * i + 1) * (4 * puiss_5 - puiss_239) ; somme += (i%2==0) ? delta : -delta; puiss_5 /= 25. ;puiss_239 /= 57121. ; } return somme * 4; } int main (int argc, char * argv[]) { printf( "Pi = %f\n", pi(3)); exit( EXIT_SUCCESS); }