#include #include #include #include "pi.h" /* 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; /* Puissances impaires négatives x^-(2n+1) de 5 et 239. */ 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; }