You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.9 KiB

  1. #ifdef TEST
  2. #include "unity.h"
  3. #include "logarithmus.h"
  4. #include "exponent.h"
  5. #include "reihen.h"
  6. #include "util.h"
  7. void setUp(void)
  8. {
  9. }
  10. void tearDown(void)
  11. {
  12. }
  13. void test_ln_with_positive_number(void){
  14. double r1, r2, r3;
  15. r1 = logN(1.0);
  16. r2 = logN(10.0);
  17. r3 = logN(2.5);
  18. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0, r1);
  19. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 2.302585, r2);
  20. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0.916290, r3);
  21. }
  22. void test_ln_with_zero_and_negative_numbers(void){
  23. double r1, r2, r3;
  24. r1 = logN(0.0);
  25. r2 = logN(-1.0);
  26. r3 = logN(-2.5);
  27. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r1);
  28. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r2);
  29. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r3);
  30. }
  31. void test_logarithmic_function_with_edge_cases(void){
  32. double r1, r2, r3, r4;
  33. r1 = logX(0, 10.0);
  34. r2 = logX(-1.0, 9.0);
  35. r3 = logX(1.0, 18.0);
  36. r4 = logX(3.0, 0.0);
  37. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r1);
  38. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r2);
  39. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r3);
  40. TEST_ASSERT_EQUAL_DOUBLE(-1.0, r4);
  41. }
  42. void test_logarithmic_function_with_integers(void){
  43. double r1, r2, r3, r4;
  44. r1 = logX(0.5, 48.0);
  45. r2 = logX(2.0, 8.0);
  46. r3 = logX(3.2, 18.0);
  47. r4 = logX(6.0, 36.0);
  48. TEST_ASSERT_DOUBLE_WITHIN(0.000001, -5.584962, r1);
  49. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 3.0, r2);
  50. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 2.484950, r3);
  51. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 2.0, r4);
  52. }
  53. void test_logarithmic_function_with_decimals(void){
  54. double r1, r2, r3, r4;
  55. r1 = logX(0.1289, 26.5);
  56. r2 = logX(7.64, 8.314);
  57. r3 = logX(3.0, 2.4587);
  58. r4 = logX(9.0, 94.6584);
  59. TEST_ASSERT_DOUBLE_WITHIN(0.000001, -1.599607, r1);
  60. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 1.041577, r2);
  61. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0.818881, r3);
  62. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 2.070919, r4);
  63. }
  64. void test_logarithmic_function_to_base_10(void){
  65. double r1, r2, r3, r4, r5, r6;
  66. r1 = log10(100.0);
  67. r2 = log10(100.6479);
  68. r3 = log10(10.587);
  69. r4 = log10(4.341);
  70. r5 = log10(0.34979);
  71. r6 = log10(1.0);
  72. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 2.0, r1);
  73. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 2.002804, r2);
  74. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 1.024772, r3);
  75. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0.637589, r4);
  76. TEST_ASSERT_DOUBLE_WITHIN(0.000001, -0.456192, r5);
  77. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0.0, r6);
  78. }
  79. void test_logarithmic_function_to_base_2(void){
  80. double r1, r2, r3, r4, r5, r6;
  81. r1 = log2(1024.0);
  82. r2 = log2(1024.8742);
  83. r3 = log2(900.587);
  84. r4 = log2(78.341);
  85. r5 = log2(0.34979);
  86. r6 = log2(1.0);
  87. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 10.0, r1);
  88. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 10.001231, r2);
  89. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 9.814721, r3);
  90. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 6.291695, r4);
  91. TEST_ASSERT_DOUBLE_WITHIN(0.000001, -1.515439, r5);
  92. TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0.0, r6);
  93. }
  94. #endif // TEST