1 | /* |
2 | * mathutil_unit_test.hpp |
3 | * |
4 | * Created on: Dec 23, 2015 |
5 | * Author: i-bird |
6 | */ |
7 | |
8 | #ifndef OPENFPM_DATA_SRC_UTIL_MATHUTIL_UNIT_TEST_HPP_ |
9 | #define OPENFPM_DATA_SRC_UTIL_MATHUTIL_UNIT_TEST_HPP_ |
10 | |
11 | #include "util/mathutil.hpp" |
12 | |
13 | BOOST_AUTO_TEST_SUITE( mathutil_test ) |
14 | |
15 | BOOST_AUTO_TEST_CASE( math ) |
16 | { |
17 | //! [factorial usage] |
18 | |
19 | size_t f = openfpm::math::factorial(0); |
20 | BOOST_REQUIRE_EQUAL(f,1ul); |
21 | |
22 | f = openfpm::math::factorial(1); |
23 | BOOST_REQUIRE_EQUAL(f,1ul); |
24 | |
25 | f = openfpm::math::factorial(7); |
26 | BOOST_REQUIRE_EQUAL(f,5040ul); |
27 | |
28 | //! [factorial usage] |
29 | |
30 | //! [Combination usage] |
31 | |
32 | f = openfpm::math::C(7,0); |
33 | BOOST_REQUIRE_EQUAL(f,1ul); |
34 | |
35 | f = openfpm::math::C(7,7); |
36 | BOOST_REQUIRE_EQUAL(f,1ul); |
37 | |
38 | f = openfpm::math::C(7,2); |
39 | BOOST_REQUIRE_EQUAL(f,21ul); |
40 | |
41 | //! [Combination usage] |
42 | |
43 | //! [round to big pow] |
44 | |
45 | f = openfpm::math::round_big_2(3); |
46 | BOOST_REQUIRE_EQUAL(f,4ul); |
47 | |
48 | f = openfpm::math::round_big_2(7); |
49 | BOOST_REQUIRE_EQUAL(f,8ul); |
50 | |
51 | f = openfpm::math::round_big_2(21); |
52 | BOOST_REQUIRE_EQUAL(f,32ul); |
53 | |
54 | //! [round to big pow] |
55 | |
56 | //! [pow] |
57 | |
58 | f = openfpm::math::pow(3,3); |
59 | BOOST_REQUIRE_EQUAL(f,27ul); |
60 | |
61 | f = openfpm::math::pow(4,2); |
62 | BOOST_REQUIRE_EQUAL(f,16ul); |
63 | |
64 | f = openfpm::math::pow(2,5); |
65 | BOOST_REQUIRE_EQUAL(f,32ul); |
66 | |
67 | //! [pow] |
68 | |
69 | //! [positive modulo] |
70 | |
71 | f = openfpm::math::positive_modulo(-1,3); |
72 | BOOST_REQUIRE_EQUAL(f,2ul); |
73 | |
74 | f = openfpm::math::positive_modulo(-5,2); |
75 | BOOST_REQUIRE_EQUAL(f,1ul); |
76 | |
77 | f = openfpm::math::positive_modulo(-7,5); |
78 | BOOST_REQUIRE_EQUAL(f,3ul); |
79 | |
80 | //! [positive modulo] |
81 | |
82 | //! [periodic] |
83 | |
84 | float ff = openfpm::math::periodic(10.9,1.1,0.1); |
85 | BOOST_REQUIRE_CLOSE(ff,0.9,0.0001); |
86 | |
87 | ff = openfpm::math::periodic(0.0,1.1,0.1); |
88 | BOOST_REQUIRE_CLOSE(ff,1.0,0.0001); |
89 | |
90 | ff = openfpm::math::periodic(-7.0,1.1,0.1); |
91 | BOOST_REQUIRE_CLOSE(ff,1.0,0.0001); |
92 | |
93 | // in float representation 1.1 is a little bigger than 1.1 |
94 | ff = openfpm::math::periodic(-10.9,1.1,0.1); |
95 | BOOST_REQUIRE_CLOSE(ff,1.1,0.0001); |
96 | |
97 | //! [periodic] |
98 | |
99 | //! [periodic_l] |
100 | |
101 | ff = openfpm::math::periodic(0.0,1.1,0.1); |
102 | BOOST_REQUIRE_CLOSE(ff,1.0,0.0001); |
103 | |
104 | ff = openfpm::math::periodic(1.2,1.1,0.1); |
105 | BOOST_REQUIRE_CLOSE(ff,0.2,0.0001); |
106 | |
107 | // in float representation 1.1 is a little bigger than 1.1 |
108 | ff = openfpm::math::periodic(0.9,1.1,0.1); |
109 | BOOST_REQUIRE_CLOSE(ff,0.9,0.0001); |
110 | |
111 | //! [periodic_l] |
112 | } |
113 | |
114 | BOOST_AUTO_TEST_SUITE_END() |
115 | |
116 | #endif /* OPENFPM_DATA_SRC_UTIL_MATHUTIL_UNIT_TEST_HPP_ */ |
117 | |