Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r80943 - in sandbox/numeric_bindings: boost/numeric/bindings/blas/level1 boost/numeric/bindings/blas/level2 libs/numeric/bindings/tools
From: rutger_at_[hidden]
Date: 2012-10-10 17:00:37


Author: rutger
Date: 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
New Revision: 80943
URL: http://svn.boost.org/trac/boost/changeset/80943

Log:
Added support for static asserting the data_structure of vectors and band matrices in the BLAS bindings. TODO are the asserts for the other matrix structures

Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/asum.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/axpy.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/copy.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dot.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotc.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/iamax.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/nrm2.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/prec_dot.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rot.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotm.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/scal.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/swap.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp | 5 +++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp | 5 +++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp | 5 +++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp | 3 +++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp | 4 ++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp | 4 ++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp | 2 ++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp | 2 ++
   sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py | 26 ++++++++++++++++++++++++++
   38 files changed, 133 insertions(+), 0 deletions(-)

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/asum.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/asum.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/asum.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -196,6 +197,7 @@
     template< typename VectorX >
     static result_type invoke( const VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         return detail::asum( bindings::size(x),
                 bindings::begin_value(x), bindings::stride(x) );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/axpy.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/axpy.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/axpy.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -211,6 +212,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         detail::axpy( bindings::size(x), a, bindings::begin_value(x),
                 bindings::stride(x), bindings::begin_value(y),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/copy.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/copy.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/copy.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -206,6 +207,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         detail::copy( bindings::size(x), bindings::begin_value(x),
                 bindings::stride(x), bindings::begin_value(y),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dot.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -210,6 +211,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         return detail::dot( bindings::size(x),
                 bindings::begin_value(x), bindings::stride(x),
                 bindings::begin_value(y), bindings::stride(y) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotc.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -150,6 +151,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         return detail::dotc( bindings::size(x),
                 bindings::begin_value(x), bindings::stride(x),
                 bindings::begin_value(y), bindings::stride(y) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/iamax.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/iamax.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/iamax.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -198,6 +199,7 @@
     template< typename VectorX >
     static result_type invoke( const VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         return detail::iamax( bindings::size(x),
                 bindings::begin_value(x), bindings::stride(x) );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/nrm2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/nrm2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/nrm2.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -196,6 +197,7 @@
     template< typename VectorX >
     static result_type invoke( const VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         return detail::nrm2( bindings::size(x),
                 bindings::begin_value(x), bindings::stride(x) );
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/prec_dot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/prec_dot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/prec_dot.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -114,6 +115,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         return detail::prec_dot( bindings::size(x),
                 bindings::begin_value(x), bindings::stride(x),
                 bindings::begin_value(y), bindings::stride(y) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rot.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -211,6 +212,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         detail::rot( bindings::size(x), bindings::begin_value(x),
                 bindings::stride(x), bindings::begin_value(y),
                 bindings::stride(y), c, s );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotm.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -148,6 +149,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorPARAM >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorPARAM >::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/scal.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/scal.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/scal.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -256,6 +257,7 @@
     template< typename ScalarA, typename VectorX >
     static result_type invoke( const ScalarA a, VectorX& x ) {
         namespace bindings = ::boost::numeric::bindings;
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         detail::scal( bindings::size(x), a, bindings::begin_value(x),
                 bindings::stride(x) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/swap.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/swap.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/swap.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -16,6 +16,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -206,6 +207,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         detail::swap( bindings::size(x), bindings::begin_value(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,8 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
+#include <boost/numeric/bindings/has_band_array.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -284,6 +286,9 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_band_array< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -280,6 +281,8 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -171,6 +172,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -177,6 +178,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -177,6 +178,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,8 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_band_array.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -274,6 +276,9 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_band_array< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -271,6 +272,8 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -243,6 +244,7 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -267,6 +268,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -271,6 +272,8 @@
                 typename bindings::value_type< MatrixAP >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         detail::hpmv( order(), uplo(), bindings::size_column(ap), alpha,
                 bindings::begin_value(ap), bindings::begin_value(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -241,6 +242,7 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixAP >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         detail::hpr( order(), uplo(), bindings::size_column(ap), alpha,
                 bindings::begin_value(x), bindings::stride(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -259,6 +260,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixAP >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         detail::hpr2( order(), uplo(), bindings::size_column(ap), alpha,
                 bindings::begin_value(x), bindings::stride(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,8 @@
 #include <boost/numeric/bindings/bandwidth.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_band_array.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -178,6 +180,9 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_band_array< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -177,6 +178,8 @@
                 typename bindings::value_type< MatrixAP >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         detail::spmv( order(), uplo(), bindings::size_column(ap), alpha,
                 bindings::begin_value(ap), bindings::begin_value(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -163,6 +164,7 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixAP >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         detail::spr( order(), uplo(), bindings::size_column(ap), alpha,
                 bindings::begin_value(x), bindings::stride(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -173,6 +174,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixAP >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixAP >::value) );
         detail::spr2( order(), uplo(), bindings::size_column(ap), alpha,
                 bindings::begin_value(x), bindings::stride(x),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -177,6 +178,8 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorY >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorY >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -163,6 +164,7 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/data_order.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -177,6 +178,8 @@
                 typename bindings::value_type< VectorX >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixA >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorY >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -19,6 +19,8 @@
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
+#include <boost/numeric/bindings/has_band_array.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -264,6 +266,8 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorX >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_band_array< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -19,6 +19,8 @@
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
+#include <boost/numeric/bindings/has_band_array.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -264,6 +266,8 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorX >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_band_array< MatrixA >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,7 @@
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -256,6 +257,7 @@
                 typename bindings::value_type< MatrixAP >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorX >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         detail::tpmv( order(), uplo(), trans(), diag(),
                 bindings::size_column_op(ap, trans()),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,7 @@
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -256,6 +257,7 @@
                 typename bindings::value_type< MatrixAP >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorX >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         detail::tpsv( order(), uplo(), trans(), diag(),
                 bindings::size_column_op(ap, trans()),

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,7 @@
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -262,6 +263,7 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorX >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -18,6 +18,7 @@
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
+#include <boost/numeric/bindings/has_linear_array.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
@@ -262,6 +263,7 @@
                 typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 VectorX >::type >::type >::value) );
+ BOOST_STATIC_ASSERT( (bindings::has_linear_array< VectorX >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< VectorX >::value) );
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py 2012-10-10 17:00:33 EDT (Wed, 10 Oct 2012)
@@ -336,6 +336,32 @@
                     has_comment = True
                 level1_static_assert_list += [ assert_line ]
 
+ #
+ # Vectors should have linear arrays
+ #
+ if 'vector' in info_map[ subroutine ][ 'grouped_arguments' ][ 'by_type' ]:
+ for vector_id in info_map[ subroutine ][ 'grouped_arguments' ][ 'by_type' ][ 'vector' ]:
+ info_map_item = info_map[ subroutine ][ 'argument_map' ][ vector_id ]
+ if 'ref_stride' in info_map_item and info_map_item[ 'code' ][ 'level_1_type' ] != None:
+ assert_line = 'BOOST_STATIC_ASSERT( ($NAMESPACEhas_linear_array< ' + info_map_item[ 'code' ][ 'level_1_static_assert' ] + \
+ ' >::value) );'
+ level1_static_assert_list += [ assert_line ]
+ includes += [ "#include <boost/numeric/bindings/has_linear_array.hpp>" ]
+
+ #
+ # Matrices should adhere to their storage scheme
+ #
+ if 'matrix' in info_map[ subroutine ][ 'grouped_arguments' ][ 'by_type' ]:
+ for matrix_id in info_map[ subroutine ][ 'grouped_arguments' ][ 'by_type' ][ 'matrix' ]:
+ info_map_item = info_map[ subroutine ][ 'argument_map' ][ matrix_id ]
+ if 'banded' in info_map_item and info_map_item[ 'banded' ] == True and \
+ info_map_item[ 'code' ][ 'level_1_type' ] != None:
+ assert_line = 'BOOST_STATIC_ASSERT( ($NAMESPACEhas_band_array< ' + info_map_item[ 'code' ][ 'level_1_static_assert' ] + \
+ ' >::value) );'
+ level1_static_assert_list += [ assert_line ]
+ includes += [ "#include <boost/numeric/bindings/has_band_array.hpp>" ]
+
+
       # Make sure the mutable stuff is mutable
       if 'output' in info_map[ subroutine ][ 'grouped_arguments' ][ 'by_io' ]:
         for arg in info_map[ subroutine ][ 'grouped_arguments' ][ 'by_io' ][ 'output' ]:


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