summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/assimp/code/BoostWorkaround/boost/math/common_factor_rt.hpp
blob: f7615f974f52cb44552b6a580757ac9d529fa71b (plain)
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


#ifndef BOOST_MATH_COMMON_FACTOR_RT_HPP
#define BOOST_MATH_COMMON_FACTOR_RT_HPP


namespace boost	{
namespace math	{

// TODO: use binary GCD for unsigned integers ....
template < typename IntegerType >
IntegerType  gcd( IntegerType a, IntegerType b )
{
	const IntegerType zero = (IntegerType)0;
	while ( true )
	{
		if ( a == zero )
			return b;
		b %= a;

		if ( b == zero )
			return a;
		a %= b;
	}
}

template < typename IntegerType >
IntegerType  lcm( IntegerType a, IntegerType b )
{
	const IntegerType t = gcd (a,b);
	if (!t)return t;
	return a / t * b;
}

}}

#endif