ext_scalar_reciprocal.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #include <glm/ext/scalar_reciprocal.hpp>
  2. #include <glm/ext/scalar_relational.hpp>
  3. #include <glm/ext/scalar_constants.hpp>
  4. static int test_sec()
  5. {
  6. int Error = 0;
  7. Error += glm::equal(glm::sec(0.0), 1.0, 0.01) ? 0 : 1;
  8. Error += glm::equal(glm::sec(glm::pi<double>() * 2.0), 1.0, 0.01) ? 0 : 1;
  9. Error += glm::equal(glm::sec(glm::pi<double>() * -2.0), 1.0, 0.01) ? 0 : 1;
  10. Error += glm::equal(glm::sec(glm::pi<double>() * 1.0), -1.0, 0.01) ? 0 : 1;
  11. Error += glm::equal(glm::sec(glm::pi<double>() * -1.0), -1.0, 0.01) ? 0 : 1;
  12. return Error;
  13. }
  14. static int test_csc()
  15. {
  16. int Error = 0;
  17. double const a = glm::csc(glm::pi<double>() * 0.5);
  18. Error += glm::equal(a, 1.0, 0.01) ? 0 : 1;
  19. double const b = glm::csc(glm::pi<double>() * -0.5);
  20. Error += glm::equal(b, -1.0, 0.01) ? 0 : 1;
  21. return Error;
  22. }
  23. static int test_cot()
  24. {
  25. int Error = 0;
  26. double const a = glm::cot(glm::pi<double>() * 0.5);
  27. Error += glm::equal(a, 0.0, 0.01) ? 0 : 1;
  28. double const b = glm::cot(glm::pi<double>() * -0.5);
  29. Error += glm::equal(b, 0.0, 0.01) ? 0 : 1;
  30. return Error;
  31. }
  32. static int test_asec()
  33. {
  34. int Error = 0;
  35. Error += glm::equal(glm::asec(100000.0), glm::pi<double>() * 0.5, 0.01) ? 0 : 1;
  36. Error += glm::equal(glm::asec(-100000.0), glm::pi<double>() * 0.5, 0.01) ? 0 : 1;
  37. return Error;
  38. }
  39. static int test_acsc()
  40. {
  41. int Error = 0;
  42. Error += glm::equal(glm::acsc(100000.0), 0.0, 0.01) ? 0 : 1;
  43. Error += glm::equal(glm::acsc(-100000.0), 0.0, 0.01) ? 0 : 1;
  44. return Error;
  45. }
  46. static int test_acot()
  47. {
  48. int Error = 0;
  49. Error += glm::equal(glm::acot(100000.0), 0.0, 0.01) ? 0 : 1;
  50. Error += glm::equal(glm::acot(-100000.0), glm::pi<double>(), 0.01) ? 0 : 1;
  51. Error += glm::equal(glm::acot(0.0), glm::pi<double>() * 0.5, 0.01) ? 0 : 1;
  52. return Error;
  53. }
  54. static int test_sech()
  55. {
  56. int Error = 0;
  57. Error += glm::equal(glm::sech(100000.0), 0.0, 0.01) ? 0 : 1;
  58. Error += glm::equal(glm::sech(-100000.0), 0.0, 0.01) ? 0 : 1;
  59. Error += glm::equal(glm::sech(0.0), 1.0, 0.01) ? 0 : 1;
  60. return Error;
  61. }
  62. static int test_csch()
  63. {
  64. int Error = 0;
  65. Error += glm::equal(glm::csch(100000.0), 0.0, 0.01) ? 0 : 1;
  66. Error += glm::equal(glm::csch(-100000.0), 0.0, 0.01) ? 0 : 1;
  67. return Error;
  68. }
  69. static int test_coth()
  70. {
  71. int Error = 0;
  72. double const a = glm::coth(100.0);
  73. Error += glm::equal(a, 1.0, 0.01) ? 0 : 1;
  74. double const b = glm::coth(-100.0);
  75. Error += glm::equal(b, -1.0, 0.01) ? 0 : 1;
  76. return Error;
  77. }
  78. static int test_asech()
  79. {
  80. int Error = 0;
  81. double const a = glm::asech(1.0);
  82. Error += glm::equal(a, 0.0, 0.01) ? 0 : 1;
  83. return Error;
  84. }
  85. static int test_acsch()
  86. {
  87. int Error = 0;
  88. Error += glm::acsch(0.01) > 1.0 ? 0 : 1;
  89. Error += glm::acsch(-0.01) < -1.0 ? 0 : 1;
  90. Error += glm::equal(glm::acsch(100.0), 0.0, 0.01) ? 0 : 1;
  91. Error += glm::equal(glm::acsch(-100.0), 0.0, 0.01) ? 0 : 1;
  92. return Error;
  93. }
  94. static int test_acoth()
  95. {
  96. int Error = 0;
  97. double const a = glm::acoth(1.00001);
  98. Error += a > 6.0 ? 0 : 1;
  99. double const b = glm::acoth(-1.00001);
  100. Error += b < -6.0 ? 0 : 1;
  101. double const c = glm::acoth(10000.0);
  102. Error += glm::equal(c, 0.0, 0.01) ? 0 : 1;
  103. double const d = glm::acoth(-10000.0);
  104. Error += glm::equal(d, 0.0, 0.01) ? 0 : 1;
  105. return Error;
  106. }
  107. int main()
  108. {
  109. int Error = 0;
  110. Error += test_sec();
  111. Error += test_csc();
  112. Error += test_cot();
  113. Error += test_asec();
  114. Error += test_acsc();
  115. Error += test_acot();
  116. Error += test_sech();
  117. Error += test_csch();
  118. Error += test_coth();
  119. Error += test_asech();
  120. Error += test_acsch();
  121. Error += test_acoth();
  122. return Error;
  123. }