xoreos
0.0.5
src
common
algorithm.h
Go to the documentation of this file.
1
/* xoreos - A reimplementation of BioWare's Aurora engine
2
*
3
* xoreos is the legal property of its developers, whose names
4
* can be found in the AUTHORS file distributed with this source
5
* distribution.
6
*
7
* xoreos is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 3
10
* of the License, or (at your option) any later version.
11
*
12
* xoreos is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with xoreos. If not, see <http://www.gnu.org/licenses/>.
19
*/
20
25
/* Based on ScummVM (<http://scummvm.org>) code, which is released
26
* under the terms of version 2 or later of the GNU General Public
27
* License.
28
*
29
* The original copyright note in ScummVM reads as follows:
30
*
31
* ScummVM is the legal property of its developers, whose names
32
* are too numerous to list here. Please refer to the COPYRIGHT
33
* file distributed with this source distribution.
34
*
35
* This program is free software; you can redistribute it and/or
36
* modify it under the terms of the GNU General Public License
37
* as published by the Free Software Foundation; either version 2
38
* of the License, or (at your option) any later version.
39
*
40
* This program is distributed in the hope that it will be useful,
41
* but WITHOUT ANY WARRANTY; without even the implied warranty of
42
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43
* GNU General Public License for more details.
44
*
45
* You should have received a copy of the GNU General Public License
46
* along with this program; if not, write to the Free Software
47
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
48
*/
49
50
#ifndef COMMON_ALGORITHM_H
51
#define COMMON_ALGORITHM_H
52
53
namespace
Common
{
54
58
template
<
class
T>
59
T
gcd
(T a, T b) {
60
// Note: We check for <= instead of < to avoid spurious compiler
61
// warnings if T is an unsigned type, i.e. warnings like "comparison
62
// of unsigned expression < 0 is always false".
63
if
(a <= 0)
64
a = -a;
65
if
(b <= 0)
66
b = -b;
67
68
while
(a > 0) {
69
T tmp = a;
70
a = b % a;
71
b = tmp;
72
}
73
74
return
b;
75
}
76
77
}
// End of namespace Common
78
79
#endif
Common::gcd
T gcd(T a, T b)
Euclid's algorithm to compute the greatest common divisor.
Definition:
algorithm.h:59
Common
Definition:
2dafile.h:39
Generated on Sun Nov 18 2018 15:13:38 for xoreos by
1.8.14