Advertisement
Guest User

Untitled

a guest
Apr 17th, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. long long factorial(long n)
  2. {
  3. return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
  4. }
  5.  
  6. double calculateCoefficient(int m, int n, long long factor)
  7. {
  8. int firstTerm = m % 2 == 0 ? 1 : -1;
  9.  
  10. long long secondTermNumerator = factorial(n);
  11. long long secondTermDenominator = factorial(2 * n);
  12.  
  13. long long thirdTermNumerator = factorial(2 * n - 2 * m);
  14. long long thirdTermDenominator = factorial(m) * factorial(n - m) * factorial(n - 2 * m);
  15. long long thirdTerm = thirdTermNumerator / thirdTermDenominator;
  16.  
  17. long long numerator = factor * secondTermNumerator * thirdTerm; // 128 is the max integral denominator up to P8
  18. long long denominator = secondTermDenominator;
  19.  
  20.  
  21. double resultDouble = firstTerm * (double)numerator / (double)denominator;
  22.  
  23. return resultDouble;
  24. }
  25.  
  26. vector<double> calculateCoefficients(int n, long long factor)
  27. {
  28. int M;
  29. if (n % 2 == 0){ M = n / 2; }
  30. else{ M = (n - 1) / 2; }
  31.  
  32. vector<double> coeff(M + 1);
  33. for (int m = 0; m <= M; m++)
  34. {
  35. coeff[m] = calculateCoefficient(m, n, factor);
  36. }
  37. return coeff;
  38. }
  39.  
  40. double poly(int n, double x, long long factor)
  41. {
  42. int M;
  43. if (n % 2 == 0){ M = n / 2; }
  44. else{ M = (n - 1) / 2; }
  45. vector<double> coeff(M + 1);
  46. for (int m = 0; m <= M; m++)
  47. {
  48. coeff[m] = calculateCoefficient(m, n, factor);
  49. }
  50.  
  51. double y = 0.0;
  52. for (int i = 0; i <= M; i++)
  53. {
  54. y += pow(x, n - 2 * i)*coeff[i];
  55. }
  56. return y;
  57. }
  58.  
  59. int calculateNormalizationFactor(int n)
  60. {
  61. if (n == 0 || n == 1) return 1;
  62. return (2 * n - 1) * calculateNormalizationFactor(n - 1);
  63. }
  64.  
  65. int signOfValue(double val)
  66. {
  67. // http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c
  68. return (val > 0) - (val < 0);
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement