Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78073 - in sandbox/fixed_point: boost/fixed_point libs/fixed_point/example
From: vicente.botet_at_[hidden]
Date: 2012-04-18 17:04:18


Author: viboes
Date: 2012-04-18 17:04:18 EDT (Wed, 18 Apr 2012)
New Revision: 78073
URL: http://svn.boost.org/trac/boost/changeset/78073

Log:
FixedPoint: Code formated and added some constexpr on comparisions
Text files modified:
   sandbox/fixed_point/boost/fixed_point/number.hpp | 146 +++++++++++++++++++++++----------------
   sandbox/fixed_point/libs/fixed_point/example/ex_xx.cpp | 4
   2 files changed, 89 insertions(+), 61 deletions(-)

Modified: sandbox/fixed_point/boost/fixed_point/number.hpp
==============================================================================
--- sandbox/fixed_point/boost/fixed_point/number.hpp (original)
+++ sandbox/fixed_point/boost/fixed_point/number.hpp 2012-04-18 17:04:18 EDT (Wed, 18 Apr 2012)
@@ -449,7 +449,8 @@
       struct undefined
       {
         /**
- * signed_integer_type: Gets the signed integer type with enough bits to manage with the Range and Resolution depending on the F
+ * signed_integer_type: Gets the signed integer type with enough bits to manage with
+ * the Range and Resolution depending on the F
          */
         template <int Range, int Resolution>
         struct signed_integer_type
@@ -458,7 +459,8 @@
         };
 
         /**
- * unsigned_integer_type: Gets the unsigned integer type with enough bits to manage with the Range and Resolution depending on the F
+ * unsigned_integer_type: Gets the unsigned integer type with enough bits to manage with
+ * the Range and Resolution depending on the F
          */
         template <int Range, int Resolution>
         struct unsigned_integer_type
@@ -855,7 +857,11 @@
           return
           (
               (((underlying_type(rhs.count()) << (P1-P2))) < To::min_index)
- ? To(index(OP2::template on_negative_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_negative_overflow<To,underlying_type>(
+ ((underlying_type(rhs.count()) << (P1-P2)))
+ )
+ ))
               : To(index(underlying_type(rhs.count()) << (P1-P2)))
           );
 
@@ -889,10 +895,18 @@
           return
           (
               (((underlying_type(rhs.count()) << (P1-P2))) > To::max_index)
- ? To(index(OP2::template on_positive_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_positive_overflow<To,underlying_type>(
+ ((underlying_type(rhs.count()) << (P1-P2)))
+ )
+ ))
               : (
                   (((underlying_type(rhs.count()) << (P1-P2))) < To::min_index)
- ? To(index(OP2::template on_negative_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_negative_overflow<To,underlying_type>(
+ ((underlying_type(rhs.count()) << (P1-P2)))
+ )
+ ))
                   : To(index(((underlying_type(rhs.count()) << (P1-P2)))))
               )
           );
@@ -923,10 +937,18 @@
 
           return (
               (((underlying_type(rhs.count()) << (P1-P2))) > To::max_index)
- ? To(index(OP2::template on_positive_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_positive_overflow<To,underlying_type>(
+ ((underlying_type(rhs.count()) << (P1-P2)))
+ )
+ ))
               : (
                   (((underlying_type(rhs.count()) << (P1-P2))) < To::min_index)
- ? To(index(OP2::template on_negative_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_negative_overflow<To,underlying_type>(
+ ((underlying_type(rhs.count()) << (P1-P2)))
+ )
+ ))
                   : To(index(((underlying_type(rhs.count()) << (P1-P2)))))
               )
           );
@@ -956,7 +978,11 @@
           return
           (
               (((underlying_type(rhs.count()) << (P1-P2))) > To::max_index)
- ? To(index(OP2::template on_positive_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_positive_overflow<To,underlying_type>(
+ ((underlying_type(rhs.count()) << (P1-P2)))
+ )
+ ))
               : To(index(((underlying_type(rhs.count()) << (P1-P2)))))
           );
         }
@@ -985,7 +1011,9 @@
           return
           (
               (((underlying_type(rhs.count()) << (P1-P2))) > To::max_index)
- ? To(index(OP2::template on_positive_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))))
+ ? To(index(
+ OP2::template on_positive_overflow<To,underlying_type>(((underlying_type(rhs.count()) << (P1-P2))))
+ ))
               : To(index(((underlying_type(rhs.count()) << (P1-P2)))))
           );
 
