Browse Source

add tests for edge cases and add fix for log function

master
fdai7848 11 months ago
parent
commit
fa9fb28309
  1. 2
      src/logarithmus.c
  2. 2
      src/logarithmus.h
  3. 19
      test/test_logarithmus.c

2
src/logarithmus.c

@ -5,7 +5,7 @@
#include "exponent.h" #include "exponent.h"
double logX(double b, double a){ double logX(double b, double a){
if(b == 1.0 || b < 0.0){
if(b == 1.0 || b <= 0.0 || a <= 0.0){
return -1.0; return -1.0;
} }
return(logN(a, 0.000001)/logN(b, 0.000001)); return(logN(a, 0.000001)/logN(b, 0.000001));

2
src/logarithmus.h

@ -3,5 +3,7 @@
double logN(double x, double eps); double logN(double x, double eps);
double logX(double b, double a); double logX(double b, double a);
double logDec(double a);
double logBin(double a);
#endif // logarithmus.h #endif // logarithmus.h

19
test/test_logarithmus.c

@ -37,5 +37,24 @@ void test_ln_with_zero_and_negative_numbers(void){
TEST_ASSERT_EQUAL_DOUBLE(-1.0, r3); TEST_ASSERT_EQUAL_DOUBLE(-1.0, r3);
} }
void test_logarithmic_function_with_edge_cases(void){
double r1, r2, r3, r4;
r1 = logX(0, 10);
r2 = logX(-1.0, 9);
r3 = logX(1, 18);
r4 = logX(3, 0);
printf("%lf\n", r1);
printf("%lf\n", r2);
printf("%lf\n", r3);
printf("%lf\n", r4);
TEST_ASSERT_EQUAL_DOUBLE(-1.0, r1);
TEST_ASSERT_EQUAL_DOUBLE(-1.0, r2);
TEST_ASSERT_EQUAL_DOUBLE(-1.0, r3);
TEST_ASSERT_EQUAL_DOUBLE(-1.0, r4);
}
#endif // TEST #endif // TEST
Loading…
Cancel
Save