diff --git a/src/exponent.c b/src/exponent.c index b37deab..03f4607 100644 --- a/src/exponent.c +++ b/src/exponent.c @@ -16,7 +16,7 @@ double expI(double e, double num){ } double expIN(double e, double num){ - if(e - ((int) e) < 0.0001 || e - ((int) e) > -0.0001){ + if(e - ((int) e) < 0.000001 || e - ((int) e) > -0.000001){ if(e>0){ return expI(e, num); } @@ -56,6 +56,9 @@ double absD(double x){ } double logN(double x, double eps){ + if(x <= 0){ + return -1.0; + } double yn = x - 1.0; double yn1 = yn; diff --git a/test/test_exponent.c b/test/test_exponent.c index 8545529..8bd76c9 100644 --- a/test/test_exponent.c +++ b/test/test_exponent.c @@ -85,6 +85,21 @@ void test_ln_with_positive_number(void){ TEST_ASSERT_DOUBLE_WITHIN(0.000001, 0.916290, r3); } +void test_ln_with_zero_and_negative_numbers(void){ + double r1, r2, r3; + + r1 = logN(0.0, 0.000001); + r2 = logN(-1.0, 0.000001); + r3 = logN(-2.5, 0.000001); + + printf("Result 1: %lf\n", r1); + printf("Result 2: %lf\n", r2); + printf("Result 3: %lf\n", r3); + + TEST_ASSERT_EQUAL_DOUBLE(-1.0, r1); + TEST_ASSERT_EQUAL_DOUBLE(-1.0, r2); + TEST_ASSERT_EQUAL_DOUBLE(-1.0, r3); +} #endif // TEST \ No newline at end of file