namespace boost
{
namespace math
{
template < typename IntegerType >
class gcd_evaluator;
template < typename IntegerType >
class lcm_evaluator;
template < typename IntegerType >
IntegerType gcd( IntegerType const &a, IntegerType const &b );
template < typename ForwardIterator >
std::pair<typename std::iterator_traits<I>::value_type, I> gcd_range(I first, I last);
template < typename IntegerType >
IntegerType lcm( IntegerType const &a, IntegerType const &b );
typedef see-below static_gcd_type;
template < static_gcd_type Value1, static_gcd_type Value2 >
struct static_gcd;
template < static_gcd_type Value1, static_gcd_type Value2 >
struct static_lcm;
}
}