File: math_divide.cpp

package info (click to toggle)
boost1.90 1.90.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 593,120 kB
  • sloc: cpp: 4,190,908; xml: 196,648; python: 34,618; ansic: 23,145; asm: 5,468; sh: 3,774; makefile: 1,161; perl: 1,020; sql: 728; ruby: 676; yacc: 478; java: 77; lisp: 24; csh: 6
file content (62 lines) | stat: -rw-r--r-- 1,733 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Boost.Geometry
// Unit Test

// Copyright (c) 2022 Barend Gehrels, Amsterdam, the Netherlands.

// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)


#include <geometry_test_common.hpp>

#include <boost/geometry/util/math.hpp>

namespace bgm = bg::math;

template <typename T>
void test_integer()
{
    BOOST_CHECK_EQUAL(0, bgm::divide<T>(0, 2));

    BOOST_CHECK_EQUAL(1, bgm::divide<T>(1, 2));
    BOOST_CHECK_EQUAL(-1, bgm::divide<T>(-1, 2));
    BOOST_CHECK_EQUAL(-1, bgm::divide<T>(1, -2));
    BOOST_CHECK_EQUAL(1, bgm::divide<T>(-1, -2));

    BOOST_CHECK_EQUAL(2, bgm::divide<T>(4, 2));
    BOOST_CHECK_EQUAL(3, bgm::divide<T>(5, 2));

    BOOST_CHECK_EQUAL(9, bgm::divide<T>(94, 10));
    BOOST_CHECK_EQUAL(10, bgm::divide<T>(95, 10));
    BOOST_CHECK_EQUAL(10, bgm::divide<T>(99, 10));

    BOOST_CHECK_EQUAL(-9, bgm::divide<T>(94, -10));
    BOOST_CHECK_EQUAL(-10, bgm::divide<T>(95, -10));
    BOOST_CHECK_EQUAL(-10, bgm::divide<T>(99, -10));

    BOOST_CHECK_EQUAL(-9, bgm::divide<T>(-94, 10));
    BOOST_CHECK_EQUAL(-10, bgm::divide<T>(-95, 10));
    BOOST_CHECK_EQUAL(-10, bgm::divide<T>(-99, 10));

    BOOST_CHECK_EQUAL(9, bgm::divide<T>(-94, -10));
    BOOST_CHECK_EQUAL(10, bgm::divide<T>(-95, -10));
    BOOST_CHECK_EQUAL(10, bgm::divide<T>(-99, -10));

    BOOST_CHECK_EQUAL(5, bgm::divide<T>(4567, 1000));
}

template <typename T>
void test_floating_point()
{
    constexpr double eps = 1.0e-6;
    BOOST_CHECK_CLOSE(4.567, bgm::divide<T>(4567, 1000), eps);
}

int test_main(int, char* [])
{
    test_integer<int>();
    test_floating_point<double>();
    
    return 0;
}