aimstil  5.0.5
fraction.tpp
Go to the documentation of this file.
1 
2 
3 namespace til
4 {
5 
6  //---------------------------------------------------------------------------
7 
8  template < typename T, typename ZeroByZeroPolicy >
9  T
10  Fraction< T, ZeroByZeroPolicy >::
11  operator()(T nom, T denom)
12  {
13  const T epsilon = 128*std::numeric_limits<T>::epsilon();
14  if (denom < epsilon)
15  {
16  if (nom < epsilon)
17  {
18  return m_zeroByZeroPolicy(nom, denom);
19  }
20  return T(0);
21  }
22  return nom/denom;
23  }
24 
25  //---------------------------------------------------------------------------
26 
27  template < typename ZeroByZeroPolicy, typename T >
28  typename boost::enable_if_c<!std::numeric_limits<T>::is_integer, T>::type
29  fraction(T nom, T denom)
30  {
31  Fraction<T, ZeroByZeroPolicy> f;
32  return f(nom, denom);
33  }
34 
35  //---------------------------------------------------------------------------
36 
37 } // namespace til
38