units
Use physical dimensions at compile-time or run-time.
Main Page
Namespaces
Classes
Files
File List
File Members
test
gcd-test.cpp
Go to the documentation of this file.
1
/// @file test/gcd-test.cpp
2
/// @brief Test-cases for vnix::gcd.
3
/// @copyright 2019 Thomas E. Vaughan; all rights reserved.
4
/// @license BSD three-clause; see LICENSE.
5
6
#
include
"../vnix/gcd.hpp"
7
#
include
"catch.hpp"
8
9
using
vnix
::gcd;
10
11
12
TEST_CASE(
"GCD of any x and itself is x."
,
"[gcd]"
) {
13
REQUIRE(
gcd
(
0
,
0
)
== 0);
14
REQUIRE(
gcd
(
1
,
1
)
== 1);
15
REQUIRE(
gcd
(
2
,
2
)
== 2);
16
REQUIRE(
gcd
(
3
,
3
)
== 3);
17
REQUIRE(
gcd
(
4
,
4
)
== 4);
18
REQUIRE(
gcd
(
5
,
5
)
== 5);
19
REQUIRE(
gcd
(
6
,
6
)
== 6);
20
REQUIRE(
gcd
(
7
,
7
)
== 7);
21
REQUIRE(
gcd
(
8
,
8
)
== 8);
22
REQUIRE(
gcd
(
9
,
9
)
== 9);
23
}
24
25
26
TEST_CASE(
"GCD of 0 and any x is x."
,
"[gcd]"
) {
27
REQUIRE(
gcd
(
0
,
1
)
== 1);
28
REQUIRE(
gcd
(
0
,
2
)
== 2);
29
REQUIRE(
gcd
(
0
,
3
)
== 3);
30
REQUIRE(
gcd
(
0
,
4
)
== 4);
31
REQUIRE(
gcd
(
0
,
5
)
== 5);
32
REQUIRE(
gcd
(
0
,
6
)
== 6);
33
REQUIRE(
gcd
(
0
,
7
)
== 7);
34
REQUIRE(
gcd
(
0
,
8
)
== 8);
35
REQUIRE(
gcd
(
0
,
9
)
== 9);
36
37
REQUIRE(
gcd
(
1
,
0
)
== 1);
38
REQUIRE(
gcd
(
2
,
0
)
== 2);
39
REQUIRE(
gcd
(
3
,
0
)
== 3);
40
REQUIRE(
gcd
(
4
,
0
)
== 4);
41
REQUIRE(
gcd
(
5
,
0
)
== 5);
42
REQUIRE(
gcd
(
6
,
0
)
== 6);
43
REQUIRE(
gcd
(
7
,
0
)
== 7);
44
REQUIRE(
gcd
(
8
,
0
)
== 8);
45
REQUIRE(
gcd
(
9
,
0
)
== 9);
46
}
47
48
49
TEST_CASE(
"GCD of 1 and any x is 1."
,
"[gcd]"
) {
50
REQUIRE(
gcd
(
1
,
2
)
== 1);
51
REQUIRE(
gcd
(
1
,
3
)
== 1);
52
REQUIRE(
gcd
(
1
,
4
)
== 1);
53
REQUIRE(
gcd
(
1
,
5
)
== 1);
54
REQUIRE(
gcd
(
1
,
6
)
== 1);
55
REQUIRE(
gcd
(
1
,
7
)
== 1);
56
REQUIRE(
gcd
(
1
,
8
)
== 1);
57
REQUIRE(
gcd
(
1
,
9
)
== 1);
58
59
REQUIRE(
gcd
(
2
,
1
)
== 1);
60
REQUIRE(
gcd
(
3
,
1
)
== 1);
61
REQUIRE(
gcd
(
4
,
1
)
== 1);
62
REQUIRE(
gcd
(
5
,
1
)
== 1);
63
REQUIRE(
gcd
(
6
,
1
)
== 1);
64
REQUIRE(
gcd
(
7
,
1
)
== 1);
65
REQUIRE(
gcd
(
8
,
1
)
== 1);
66
REQUIRE(
gcd
(
9
,
1
)
== 1);
67
}
68
69
70
TEST_CASE(
"GCD of any relative primes is 1."
,
"[gcd]"
) {
71
REQUIRE(
gcd
(
2
,
3
)
== 1);
72
REQUIRE(
gcd
(
2
,
5
)
== 1);
73
REQUIRE(
gcd
(
2
,
7
)
== 1);
74
REQUIRE(
gcd
(
3
,
2
)
== 1);
75
REQUIRE(
gcd
(
3
,
4
)
== 1);
76
REQUIRE(
gcd
(
3
,
5
)
== 1);
77
REQUIRE(
gcd
(
3
,
7
)
== 1);
78
REQUIRE(
gcd
(
3
,
8
)
== 1);
79
REQUIRE(
gcd
(
4
,
3
)
== 1);
80
REQUIRE(
gcd
(
4
,
5
)
== 1);
81
REQUIRE(
gcd
(
4
,
7
)
== 1);
82
REQUIRE(
gcd
(
4
,
9
)
== 1);
83
REQUIRE(
gcd
(
5
,
2
)
== 1);
84
REQUIRE(
gcd
(
5
,
3
)
== 1);
85
REQUIRE(
gcd
(
5
,
4
)
== 1);
86
REQUIRE(
gcd
(
5
,
7
)
== 1);
87
REQUIRE(
gcd
(
5
,
8
)
== 1);
88
REQUIRE(
gcd
(
5
,
9
)
== 1);
89
REQUIRE(
gcd
(
6
,
5
)
== 1);
90
REQUIRE(
gcd
(
6
,
7
)
== 1);
91
REQUIRE(
gcd
(
7
,
2
)
== 1);
92
REQUIRE(
gcd
(
7
,
3
)
== 1);
93
REQUIRE(
gcd
(
7
,
4
)
== 1);
94
REQUIRE(
gcd
(
7
,
5
)
== 1);
95
REQUIRE(
gcd
(
7
,
6
)
== 1);
96
REQUIRE(
gcd
(
7
,
8
)
== 1);
97
REQUIRE(
gcd
(
7
,
9
)
== 1);
98
REQUIRE(
gcd
(
8
,
3
)
== 1);
99
REQUIRE(
gcd
(
8
,
5
)
== 1);
100
REQUIRE(
gcd
(
8
,
7
)
== 1);
101
REQUIRE(
gcd
(
8
,
9
)
== 1);
102
REQUIRE(
gcd
(
9
,
2
)
== 1);
103
REQUIRE(
gcd
(
9
,
4
)
== 1);
104
REQUIRE(
gcd
(
9
,
5
)
== 1);
105
REQUIRE(
gcd
(
9
,
7
)
== 1);
106
REQUIRE(
gcd
(
9
,
8
)
== 1);
107
}
108
109
110
TEST_CASE(
"GCD of multiple is factor."
,
"[gcd]"
) {
111
REQUIRE(
gcd
(
2
,
4
)
== 2);
112
REQUIRE(
gcd
(
2
,
6
)
== 2);
113
REQUIRE(
gcd
(
2
,
8
)
== 2);
114
REQUIRE(
gcd
(
3
,
6
)
== 3);
115
REQUIRE(
gcd
(
3
,
9
)
== 3);
116
REQUIRE(
gcd
(
4
,
8
)
== 4);
117
118
REQUIRE(
gcd
(
4
,
2
)
== 2);
119
REQUIRE(
gcd
(
6
,
2
)
== 2);
120
REQUIRE(
gcd
(
8
,
2
)
== 2);
121
REQUIRE(
gcd
(
6
,
3
)
== 3);
122
REQUIRE(
gcd
(
9
,
3
)
== 3);
123
REQUIRE(
gcd
(
8
,
4
)
== 4);
124
}
125
126
127
TEST_CASE(
"Otherwise, GCD works."
,
"[gcd]"
) {
128
REQUIRE(
gcd
(
4
,
6
)
== 2);
129
REQUIRE(
gcd
(
6
,
4
)
== 2);
130
REQUIRE(
gcd
(
6
,
9
)
== 3);
131
REQUIRE(
gcd
(
9
,
6
)
== 3);
132
}
vnix::gcd
constexpr gcd_promoted< A, B > gcd(A a, B b)
Greatest common divisor of two numbers; only absolute values are used.
Definition:
gcd.hpp:40
vnix
Thomas E. Vaughan's public software.
Definition:
rational.hpp:13
Generated by
1.8.11