fork(1) download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. double Pn(int n, double x)
  8. {
  9. if (n == -1) return 1;
  10. if (n == 0) return 1;
  11. return (2*n+1)*Pn(n-1,x)+ n*n*x*x*Pn(n-2,x);
  12. }
  13.  
  14. double Qn(int n, double x)
  15. {
  16. if (n==-1) return 0;
  17. if (n == 0) return 1;
  18. return (2*n+1)*Qn(n-1,x)+ n*n*x*x*Qn(n-2,x);
  19. }
  20.  
  21. double ratn(double x, int n)
  22. {
  23. return x*Qn(n,x)/Pn(n,x);
  24. }
  25.  
  26. double atan(double x, double eps)
  27. {
  28. double res = 0;
  29. for(int n=2;;n++)
  30. {
  31. double res2 = ratn(x,n);
  32. if (fabs(res-res2) < eps) return res2;
  33. res = res2;
  34. }
  35. }
  36.  
  37. int main(int argc, const char * argv[])
  38. {
  39. for(double x = 0; x < 1.5; x += 0.1)
  40. cout << setw(10) << x << setw(10) << left << atan(x) << setw(10) << left << atan(x,0.00001) << endl;
  41. }
  42.  
Success #stdin #stdout 0s 4508KB
stdin
Standard input is empty
stdout
         00         0         
0.1       0.0996687 0.0996687 
0.2       0.197396  0.197396  
0.3       0.291457  0.291457  
0.4       0.380506  0.380506  
0.5       0.463648  0.463648  
0.6       0.54042   0.540419  
0.7       0.610726  0.610726  
0.8       0.674741  0.674741  
0.9       0.732815  0.732815  
1         0.785398  0.785397  
1.1       0.832981  0.832982  
1.2       0.876058  0.87606   
1.3       0.915101  0.9151    
1.4       0.950547  0.950548