$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r75404 - in sandbox/big_number: boost/multiprecision/concepts boost/multiprecision/detail libs/multiprecision/test
From: john_at_[hidden]
Date: 2011-11-08 07:50:22
Author: johnmaddock
Date: 2011-11-08 07:50:21 EST (Tue, 08 Nov 2011)
New Revision: 75404
URL: http://svn.boost.org/trac/boost/changeset/75404
Log:
Tighten up and test the architypes.
Text files modified: 
   sandbox/big_number/boost/multiprecision/concepts/mp_number_architypes.hpp |    82 --------------------------------------- 
   sandbox/big_number/boost/multiprecision/detail/default_ops.hpp            |     8 +-                                      
   sandbox/big_number/libs/multiprecision/test/Jamfile.v2                    |    40 +++++++++++++++++++                     
   sandbox/big_number/libs/multiprecision/test/mp_number_concept_check.cpp   |    53 +++++++++++++++++--------               
   4 files changed, 80 insertions(+), 103 deletions(-)
Modified: sandbox/big_number/boost/multiprecision/concepts/mp_number_architypes.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/concepts/mp_number_architypes.hpp	(original)
+++ sandbox/big_number/boost/multiprecision/concepts/mp_number_architypes.hpp	2011-11-08 07:50:21 EST (Tue, 08 Nov 2011)
@@ -177,94 +177,14 @@
    result = std::ceil(arg.m_value);
 }
 
-inline void eval_trunc(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = boost::math::trunc(arg.m_value);
-}
-
 inline void eval_sqrt(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
 {
    result = std::sqrt(arg.m_value);
 }
 
-inline void eval_abs(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::abs(arg.m_value);
-}
-
-inline void eval_fabs(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::fabs(arg.m_value);
-}
-
 inline int eval_fpclassify(const mp_number_backend_float_architype& arg)
 {
-   return boost::math::fpclassify(arg.m_value);
-}
-
-inline void eval_pow(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& b, const mp_number_backend_float_architype& e)
-{
-   result = std::pow(b.m_value, e.m_value);
-}
-
-inline void eval_pow(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& b, int e)
-{
-   result = std::pow(b.m_value, e);
-}
-
-inline void eval_exp(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::exp(arg.m_value);
-}
-
-inline void eval_log(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::log(arg.m_value);
-}
-
-inline void eval_sin(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::sin(arg.m_value);
-}
-
-inline void eval_cos(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::cos(arg.m_value);
-}
-
-inline void eval_tan(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::tan(arg.m_value);
-}
-
-inline void eval_asin(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::asin(arg.m_value);
-}
-
-inline void eval_acos(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::acos(arg.m_value);
-}
-
-inline void eval_atan(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::atan(arg.m_value);
-}
-
-inline void eval_sinh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::sinh(arg.m_value);
-}
-
-inline void eval_cosh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::cosh(arg.m_value);
-}
-
-inline void eval_tanh(mp_number_backend_float_architype& result, const mp_number_backend_float_architype& arg)
-{
-   result = std::tanh(arg.m_value);
+   return (boost::math::fpclassify)(arg.m_value);
 }
 
 typedef boost::multiprecision::mp_number<mp_number_backend_float_architype> mp_number_float_architype;
Modified: sandbox/big_number/boost/multiprecision/detail/default_ops.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/detail/default_ops.hpp	(original)
+++ sandbox/big_number/boost/multiprecision/detail/default_ops.hpp	2011-11-08 07:50:21 EST (Tue, 08 Nov 2011)
@@ -340,18 +340,18 @@
 {
    typedef typename T::signed_types type_list;
    typedef typename mpl::front<type_list>::type front;
-   *result = arg;
+   result = arg;
    if(arg.compare(front(0)) < 0)
-      result->negate();
+      result.negate();
 }
 template <class T>
 void eval_fabs(T& result, const T& arg)
 {
    typedef typename T::signed_types type_list;
    typedef typename mpl::front<type_list>::type front;
-   *result = arg;
+   result = arg;
    if(arg.compare(front(0)) < 0)
-      result->negate();
+      result.negate();
 }
 
 template <class Backend>
