fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. double bernoulli(int n)
  9. {
  10. static vector<double> b{1.0, -0.5, 1.0/6.0, 0.0};
  11. if (n < b.size()) return b[n];
  12. if (n%2 && n > 2) return 0;
  13. if (n < 20)
  14. {
  15. double sum = 0;
  16. double a = -1;
  17. for(int k = 1; k <= n; ++k)
  18. {
  19. a = a*(n-k+1)/(k+1);
  20. sum += a*bernoulli(n-k);
  21. }
  22. b.resize(n+1);
  23. b[n] = sum;
  24. return sum;
  25. }
  26. else
  27. {
  28. const double pi = 3.14159265358, e = 2.718281828459045;
  29. return ((n/2%2)*2-1)*4*pi*pow(n/(2.*pi*e),0.5+n)*
  30. exp(0.5+1./(12.*n)-1./(360.*n*n*n)+1./(1260.*n*n*n*n*n));
  31. }
  32. }
  33.  
  34. double series(double x, double eps)
  35. {
  36. double sum = 1, a = 1, z = 1;
  37. for(int n = 1; abs(z) > eps; ++n)
  38. {
  39. a = -a * 2*x*x/n/(2*n-1);
  40. z = a * bernoulli(2*n);
  41. sum += z;
  42. }
  43. return sum/x;
  44. }
  45.  
  46. int main()
  47. {
  48.  
  49. for(double x = -3.1; x < 3.11; x += 0.05)
  50. {
  51. double y = series(x,1e-9);
  52. cout
  53. << setw(5) << x << setw(10) << 1/tan(x)
  54. << setw(10) << y << endl;
  55. }
  56. }
  57.  
Success #stdin #stdout 0s 4548KB
stdin
Standard input is empty
stdout
 -3.1   24.0288      -nan
-3.05   10.8874      -nan
   -3   7.01525      -nan
-2.95   5.15539      -nan
 -2.9   4.05835      -nan
-2.85   3.33169   3.33169
 -2.8    2.8127    2.8127
-2.75   2.42179   2.42179
 -2.7   2.11538   2.11538
-2.65   1.86764   1.86764
 -2.6   1.66224   1.66224
-2.55   1.48839   1.48839
 -2.5   1.33865   1.33865
-2.45    1.2077    1.2077
 -2.4   1.09169   1.09169
-2.35  0.987687  0.987687
 -2.3  0.893484  0.893484
-2.25  0.807345  0.807345
 -2.2  0.727896  0.727896
-2.15  0.654031  0.654031
 -2.1  0.584848  0.584848
-2.05  0.519599  0.519599
   -2  0.457658  0.457658
-1.95   0.39849   0.39849
 -1.9  0.341635  0.341635
-1.85  0.286692  0.286692
 -1.8  0.233304  0.233304
-1.75  0.181147  0.181147
 -1.7  0.129927  0.129927
-1.65 0.0793697 0.0793697
 -1.6  0.029212  0.029212
-1.55-0.0207993-0.0207993
 -1.5-0.0709148-0.0709148
-1.45 -0.121387 -0.121387
 -1.4 -0.172477 -0.172477
-1.35 -0.224456 -0.224456
 -1.3 -0.277616 -0.277616
-1.25 -0.332273 -0.332273
 -1.2  -0.38878  -0.38878
-1.15 -0.447528 -0.447528
 -1.1 -0.508968 -0.508968
-1.05  -0.57362  -0.57362
   -1 -0.642093 -0.642093
-0.95 -0.715112 -0.715112
 -0.9 -0.793551 -0.793551
-0.85 -0.878478 -0.878478
 -0.8 -0.971215 -0.971215
-0.75  -1.07343  -1.07343
 -0.7  -1.18724  -1.18724
-0.65  -1.31544  -1.31544
 -0.6   -1.4617   -1.4617
-0.55  -1.63104  -1.63104
 -0.5  -1.83049  -1.83049
-0.45  -2.07016  -2.07016
 -0.4  -2.36522  -2.36522
-0.35  -2.73951  -2.73951
 -0.3  -3.23273  -3.23273
-0.25  -3.91632  -3.91632
 -0.2  -4.93315  -4.93315
-0.15  -6.61659  -6.61659
 -0.1  -9.96664  -9.96664
-0.05  -19.9833  -19.9833
-2.73392e-15-3.65775e+14-3.65775e+14
 0.05   19.9833   19.9833
  0.1   9.96664   9.96664
 0.15   6.61659   6.61659
  0.2   4.93315   4.93315
 0.25   3.91632   3.91632
  0.3   3.23273   3.23273
 0.35   2.73951   2.73951
  0.4   2.36522   2.36522
 0.45   2.07016   2.07016
  0.5   1.83049   1.83049
 0.55   1.63104   1.63104
  0.6    1.4617    1.4617
 0.65   1.31544   1.31544
  0.7   1.18724   1.18724
 0.75   1.07343   1.07343
  0.8  0.971215  0.971215
 0.85  0.878478  0.878478
  0.9  0.793551  0.793551
 0.95  0.715112  0.715112
    1  0.642093  0.642093
 1.05   0.57362   0.57362
  1.1  0.508968  0.508968
 1.15  0.447528  0.447528
  1.2   0.38878   0.38878
 1.25  0.332273  0.332273
  1.3  0.277616  0.277616
 1.35  0.224456  0.224456
  1.4  0.172477  0.172477
 1.45  0.121387  0.121387
  1.5 0.0709148 0.0709148
 1.55 0.0207993 0.0207993
  1.6 -0.029212 -0.029212
 1.65-0.0793697-0.0793697
  1.7 -0.129927 -0.129927
 1.75 -0.181147 -0.181147
  1.8 -0.233304 -0.233304
 1.85 -0.286692 -0.286692
  1.9 -0.341635 -0.341635
 1.95  -0.39849  -0.39849
    2 -0.457658 -0.457658
 2.05 -0.519599 -0.519599
  2.1 -0.584848 -0.584848
 2.15 -0.654031 -0.654031
  2.2 -0.727896 -0.727896
 2.25 -0.807345 -0.807345
  2.3 -0.893484 -0.893484
 2.35 -0.987687 -0.987687
  2.4  -1.09169  -1.09169
 2.45   -1.2077   -1.2077
  2.5  -1.33865  -1.33865
 2.55  -1.48839  -1.48839
  2.6  -1.66224  -1.66224
 2.65  -1.86764  -1.86764
  2.7  -2.11538  -2.11538
 2.75  -2.42179  -2.42179
  2.8   -2.8127   -2.8127
 2.85  -3.33169  -3.33169
  2.9  -4.05835      -nan
 2.95  -5.15539      -nan
    3  -7.01525      -nan
 3.05  -10.8874      -nan
  3.1  -24.0288      -nan