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.
105 lines
2.4 KiB
105 lines
2.4 KiB
#ifdef TEST
|
|
|
|
#include "unity.h"
|
|
|
|
#include "exponent.h"
|
|
#include "logarithmus.h"
|
|
#include "reihen.h"
|
|
|
|
void setUp(void)
|
|
{
|
|
}
|
|
|
|
void tearDown(void)
|
|
{
|
|
}
|
|
|
|
void test_DoubleBase_ForPositiveExponent(void){
|
|
int r1, r2, r3;
|
|
|
|
r1 = p(2.0, -2.0);
|
|
r2 = p(3.0, -3.0);
|
|
r3 = p(4.0, 5.0);
|
|
|
|
TEST_ASSERT_EQUAL_INT(4.0, r1);
|
|
TEST_ASSERT_EQUAL_INT(-27.0, r2);
|
|
TEST_ASSERT_EQUAL_INT(625.0, r3);
|
|
}
|
|
|
|
void test_DoubleBase_ForNegativeExponent(void){
|
|
float r1, r2, r3;
|
|
|
|
r1 = powerD(-1.0, 2.0);
|
|
r2 = powerD(-3.0, -3.0);
|
|
r3 = powerD(-2.0, -2.0);
|
|
|
|
TEST_ASSERT_EQUAL_FLOAT(0.5, r1);
|
|
TEST_ASSERT_EQUAL_FLOAT(-0.0370370373, r2);
|
|
TEST_ASSERT_EQUAL_FLOAT(0.25, r3);
|
|
}
|
|
|
|
void test_DoubleBase_for_positive_decimal_exponent(void){
|
|
float r1, r2, r3;
|
|
|
|
r1 = powerD(0.45, 3.0);
|
|
r2 = powerD(0.5, 9.0);
|
|
r3 = powerD(0.5, 2.0);
|
|
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 1.639474, r1);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 3.0, r2);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 1.414213, r3);
|
|
}
|
|
|
|
void test_DoubleDecimalBase_for_positive_decimal_exponent(void){
|
|
float r1, r2, r3;
|
|
|
|
r1 = powerD(0.31, 0.413);
|
|
r2 = powerD(0.5, 3.13432);
|
|
r3 = powerD(0.124, 10.1231);
|
|
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.760229, r1);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 1.770401, r2);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 1.332474, r3);
|
|
}
|
|
|
|
void test_DoubleBase_for_negative_decimal_exponent(void){
|
|
float r1, r2, r3;
|
|
|
|
r1 = powerD(-0.125, 3.0);
|
|
r2 = powerD(-0.5, 2.0);
|
|
r3 = powerD(-0.12923, 10.0);
|
|
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.871685, r1);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.707106, r2);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.742625, r3);
|
|
}
|
|
|
|
void test_DoubleDecimalBase_for_negative_decimal_exponent(void){
|
|
float r1, r2, r3;
|
|
|
|
r1 = powerD(-0.5, 6.2315);
|
|
r2 = powerD(-0.1937, 9.2309);
|
|
r3 = powerD(-2.2145, 22.9983);
|
|
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.400593, r1);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.650177, r2);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.000964, r3);
|
|
}
|
|
|
|
void test_exponent_edge_case(void){
|
|
float r1, r2, r3, r4, r5;
|
|
|
|
r1 = powerD(0, 2);
|
|
r2 = powerD(0, 0);
|
|
r3 = powerD(2, 0);
|
|
r4 = powerD(-3, 0);
|
|
r5 = powerD(0.5, -3);
|
|
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 1.0, r1);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 1.0, r2);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, 0.0, r3);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, -1.0, r4);
|
|
TEST_ASSERT_DOUBLE_WITHIN(0.0001, -1.0, r5);
|
|
}
|
|
|
|
#endif // TEST
|