Modified: sandbox/big_number/libs/multiprecision/test/Jamfile.v2
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/Jamfile.v2	(original)
+++ sandbox/big_number/libs/multiprecision/test/Jamfile.v2	2011-11-08 07:50:21 EST (Tue, 08 Nov 2011)
@@ -158,6 +158,38 @@
          [ check-target-builds ../config//has_mpfr : : <build>no ]
         : big_number_concept_check_mpfr_50 ;
 
+run mp_number_concept_check.cpp  mpfr
+        : # command line
+        : # input files
+        : # requirements
+	      <define>TEST_MPFR_6
+         [ check-target-builds ../config//has_mpfr : : <build>no ]
+        : big_number_concept_check_mpfr_6 ;
+
+run mp_number_concept_check.cpp  mpfr
+        : # command line
+        : # input files
+        : # requirements
+	      <define>TEST_MPFR_15
+         [ check-target-builds ../config//has_mpfr : : <build>no ]
+        : big_number_concept_check_mpfr_15 ;
+
+run mp_number_concept_check.cpp  mpfr
+        : # command line
+        : # input files
+        : # requirements
+	      <define>TEST_MPFR_17
+         [ check-target-builds ../config//has_mpfr : : <build>no ]
+        : big_number_concept_check_mpfr_17 ;
+
+run mp_number_concept_check.cpp  mpfr
+        : # command line
+        : # input files
+        : # requirements
+	      <define>TEST_MPFR_30
+         [ check-target-builds ../config//has_mpfr : : <build>no ]
+        : big_number_concept_check_mpfr_30 ;
+
 run mp_number_concept_check.cpp  gmp
         : # command line
         : # input files
@@ -171,9 +203,15 @@
         : # input files
         : # requirements
               <define>TEST_MP_FLOAT
-         [ check-target-builds ../config//has_gmp : : <build>no ]
         : big_number_concept_check_mp_float ;
 
+run mp_number_concept_check.cpp
+        : # command line
+        : # input files
+        : # requirements
+	      <define>TEST_BACKEND
+        : big_number_concept_check_backend_concept ;
+
 run test_exp.cpp gmp
         : # command line
         : # input files
Modified: sandbox/big_number/libs/multiprecision/test/mp_number_concept_check.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/mp_number_concept_check.cpp	(original)
+++ sandbox/big_number/libs/multiprecision/test/mp_number_concept_check.cpp	2011-11-08 07:50:21 EST (Tue, 08 Nov 2011)
@@ -20,13 +20,17 @@
 #  pragma warning(disable:4503) // decorated name length exceeded, name was truncated
 #endif
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
+   && !defined(TEST_MP_FLOAT) && !defined(TEST_MPFR_50)\
+   && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30)
 #  define TEST_MPF_50
-#  define TEST_MPF
 #  define TEST_BACKEND
 #  define TEST_MPZ
-#  define TEST_MPFR
 #  define TEST_MPFR_50
+#  define TEST_MPFR_6
+#  define TEST_MPFR_15
+#  define TEST_MPFR_17
+#  define TEST_MPFR_30
 #  define TEST_MP_FLOAT
 
 #ifdef _MSC_VER
@@ -38,7 +42,7 @@
 
 #endif
 
-#if defined(TEST_MPF_50) || defined(TEST_MPF) || defined(TEST_MPZ)
+#if defined(TEST_MPF_50) || defined(TEST_MPZ)
 #include <boost/multiprecision/gmp.hpp>
 #endif
 #ifdef TEST_BACKEND
@@ -47,7 +51,7 @@
 #ifdef TEST_MP_FLOAT
 #include <boost/multiprecision/mp_float.hpp>
 #endif
-#if defined(TEST_MPFR) || defined(TEST_MPFR_50)
+#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
 
@@ -57,19 +61,25 @@
 void foo()
 {
 #ifdef TEST_BACKEND
-   instantiate(boost::multiprecision::mp_number_float_architype());
+   instantiate(boost::multiprecision::concepts::mp_number_float_architype());
 #endif
 #ifdef TEST_MPF_50
    instantiate(boost::multiprecision::mpf_float_50());
 #endif
-#ifdef TEST_MPF
-   instantiate(boost::multiprecision::mpf_float());
-#endif
 #ifdef TEST_MPFR_50
    instantiate(boost::multiprecision::mpfr_float_50());
 #endif
-#ifdef TEST_MPFR
-   instantiate(boost::multiprecision::mpfr_float());
+#ifdef TEST_MPFR_6
+   instantiate(boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<6> >());
+#endif
+#ifdef TEST_MPFR_15
+   instantiate(boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<15> >());
+#endif
+#ifdef TEST_MPFR_17
+   instantiate(boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<17> >());
+#endif
+#ifdef TEST_MPFR_30
+   instantiate(boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<30> >());
 #endif
 #ifdef TEST_MP_FLOAT
    instantiate(boost::multiprecision::mp_float_50());
@@ -79,19 +89,28 @@
 int main()
 {
 #ifdef TEST_BACKEND
-   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::math::concepts::mp_number_float_architype>));
+   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::concepts::mp_number_float_architype>));
 #endif
 #ifdef TEST_MPF_50
    BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpf_float_50>));
 #endif
-#ifdef TEST_MPF
-   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpf_float>));
-#endif
 #ifdef TEST_MPFR_50
    BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpfr_float_50>));
 #endif
-#ifdef TEST_MPFR
-   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpfr_float>));
+#ifdef TEST_MPFR_6
+   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<6> > >));
+#endif
+#ifdef TEST_MPFR_15
+   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<15> > >));
+#endif
+#ifdef TEST_MPFR_17
+   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<17> > >));
+#endif
+#ifdef TEST_MPFR_30
+   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mp_number<boost::multiprecision::mpfr_float_backend<30> > >));
+#endif
+#ifdef TEST_MPFR_50
+   BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mpfr_float_50>));
 #endif
 #ifdef TEST_MP_FLOAT
    BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::mp_float_50>));