$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r77971 - in sandbox/big_number: boost/multiprecision/detail libs/multiprecision/example libs/multiprecision/test
From: john_at_[hidden]
Date: 2012-04-14 12:51:03
Author: johnmaddock
Date: 2012-04-14 12:51:02 EDT (Sat, 14 Apr 2012)
New Revision: 77971
URL: http://svn.boost.org/trac/boost/changeset/77971
Log:
Fix ldexp/frexp in default_ops.hpp.  Improve 64-bit platform detection in cpp_int_core.hpp.  Get examples building with GCC
Text files modified: 
   sandbox/big_number/boost/multiprecision/detail/cpp_int_core.hpp            |     2 +-                                      
   sandbox/big_number/boost/multiprecision/detail/default_ops.hpp             |    37 +++++++++++++++++++++++--------------   
   sandbox/big_number/libs/multiprecision/example/floating_point_examples.cpp |    10 +++++-----                              
   sandbox/big_number/libs/multiprecision/test/Jamfile.v2                     |     2 +-                                      
   4 files changed, 30 insertions(+), 21 deletions(-)
Modified: sandbox/big_number/boost/multiprecision/detail/cpp_int_core.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/detail/cpp_int_core.hpp	(original)
+++ sandbox/big_number/boost/multiprecision/detail/cpp_int_core.hpp	2012-04-14 12:51:02 EDT (Sat, 14 Apr 2012)
@@ -8,7 +8,7 @@
 
 namespace boost{ namespace multiprecision{
 
-#if defined(__GNUC__) && !defined(BOOST_INTEL) && defined(__x86_64__)
+#if defined(__GNUC__) && !defined(BOOST_INTEL) && defined(__WORDSIZE) && (__WORDSIZE == 64)
 
 typedef boost::uint64_t limb_type;
 typedef boost::int64_t signed_limb_type;
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	2012-04-14 12:51:02 EDT (Sat, 14 Apr 2012)
@@ -1153,20 +1153,7 @@
 }\
 
 
-#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\
-namespace detail{\
-template <class Backend> \
-struct BOOST_JOIN(func, _funct)\
-{\
-   void operator()(Backend& result, Backend const& arg, Arg2 a)const\
-   {\
-      using default_ops:: BOOST_JOIN(eval_,func);\
-      BOOST_JOIN(eval_,func)(result, arg, a);\
-   }\
-};\
-\
-}\
-\
+#define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2)\
 template <class tag, class A1, class A2, class A3> \
 inline detail::mp_exp<\
     detail::function\
@@ -1216,6 +1203,24 @@
    return result;\
 }\
 
+#define HETERO_BINARY_OP_FUNCTOR(func, Arg2)\
+namespace detail{\
+template <class Backend> \
+struct BOOST_JOIN(func, _funct)\
+{\
+   template <class Arg>\
+   void operator()(Backend& result, Backend const& arg, Arg a)const\
+   {\
+      using default_ops:: BOOST_JOIN(eval_,func);\
+      BOOST_JOIN(eval_,func)(result, arg, a);\
+   }\
+};\
+\
+}\
+\
+HETERO_BINARY_OP_FUNCTOR_B(func, Arg2)
+
+
 UNARY_OP_FUNCTOR(abs)
 UNARY_OP_FUNCTOR(fabs)
 UNARY_OP_FUNCTOR(sqrt)
@@ -1238,6 +1243,10 @@
 
 HETERO_BINARY_OP_FUNCTOR(ldexp, int)
 HETERO_BINARY_OP_FUNCTOR(frexp, int*)
+HETERO_BINARY_OP_FUNCTOR_B(ldexp, long)
+HETERO_BINARY_OP_FUNCTOR_B(frexp, long*)
+HETERO_BINARY_OP_FUNCTOR_B(ldexp, long long)
+HETERO_BINARY_OP_FUNCTOR_B(frexp, long long*)
 BINARY_OP_FUNCTOR(pow)
 BINARY_OP_FUNCTOR(fmod)
 BINARY_OP_FUNCTOR(atan2)
Modified: sandbox/big_number/libs/multiprecision/example/floating_point_examples.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/example/floating_point_examples.cpp	(original)
+++ sandbox/big_number/libs/multiprecision/example/floating_point_examples.cpp	2012-04-14 12:51:02 EDT (Sat, 14 Apr 2012)
@@ -441,7 +441,7 @@
 /*`
 Calling the function like so:
 
-   std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific;
+   std::cout << std::setprecision(std::numeric_limits< ::mp_type>::digits10) << std::scientific;
    std::cout << mysin(mp_type(1)) << std::endl;
 
 Yields the expected output:
@@ -657,9 +657,9 @@
 
    //]
 
-   std::cout << std::setprecision(std::numeric_limits<::mp_type>::digits10) << std::scientific;
-   std::cout << mysin(boost::math::constants::pi<::mp_type>() / 4) << std::endl;
-   std::cout << boost::multiprecision::sin(boost::math::constants::pi<::mp_type>() / 4) << std::endl;
+   std::cout << std::setprecision(std::numeric_limits< ::mp_type>::digits10) << std::scientific;
+   std::cout << mysin(boost::math::constants::pi< ::mp_type>() / 4) << std::endl;
+   std::cout << boost::multiprecision::sin(boost::math::constants::pi< ::mp_type>() / 4) << std::endl;
 
    return 0;
 }
@@ -683,4 +683,4 @@
 2.70670566473225383787998989944968806815253190143120e-01
 7.0710678118654752440084436210484903928483593768847403658833986900e-01
 7.0710678118654752440084436210484903928483593768847403658833986900e-01
-*/
\ No newline at end of file
+*/
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	2012-04-14 12:51:02 EDT (Sat, 14 Apr 2012)
@@ -665,7 +665,7 @@
         : # input files
         : # requirements
          [ check-target-builds ../config//has_tommath : : <build>no ] ;
-run ../example/floating_point_examples.cpp ;
+run ../example/floating_point_examples.cpp : : : <toolset>gcc:<cxxflags>-std=c++0x ;
 
 if $(enable-specfun)
 {