00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef INCLUDE_VAUCANSON_MISC_ALGEBRA_HXX
00019 # define INCLUDE_VAUCANSON_MISC_ALGEBRA_HXX
00020
00021 # include <vaucanson/misc/algebra.hh>
00022
00023 namespace vcsn {
00024
00025 namespace misc {
00026
00027
00028 inline
00029 unsigned long long
00030 gcd (unsigned long long a, unsigned long long b)
00031 {
00032 if (0 == a)
00033 return b;
00034 unsigned long long r;
00035 while (0 != b)
00036 {
00037 r = a % b;
00038 a = b;
00039 b = r;
00040 }
00041 return a;
00042 }
00043
00044 inline
00045 unsigned long
00046 lcm (unsigned long long a, unsigned long b)
00047 {
00048 unsigned long long res = gcd (a, b);
00049 if (res)
00050 return a * b / res;
00051 return a * b;
00052 }
00053
00054 inline
00055 bool
00056 is_coprime (unsigned long long a, unsigned long long b)
00057 {
00058 return 1 == gcd (a, b);
00059 }
00060
00061 inline
00062 unsigned long long abs (long long a)
00063 {
00064 return a > 0 ? a : -a;
00065 }
00066 }
00067
00068 }
00069 #endif // !INCLUDE_VAUCANSON_MISC_ALGEBRA_HXX