Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52341 - in sandbox/numeric_bindings/boost/numeric/bindings/traits: . detail
From: thomas.klimpel_at_[hidden]
Date: 2009-04-11 17:18:38


Author: klimpel
Date: 2009-04-11 17:18:36 EDT (Sat, 11 Apr 2009)
New Revision: 52341
URL: http://svn.boost.org/trac/boost/changeset/52341

Log:
Report the ublas row_major_type banded format as column_major, because that's what it really is.

Added:
   sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_banded_ordering.hpp (contents, props changed)
Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_ordering.hpp | 41 ----------------------------------------
   sandbox/numeric_bindings/boost/numeric/bindings/traits/ublas_banded.hpp | 4 +-
   2 files changed, 2 insertions(+), 43 deletions(-)

Added: sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_banded_ordering.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_banded_ordering.hpp 2009-04-11 17:18:36 EDT (Sat, 11 Apr 2009)
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (c) Kresimir Fresl 2002
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * Author acknowledges the support of the Faculty of Civil Engineering,
+ * University of Zagreb, Croatia.
+ *
+ */
+
+#ifndef BOOST_NUMERIC_BINDINGS_TRAITS_DETAIL_UBLAS_BANDED_ORDERING_H
+#define BOOST_NUMERIC_BINDINGS_TRAITS_DETAIL_UBLAS_BANDED_ORDERING_H
+
+#include <boost/numeric/ublas/fwd.hpp>
+
+namespace boost { namespace numeric { namespace bindings { namespace traits {
+
+ namespace detail {
+
+ template <typename StOrdTag>
+ struct ublas_banded_ordering {};
+
+ template<>
+ struct ublas_banded_ordering<boost::numeric::ublas::row_major_tag> {
+ // When orientation_category==row_major_tag then the ublas banded format corresponds to
+ // the LAPACK band format, which really is a column_major format.
+ typedef column_major_t type;
+
+ template <typename M>
+ static typename M::size_type leading_dimension( M const& m ) {
+ return m.lower() + m.upper() + 1 ;
+ }
+
+ template <typename M>
+ static typename M::size_type stride1( M const& m ) {
+ return 1 ;
+ }
+
+ template <typename M>
+ static typename M::size_type stride2( M const& m ) {
+ return leading_dimension(m)-1 ;
+ }
+ };
+
+ template<>
+ struct ublas_banded_ordering<boost::numeric::ublas::column_major_tag> {
+ // The type row_major_t is just used to indicate that this is not a column_major format.
+ typedef row_major_t type;
+
+ template <typename M>
+ static typename M::size_type leading_dimension( M const& m ) {
+ return m.size2() ;
+ }
+
+ template <typename M>
+ static typename M::size_type stride1( M const& m ) {
+ return leading_dimension(m) ;
+ }
+
+ template <typename M>
+ static typename M::size_type stride2( M const& m ) {
+ return 1-leading_dimension(m) ;
+ }
+ };
+ }
+
+}}}}
+
+#endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_ordering.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_ordering.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/traits/detail/ublas_ordering.hpp 2009-04-11 17:18:36 EDT (Sat, 11 Apr 2009)
@@ -64,47 +64,6 @@
         return m.size1() ;
       }
     };
-
- template <typename StOrdTag>
- struct ublas_banded_ordering {};
-
- template<>
- struct ublas_banded_ordering<boost::numeric::ublas::row_major_tag> {
-
- template <typename M>
- static typename M::size_type leading_dimension( M const& m ) {
- return m.lower() + m.upper() + 1 ;
- }
-
- template <typename M>
- static typename M::size_type stride1( M const& m ) {
- return 1 ;
- }
-
- template <typename M>
- static typename M::size_type stride2( M const& m ) {
- return leading_dimension(m)-1 ;
- }
- };
-
- template<>
- struct ublas_banded_ordering<boost::numeric::ublas::column_major_tag> {
-
- template <typename M>
- static typename M::size_type leading_dimension( M const& m ) {
- return m.size2() ;
- }
-
- template <typename M>
- static typename M::size_type stride1( M const& m ) {
- return leading_dimension(m) ;
- }
-
- template <typename M>
- static typename M::size_type stride2( M const& m ) {
- return 1-leading_dimension(m) ;
- }
- };
   }
 
 }}}}

Modified: sandbox/numeric_bindings/boost/numeric/bindings/traits/ublas_banded.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/traits/ublas_banded.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/traits/ublas_banded.hpp 2009-04-11 17:18:36 EDT (Sat, 11 Apr 2009)
@@ -21,7 +21,7 @@
 #ifndef BOOST_UBLAS_HAVE_BINDINGS
 # include <boost/numeric/ublas/banded.hpp>
 #endif
-#include <boost/numeric/bindings/traits/detail/ublas_ordering.hpp>
+#include <boost/numeric/bindings/traits/detail/ublas_banded_ordering.hpp>
 
 #if defined (BOOST_NUMERIC_BINDINGS_FORTRAN) || !defined (BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK)
 # include <boost/static_assert.hpp>
@@ -54,7 +54,7 @@
     typedef boost::numeric::ublas::banded_matrix<T, F, ArrT> identifier_type ;
     typedef M matrix_type;
     typedef banded_t matrix_structure;
- typedef typename detail::ublas_ordering<
+ typedef typename detail::ublas_banded_ordering<
       typename F::orientation_category
>::type ordering_type;
 


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