@@ -1075,10 +1103,14 @@
           return
           (
               (rhs.count() > (typename From::underlying_type(To::max_index)<<(P2-P1)))
- ? To(index(OP2::template on_positive_overflow<To,underlying_type>((((rhs.count()) >> (P2-P1))))))
+ ? To(index(
+ OP2::template on_positive_overflow<To,underlying_type>((((rhs.count()) >> (P2-P1))))
+ ))
               : (
                   (rhs.count() < (typename From::underlying_type(To::min_index)<<(P2-P1)))
- ? To(index(OP2::template on_negative_overflow<To,underlying_type>((((rhs.count()) >> (P2-P1))))))
+ ? To(index(
+ OP2::template on_negative_overflow<To,underlying_type>((((rhs.count()) >> (P2-P1))))
+ ))
                   : To((index(RP2::template round<From,To>(rhs))))
               )
           );
@@ -1658,7 +1690,8 @@
     class real_t
     {
 #if !defined(BOOST_FIXED_POINT_DOXYGEN_INVOKED)
- BOOST_MPL_ASSERT_MSG(Range>=Resolution, RANGE_MUST_BE_GREATER_EQUAL_THAN_RESOLUTION, (mpl::int_<Range>,mpl::int_<Resolution>));
+ BOOST_MPL_ASSERT_MSG(Range>=Resolution,
+ RANGE_MUST_BE_GREATER_EQUAL_THAN_RESOLUTION, (mpl::int_<Range>,mpl::int_<Resolution>));
 #endif
     public:
 
@@ -1688,18 +1721,23 @@
       //! The underlying integer type
       typedef typename storage_type::template signed_integer_type<Range,Resolution>::type underlying_type;
 #if !defined(BOOST_FIXED_POINT_DOXYGEN_INVOKED)
- BOOST_MPL_ASSERT_MSG((sizeof(underlying_type)*8) >= (Range-Resolution+1), UNDERLYING_TYPE_MUST_BE_LARGE_ENOUGH, (underlying_type));
- BOOST_MPL_ASSERT_MSG(boost::is_signed<underlying_type>::value, UNDERLYING_TYPE_MUST_BE_SIGNED, (underlying_type));
+ BOOST_MPL_ASSERT_MSG((sizeof(underlying_type)*8) >= (Range-Resolution+1),
+ UNDERLYING_TYPE_MUST_BE_LARGE_ENOUGH, (underlying_type));
+ BOOST_MPL_ASSERT_MSG(boost::is_signed<underlying_type>::value,
+ UNDERLYING_TYPE_MUST_BE_SIGNED, (underlying_type));
 #endif
 
       //! whether the tyoe is signed (always true).
       BOOST_STATIC_CONSTEXPR bool is_signed = true;
       //! The standard std::number_traits<>::digits.
- BOOST_STATIC_CONSTEXPR std::size_t digits = detail::signed_integer_traits<underlying_type,Range,Resolution>::digits;
+ BOOST_STATIC_CONSTEXPR std::size_t digits =
+ detail::signed_integer_traits<underlying_type,Range,Resolution>::digits;
       //! The standard std::number_traits<>::min_index
- BOOST_STATIC_CONSTEXPR underlying_type min_index = detail::signed_integer_traits<underlying_type,Range,Resolution>::const_min;
+ BOOST_STATIC_CONSTEXPR underlying_type min_index =
+ detail::signed_integer_traits<underlying_type,Range,Resolution>::const_min;
       //! The standard std::number_traits<>::max_index
- BOOST_STATIC_CONSTEXPR underlying_type max_index = detail::signed_integer_traits<underlying_type,Range,Resolution>::const_max;
+ BOOST_STATIC_CONSTEXPR underlying_type max_index =
+ detail::signed_integer_traits<underlying_type,Range,Resolution>::const_max;
 
       // construct/copy/destroy:
 
@@ -2192,18 +2230,23 @@
       typedef typename storage_type::template unsigned_integer_type<Range,Resolution>::type underlying_type;
 
 #if !defined(BOOST_FIXED_POINT_DOXYGEN_INVOKED)
- BOOST_MPL_ASSERT_MSG((sizeof(underlying_type)*8) >= (Range-Resolution), UNDERLYING_TYPE_MUST_BE_LARGE_ENOUGH, (underlying_type));
- BOOST_MPL_ASSERT_MSG(!boost::is_signed<underlying_type>::value, UNDERLYING_TYPE_MUST_BE_UNSIGNED, (underlying_type));
+ BOOST_MPL_ASSERT_MSG((sizeof(underlying_type)*8) >= (Range-Resolution),
+ UNDERLYING_TYPE_MUST_BE_LARGE_ENOUGH, (underlying_type));
+ BOOST_MPL_ASSERT_MSG(!boost::is_signed<underlying_type>::value,
+ UNDERLYING_TYPE_MUST_BE_UNSIGNED, (underlying_type));
 #endif
 
       //! whether the tyoe is signed (always @c false).
       BOOST_STATIC_CONSTEXPR bool is_signed = false;
       //! The standard std::number_traits<>::digits.
- BOOST_STATIC_CONSTEXPR std::size_t digits = detail::unsigned_integer_traits<underlying_type,Range,Resolution>::digits;
+ BOOST_STATIC_CONSTEXPR std::size_t digits =
+ detail::unsigned_integer_traits<underlying_type,Range,Resolution>::digits;
       //! The standard std::number_traits<>::min_index
- BOOST_STATIC_CONSTEXPR underlying_type min_index = detail::unsigned_integer_traits<underlying_type,Range,Resolution>::const_min;
+ BOOST_STATIC_CONSTEXPR underlying_type min_index =
+ detail::unsigned_integer_traits<underlying_type,Range,Resolution>::const_min;
       //! The standard std::number_traits<>::max_index
- BOOST_STATIC_CONSTEXPR underlying_type max_index = detail::unsigned_integer_traits<underlying_type,Range,Resolution>::const_max;
+ BOOST_STATIC_CONSTEXPR underlying_type max_index =
+ detail::unsigned_integer_traits<underlying_type,Range,Resolution>::const_max;
 
       // construct/copy/destroy:
       /**
@@ -2444,7 +2487,8 @@
         return *this;
       }
       /**
- * @Returns an instance of a signed fixed point nummber with the representation the negation of the representation of this.
+ * @Returns an instance of a signed fixed point number with
+ * the representation the negation of the representation of this.
        */
       real_t<Range,Resolution,Rounding,Overflow,Family>
       operator-() const
@@ -2605,7 +2649,9 @@
 #endif
     to_unsigned_number()
     {
- return ureal_t< static_log2<mpl::abs<mpl::int_<Times+1> >::type::value>::value+Resolution, Resolution>(index(Times));
+ return ureal_t<
+ static_log2<mpl::abs<mpl::int_<Times+1> >::type::value>::value+Resolution, Resolution
+ >(index(Times));
     }
     /**
      * real_t compile time factory.
@@ -2622,7 +2668,9 @@
 #endif
     to_signed_number()
     {
- return real_t< static_log2<mpl::abs<mpl::int_<Times+1> >::type::value>::value+Resolution, Resolution>(index(Times));
+ return real_t<
+ static_log2<mpl::abs<mpl::int_<Times+1> >::type::value>::value+Resolution, Resolution
+ > (index(Times));
     }
 
     // /**
@@ -3028,21 +3076,6 @@
       return result_type(index(underlying_type(lhs.count()) * rhs.count()));
     }
 
- /*
- * N = C*D+R
- * P*N = P*C*D+P*R
- * X=INT(P*N/D)=P*C
- * X/P <= N/D < (X+1)/P
- * 2X/2P <= N/D < 2(X+1)/2P
- *
- * exact : X/P == N/D
- * near_down: X/P < N/D < (2X+1)/2P
- * half : (2X+1)/2P == N/D
- * near_up : (2X+1)/2P < N/D < (X+1)/P
- *
- *
- */
-
     /**
      * fixed point division giving the expected result type.
      * @Returns DT(lhs) / DT(rhs) taking in account the rounding policy of the expected result.
@@ -3065,8 +3098,6 @@
       BOOST_STATIC_ASSERT((Res::is_signed==DT::is_signed));
       BOOST_ASSERT_MSG(DT(rhs).count()!=0, "Division by 0");
 
- // underlying_type ci = detail::shift<typename DT::underlying_type, DT::digits, P>(DT(lhs).count()) / DT(rhs).count();
- // return result_type(index(ci)); // ....
       typedef typename result_type::rounding_type rounding_type;
       return result_type(index(rounding_type::template round_divide<Res>(DT(lhs), DT(rhs))));
     }
@@ -3092,8 +3123,6 @@
       BOOST_STATIC_ASSERT((Res::is_signed==DT::is_signed));
       BOOST_ASSERT_MSG(DT(rhs).count()!=0, "Division by 0");
 
- // underlying_type ci = detail::shift<typename DT::underlying_type, DT::digits, P>(DT(lhs).count()) / DT(rhs).count();
- // return result_type(index(ci)); // ....
       typedef typename result_type::rounding_type rounding_type;
       return result_type(index(rounding_type::template round_divide<Res>(DT(lhs), DT(rhs))));
     }
@@ -3119,8 +3148,6 @@
       BOOST_STATIC_ASSERT((Res::is_signed==DT::is_signed));
       BOOST_ASSERT_MSG(DT(rhs).count()!=0, "Division by 0");
 
- // underlying_type ci = detail::shift<typename DT::underlying_type, DT::digits, P>(DT(lhs).count()) / DT(rhs).count();
- // return result_type(index(ci)); // ....
       typedef typename result_type::rounding_type rounding_type;
       return result_type(index(rounding_type::template round_divide<Res>(DT(lhs), DT(rhs))));
     }
@@ -3146,8 +3173,6 @@
       BOOST_STATIC_ASSERT((Res::is_signed==DT::is_signed));
       BOOST_ASSERT_MSG(DT(rhs).count()!=0, "Division by 0");
 
- // underlying_type ci = detail::shift<typename DT::underlying_type, DT::digits, P>(DT(lhs).count()) / DT(rhs).count();
- // return result_type(index(ci)); // ....
       typedef typename result_type::rounding_type rounding_type;
       return result_type(index(rounding_type::template round_divide<Res>(DT(lhs), DT(rhs))));
     }
@@ -3291,7 +3316,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator==(real_t<R1,P1,RP1,OP1,F1> const& lhs, real_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3304,7 +3329,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator==(ureal_t<R1,P1,RP1,OP1,F1> const& lhs, ureal_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3317,7 +3342,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator!=(real_t<R1,P1,RP1,OP1,F1> const& lhs, real_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3329,7 +3354,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator!=(ureal_t<R1,P1,RP1,OP1,F1> const& lhs, ureal_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3341,7 +3366,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator<(real_t<R1,P1,RP1,OP1,F1> const& lhs, real_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3354,7 +3379,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator<(ureal_t<R1,P1,RP1,OP1,F1> const& lhs, ureal_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3367,7 +3392,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator>(real_t<R1,P1,RP1,OP1,F1> const& lhs, real_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3378,7 +3403,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator>(ureal_t<R1,P1,RP1,OP1,F1> const& lhs, ureal_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3390,7 +3415,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator<=(real_t<R1,P1,RP1,OP1,F1> const& lhs, real_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3401,7 +3426,7 @@
     /**
      * @Returns <c>!(rhs < lhs)</c>.
      */
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator<=(ureal_t<R1,P1,RP1,OP1,F1> const& lhs, ureal_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3413,7 +3438,7 @@
      */
     template <int R1, int P1, typename RP1, typename OP1, typename F1,
     int R2, int P2, typename RP2, typename OP2, typename F2>
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator>=(real_t<R1,P1,RP1,OP1,F1> const& lhs, real_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3424,7 +3449,7 @@
     /**
      * @Returns <c>!(lhs < rhs)</c>.
      */
- inline
+ inline BOOST_CONSTEXPR
     bool
     operator>=(ureal_t<R1,P1,RP1,OP1,F1> const& lhs, ureal_t<R2,P2,RP2,OP2,F2> const& rhs)
     {
@@ -3437,6 +3462,7 @@
      * @Returns the conversion with possible reduced range and loss of resolution.
      */
     template <typename To, typename From>
+ BOOST_CONSTEXPR
     To number_cast(From const& f)
     {
       return fixed_point::detail::number_cast<From, To>()(f);

Modified: sandbox/fixed_point/libs/fixed_point/example/ex_xx.cpp
==============================================================================
--- sandbox/fixed_point/libs/fixed_point/example/ex_xx.cpp (original)
+++ sandbox/fixed_point/libs/fixed_point/example/ex_xx.cpp 2012-04-18 17:04:18 EDT (Wed, 18 Apr 2012)
@@ -968,7 +968,8 @@
     std::cout << __FILE__ << "[" << __LINE__ << "]" << std::endl;
     real_t<2, -1> n1( (index(7)));
     real_t<2, -1> n2( (index(7)));
- BOOST_TEST(n1 == n2);
+ BOOST_STATIC_CONSTEXPR bool b = n1 == n2;
+ BOOST_TEST(b);
   }
   {
     std::cout << __FILE__ << "[" << __LINE__ << "]" << std::endl;
@@ -1103,6 +1104,7 @@
     //std::cout<< float(f1) << std::endl;
   }
 
+
   return boost::report_errors();
 }
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk