$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r80483 - in trunk: boost/numeric/ublas libs/numeric/ublas/test
From: guwi17_at_[hidden]
Date: 2012-09-10 16:50:10
Author: guwi17
Date: 2012-09-10 16:50:10 EDT (Mon, 10 Sep 2012)
New Revision: 80483
URL: http://svn.boost.org/trac/boost/changeset/80483
Log:
boost/numeric/ublas/traits.hpp, libs/numeric/ublas/test/test_assignment.cpp, libs/numeric/ublas/test/begin_end.cpp: see #7296, fix test issues with unsigned integer types
 
Text files modified: 
   trunk/boost/numeric/ublas/traits.hpp              |     8 ++++++++                                
   trunk/libs/numeric/ublas/test/begin_end.cpp       |     8 ++++----                                
   trunk/libs/numeric/ublas/test/test_assignment.cpp |     4 ++--                                    
   3 files changed, 14 insertions(+), 6 deletions(-)
Modified: trunk/boost/numeric/ublas/traits.hpp
==============================================================================
--- trunk/boost/numeric/ublas/traits.hpp	(original)
+++ trunk/boost/numeric/ublas/traits.hpp	2012-09-10 16:50:10 EDT (Mon, 10 Sep 2012)
@@ -41,6 +41,14 @@
     // we'll find either std::abs or else another version via ADL:
     return abs (t);
   }
+  // unsigned types are always non-negative
+  template<> unsigned int boost_numeric_ublas_abs (const unsigned int& t) {
+    return t;
+  }
+  // unsigned types are always non-negative
+  template<> unsigned long boost_numeric_ublas_abs (const unsigned long& t) {
+    return t;
+  }
 }
 
 namespace boost { namespace numeric { namespace ublas {
Modified: trunk/libs/numeric/ublas/test/begin_end.cpp
==============================================================================
--- trunk/libs/numeric/ublas/test/begin_end.cpp	(original)
+++ trunk/libs/numeric/ublas/test/begin_end.cpp	2012-09-10 16:50:10 EDT (Mon, 10 Sep 2012)
@@ -49,7 +49,7 @@
             ++it
     ) {
         BOOST_UBLAS_DEBUG_TRACE( "*it = " << *it << " ==> " << v(ix) );
-        BOOST_UBLAS_TEST_CHECK( std::fabs(*it - v(ix)) <= TOL );
+        BOOST_UBLAS_TEST_CHECK( std::abs(*it - v(ix)) <= TOL );
         ++ix;
     }
 }
@@ -78,7 +78,7 @@
             ++it
     ) {
         BOOST_UBLAS_DEBUG_TRACE( "*it = " << *it << " ==> " << v(ix) );
-        BOOST_UBLAS_TEST_CHECK( std::fabs(*it - v(ix)) <= TOL );
+        BOOST_UBLAS_TEST_CHECK( std::abs(*it - v(ix)) <= TOL );
         ++ix;
     }
 }
@@ -116,7 +116,7 @@
                 ++inner_it
         ) {
             BOOST_UBLAS_DEBUG_TRACE( "*it = " << *inner_it << " ==> " << A(row,col) );
-            BOOST_UBLAS_TEST_CHECK( std::fabs(*inner_it - A(row,col)) <= TOL );
+            BOOST_UBLAS_TEST_CHECK( std::abs(*inner_it - A(row,col)) <= TOL );
 
             ++col;
         }
@@ -158,7 +158,7 @@
                 ++inner_it
         ) {
             BOOST_UBLAS_DEBUG_TRACE( "*it = " << *inner_it << " ==> " << A(row,col) );
-            BOOST_UBLAS_TEST_CHECK( std::fabs(*inner_it - A(row,col)) <= TOL );
+            BOOST_UBLAS_TEST_CHECK( std::abs(*inner_it - A(row,col)) <= TOL );
 
             ++row;
         }
Modified: trunk/libs/numeric/ublas/test/test_assignment.cpp
==============================================================================
--- trunk/libs/numeric/ublas/test/test_assignment.cpp	(original)
+++ trunk/libs/numeric/ublas/test/test_assignment.cpp	2012-09-10 16:50:10 EDT (Mon, 10 Sep 2012)
@@ -26,7 +26,7 @@
     typename AE::size_type i, j;
     for (i=0; i!= me().size1(); i++) {
         for (j=0; j!= me().size2(); j++) {
-            s+=std::fabs(me()(i,j));
+          s+= scalar_traits<typename AE::value_type>::type_abs(me()(i,j));
         }
     }
     return s/me().size1()*me().size2();
@@ -39,7 +39,7 @@
     typename AE::value_type s(0);
     typename AE::size_type i;
     for (i=0; i!= ve().size(); i++) {
-            s+=std::fabs(ve()(i));
+            s+=scalar_traits<typename AE::value_type>::type_abs(ve()(i));
         }
     return s/ve().size();
 }