1 | // Boost.Geometry |
2 | // Unit Test |
3 | |
4 | // Copyright (c) 2022 Barend Gehrels, Amsterdam, the Netherlands. |
5 | |
6 | // Use, modification and distribution is subject to the Boost Software License, |
7 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
8 | // http://www.boost.org/LICENSE_1_0.txt) |
9 | |
10 | |
11 | #include <geometry_test_common.hpp> |
12 | |
13 | #include <boost/geometry/util/math.hpp> |
14 | |
15 | namespace bgm = bg::math; |
16 | |
17 | template <typename T> |
18 | void test_integer() |
19 | { |
20 | BOOST_CHECK_EQUAL(0, bgm::divide<T>(0, 2)); |
21 | |
22 | BOOST_CHECK_EQUAL(1, bgm::divide<T>(1, 2)); |
23 | BOOST_CHECK_EQUAL(-1, bgm::divide<T>(-1, 2)); |
24 | BOOST_CHECK_EQUAL(-1, bgm::divide<T>(1, -2)); |
25 | BOOST_CHECK_EQUAL(1, bgm::divide<T>(-1, -2)); |
26 | |
27 | BOOST_CHECK_EQUAL(2, bgm::divide<T>(4, 2)); |
28 | BOOST_CHECK_EQUAL(3, bgm::divide<T>(5, 2)); |
29 | |
30 | BOOST_CHECK_EQUAL(9, bgm::divide<T>(94, 10)); |
31 | BOOST_CHECK_EQUAL(10, bgm::divide<T>(95, 10)); |
32 | BOOST_CHECK_EQUAL(10, bgm::divide<T>(99, 10)); |
33 | |
34 | BOOST_CHECK_EQUAL(-9, bgm::divide<T>(94, -10)); |
35 | BOOST_CHECK_EQUAL(-10, bgm::divide<T>(95, -10)); |
36 | BOOST_CHECK_EQUAL(-10, bgm::divide<T>(99, -10)); |
37 | |
38 | BOOST_CHECK_EQUAL(-9, bgm::divide<T>(-94, 10)); |
39 | BOOST_CHECK_EQUAL(-10, bgm::divide<T>(-95, 10)); |
40 | BOOST_CHECK_EQUAL(-10, bgm::divide<T>(-99, 10)); |
41 | |
42 | BOOST_CHECK_EQUAL(9, bgm::divide<T>(-94, -10)); |
43 | BOOST_CHECK_EQUAL(10, bgm::divide<T>(-95, -10)); |
44 | BOOST_CHECK_EQUAL(10, bgm::divide<T>(-99, -10)); |
45 | |
46 | BOOST_CHECK_EQUAL(5, bgm::divide<T>(4567, 1000)); |
47 | } |
48 | |
49 | template <typename T> |
50 | void test_floating_point() |
51 | { |
52 | constexpr double eps = 1.0e-6; |
53 | BOOST_CHECK_CLOSE(4.567, bgm::divide<T>(4567, 1000), eps); |
54 | } |
55 | |
56 | int test_main(int, char* []) |
57 | { |
58 | test_integer<int>(); |
59 | test_floating_point<double>(); |
60 | |
61 | return 0; |
62 | } |
63 | |