Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h> //4.9 DM
- using namespace std;
- double leibniz()
- {
- double pi=0,x=1,y;
- for(double i=0;i<=1000000;i++)
- {
- int l=i;
- if(l%2==0)x=1;
- else x=-1;
- double val= (2*i+1);
- pi+=(x/val);
- }
- return 4*pi;
- }
- double better_leibniz()
- {
- double pi=0,x=1.0,y,val,val1,z;
- for(double i=0;i<=1000000;i++)
- {
- val=(4.0*i+1.0);
- val1=(4.0*i+3.0);
- y=(1.0/val);
- z=(1.0/val1);
- pi+=z*y;
- }
- return 8.0*pi;
- }
- double marchins()
- {
- double pi=0,x,y,val,val1,z;
- x=atan(1.0/5.0);
- y=atan(1.0/239.0);
- pi=16.0*x;
- x=4.0*y;
- pi=pi-x;
- return pi;
- }
- double david()
- {
- double pi=0,x=1,y,val,val1,z,a,b,c,d;
- for(double i=0;i<=27;i++)
- {
- x*=16;
- a=4.0/(8.0*i+1.0);
- b=2.0/(8.0*i+4.0);
- c=1.0/(8.0*i+5.0);
- c=1.0/(8.0*i+6.0);
- z=(1.0/val1);
- y=a-b-c-d;
- pi+=(y/x*16.0);
- }
- return pi;
- }
- int main()
- {
- double pi,x,y,z,w,av;
- pi=3.14159265358979323846264338327950288419716939937510;
- w=leibniz();
- x=better_leibniz();
- y=marchins();
- z=david();
- printf("normal leibniz pi= %.51f\n",w);
- printf("better leibniz pi= %.51f\n",x);
- printf("marchins pi= %.51f\n",y);
- printf("david pi= %.51f\n\n",z);
- printf("original pi= %.51f\n\n",pi);
- double p=1e9,index=1;
- if(abs(pi-w)<p) p=abs(pi-w),index=1,av=w;
- if(abs(pi-x)<p) p=abs(pi-x),index=2,av=x;
- if(abs(pi-y)<p) p=abs(pi-y),index=3,av=y;
- if(abs(pi-z)<p) p=abs(pi-z),index=4,av=z;
- if(index==1) printf("leibniz is better, pi= %.51f\n",w);
- if(index==2) printf("better leibniz is better, pi= %.51f\n",x);
- if(index==3) printf("marchins is better, pi= %.51f\n",y);
- if(index==4) printf("david is better, pi= %.51f\n",z);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement