#include <stdio.h>
#include <stdlib.h>
#include "math.h"
#include "gmp.h"
int main(int argc, char *argv[]){
int P=1024;
mpf_t a,pi,delta;
int x = 1;
int y = 3;
int it = 10;
if(argc>=2){
P = atoi(argv[1]);
P = P>0?P:1024;
}
mpf_set_default_prec(ceil(P*log2(10)) + 64);
mpf_inits(a,pi,delta,NULL);
mpf_set_ui(a,2);
mpf_set_ui(pi,0);
mpf_set_ui(delta,1);
for(it=0;it<P;it++){
mpf_div_ui(delta,delta,10);
}
while(mpf_cmp(a,delta) >0){
mpf_add(pi,pi,a);
mpf_mul_ui(a,a,x++);
mpf_div_ui(a,a,y);
y+=2;
}
mpf_out_str(stdout,10,P,pi);
printf("\n");
mpf_clears(a,pi,delta,NULL);
}