Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4.  
  5. namespace Math {
  6.  
  7. #define MATH_PI_025 0.785375
  8. #define MATH_PI_05 1.57075
  9. #define MATH_PI 3.1415
  10. #define MATH_PI_15 4.71225
  11. #define MATH_PI_2 6.283
  12.  
  13. double abs(double a) {
  14. if(a < 0)
  15. return -a;
  16.  
  17. return a;
  18. }
  19.  
  20. double sin(double a) {
  21. a = abs(a);
  22.  
  23. while(a > MATH_PI_2)
  24. a -= MATH_PI_2;
  25.  
  26. //We map sin to first quadrant.
  27. bool minAttached = false;
  28.  
  29. if(a > MATH_PI_15) {
  30. a = MATH_PI_2 - a;
  31. minAttached = true;
  32. }
  33.  
  34. else if(a > MATH_PI) {
  35. a = a - MATH_PI;
  36. minAttached = true;
  37. }
  38.  
  39. else if(a > MATH_PI_05)
  40. a = a - 2 * (a - MATH_PI_05);
  41.  
  42. //Its accurate only to 45 deg
  43. if(a > MATH_PI_025)
  44. return cos(MATH_PI_05 - a);
  45.  
  46. //Polynomal
  47. double result = a - ((a * a * a) / 6) + ((a * a * a * a * a) / 120);
  48.  
  49. if(minAttached)
  50. return -result;
  51.  
  52. return result;
  53. }
  54.  
  55. double cos(double a) {
  56. a = abs(a);
  57.  
  58. while(a > MATH_PI_2)
  59. a -= MATH_PI_2;
  60.  
  61. //We map sin to first quadrant.
  62. bool minAttached = false;
  63.  
  64. if(a > MATH_PI_15)
  65. a = MATH_PI_2 - a;
  66.  
  67. else if(a > MATH_PI) {
  68. a = a - MATH_PI;
  69. minAttached = true;
  70. }
  71.  
  72. else if(a > MATH_PI_05) {
  73. a = a - 2 * (a - MATH_PI_05);
  74. minAttached = true;
  75. }
  76.  
  77. //It's accurate only to 45 deg
  78. if(a > MATH_PI_025)
  79. return sin(MATH_PI_05 - a);
  80.  
  81. //Polynomal
  82. double result = 1 - ((a * a) / 2) + ((a * a * a * a) / 24) - ((a * a * a * a * a * a) / 720);
  83.  
  84. if(minAttached)
  85. return -result;
  86.  
  87. return result;
  88. }
  89.  
  90. double sqrt(double a)
  91. {
  92.  
  93. }
  94.  
  95. }
  96.  
  97. int main(void)
  98. {
  99. std::cout << std::fixed << std::setprecision(8) << std::sin(MATH_PI) << " : " << Math::sin(MATH_PI) << std::endl;
  100. std::cout << std::fixed << std::setprecision(8) << std::sin(MATH_PI * 2) << " : " << Math::sin(MATH_PI * 2) << std::endl;
  101. std::cout << std::fixed << std::setprecision(8) << std::sin(MATH_PI * 0.45664) << " : " << Math::sin(MATH_PI * 0.45664) << std::endl;
  102. std::cout << std::fixed << std::setprecision(8) << std::cos(MATH_PI) << " : " << Math::cos(MATH_PI) << std::endl;
  103. std::cout << std::fixed << std::setprecision(8) << std::cos(MATH_PI * 2) << " : " << Math::cos(MATH_PI * 2) << std::endl;
  104. std::cout << std::fixed << std::setprecision(8) << std::cos(MATH_PI * 0.45664) << " : " << Math::cos(MATH_PI * 0.45664) << std::endl;
  105.  
  106. return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement