Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52053 - in sandbox/numeric_bindings/boost/numeric/bindings: blas blas/level1 blas/level2 blas/level3 lapack lapack/computational lapack/detail lapack/driver
From: rutger_at_[hidden]
Date: 2009-03-30 03:05:28


Author: rutger
Date: 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
New Revision: 52053
URL: http://svn.boost.org/trac/boost/changeset/52053

Log:
Sync of latest blas/lapack routines

Added:
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp (contents, props changed)
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp (contents, props changed)
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp (contents, props changed)
Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/blas/dot.hpp | 4 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/asum.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/axpy.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/copy.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dot.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotc.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotu.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/drot.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/nrm2.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rot.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotg.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotm.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotmg.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/scal.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/sdot.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/srot.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/swap.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp | 8 ++++++++
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h | 30 +++++++++++++++++++++++++++++-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h | 12 ++++++++++++
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp | 28 +++++++++++++++++++---------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp | 1 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/solve.hpp | 36 ++++++++++++++++++++++++++++++------
   57 files changed, 151 insertions(+), 18 deletions(-)

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/dot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/dot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/dot.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -30,8 +30,8 @@
     typedef typename mpl::map<
         mpl::pair< float, level1::dot_impl< value_type > >,
         mpl::pair< double, level1::dot_impl< value_type > >,
- mpl::pair< traits::complex_f, level1::dotu_impl< value_type > >,
- mpl::pair< traits::complex_d, level1::dotu_impl< value_type > > > map;
+ mpl::pair< traits::complex_f, level1::dotc_impl< value_type > >,
+ mpl::pair< traits::complex_d, level1::dotc_impl< value_type > > > map;
     typedef typename mpl::at< map, value_type >::type routine;
 };
 

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ASUM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ASUM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_AXPY_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_AXPY_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_COPY_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_COPY_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DOT_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DOT_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DOTC_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DOTC_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotu.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotu.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/dotu.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DOTU_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DOTU_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/drot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/drot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/drot.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DROT_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_DROT_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_NRM2_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_NRM2_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROT_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROT_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotg.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotg.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotg.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROTG_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROTG_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROTM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROTM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotmg.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotmg.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/rotmg.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROTMG_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_ROTMG_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SCAL_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SCAL_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/sdot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/sdot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/sdot.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SDOT_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SDOT_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/srot.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/srot.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level1/srot.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SROT_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SROT_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SWAP_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL1_SWAP_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GBMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GBMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GEMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GEMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
@@ -70,6 +71,13 @@
     typedef typename traits::type_traits<ValueType>::real_type real_type;
     typedef void return_type;
 
+ // high-level transform typedefs and functions
+ template< typename MatrixA, typename VectorX, typename VectorY >
+ static return_type transform( MatrixA& A, VectorX& x, VectorY& y,
+ const value_type alpha, const value_type beta ) {
+ invoke( );
+ }
+
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorY >
     static return_type invoke( char const trans, value_type const alpha,

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GER_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GER_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GERC_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GERC_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GERU_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_GERU_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HBMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HBMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HEMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HEMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HER_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HER_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HER2_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HER2_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HPMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HPMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HPR_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HPR_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HPR2_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_HPR2_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SBMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SBMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SPMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SPMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SPR_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SPR_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SPR2_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SPR2_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SYMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SYMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SYR_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SYR_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SYR2_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_SYR2_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TBMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TBMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TBSV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TBSV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TPMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TPMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TPSV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TPSV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TRMV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TRMV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

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 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TRSV_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL2_TRSV_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_GEMM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_GEMM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_HEMM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_HEMM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_HER2K_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_HER2K_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_HERK_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_HERK_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_SYMM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_SYMM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_SYR2K_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_SYR2K_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_SYRK_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_SYRK_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_TRMM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_TRMM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -14,6 +14,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_TRSM_HPP
 #define BOOST_NUMERIC_BINDINGS_BLAS_LEVEL3_TRSM_HPP
 
+#include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/blas/detail/blas.h>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>

Added: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -0,0 +1,134 @@
+//
+// Copyright (c) 2003--2009
+// Toon Knapen, Karl Meerbergen, Kresimir Fresl,
+// Thomas Klimpel and Rutger ter Borg
+//
+// 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)
+//
+// THIS FILE IS AUTOMATICALLY GENERATED
+// PLEASE DO NOT EDIT!
+//
+
+#ifndef BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PFTRS_HPP
+#define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PFTRS_HPP
+
+#include <boost/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/numeric/bindings/lapack/detail/lapack.h>
+#include <boost/numeric/bindings/traits/is_complex.hpp>
+#include <boost/numeric/bindings/traits/is_real.hpp>
+#include <boost/numeric/bindings/traits/traits.hpp>
+#include <boost/numeric/bindings/traits/type_traits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost {
+namespace numeric {
+namespace bindings {
+namespace lapack {
+
+//$DESCRIPTION
+
+// overloaded functions to call lapack
+namespace detail {
+ inline void pftrs( char const transr, char const uplo, integer_t const n,
+ integer_t const nrhs, float* a, float* b, integer_t const ldb,
+ integer_t& info ) {
+ LAPACK_SPFTRS( &transr, &uplo, &n, &nrhs, a, b, &ldb, &info );
+ }
+ inline void pftrs( char const transr, char const uplo, integer_t const n,
+ integer_t const nrhs, double* a, double* b, integer_t const ldb,
+ integer_t& info ) {
+ LAPACK_DPFTRS( &transr, &uplo, &n, &nrhs, a, b, &ldb, &info );
+ }
+ inline void pftrs( char const transr, char const uplo, integer_t const n,
+ integer_t const nrhs, traits::complex_f* a, traits::complex_f* b,
+ integer_t const ldb, integer_t& info ) {
+ LAPACK_CPFTRS( &transr, &uplo, &n, &nrhs, traits::complex_ptr(a),
+ traits::complex_ptr(b), &ldb, &info );
+ }
+ inline void pftrs( char const transr, char const uplo, integer_t const n,
+ integer_t const nrhs, traits::complex_d* a, traits::complex_d* b,
+ integer_t const ldb, integer_t& info ) {
+ LAPACK_ZPFTRS( &transr, &uplo, &n, &nrhs, traits::complex_ptr(a),
+ traits::complex_ptr(b), &ldb, &info );
+ }
+}
+
+// value-type based template
+template< typename ValueType, typename Enable = void >
+struct pftrs_impl{};
+
+// real specialization
+template< typename ValueType >
+struct pftrs_impl< ValueType, typename boost::enable_if< traits::is_real<ValueType> >::type > {
+
+ typedef ValueType value_type;
+ typedef typename traits::type_traits<ValueType>::real_type real_type;
+
+ // templated specialization
+ template< typename VectorA, typename MatrixB >
+ static void invoke( char const transr, integer_t const n, VectorA& a,
+ MatrixB& b, integer_t& info ) {
+ BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
+ VectorA >::value_type, typename traits::matrix_traits<
+ MatrixB >::value_type >::value) );
+ BOOST_ASSERT( transr == 'N' || transr == 'T' );
+ BOOST_ASSERT( traits::matrix_uplo_tag(rfp) == 'U' ||
+ traits::matrix_uplo_tag(rfp) == 'L' );
+ BOOST_ASSERT( n >= 0 );
+ BOOST_ASSERT( traits::matrix_num_columns(b) >= 0 );
+ BOOST_ASSERT( traits::vector_size(a) >= n*(n+1)/2 );
+ BOOST_ASSERT( traits::leading_dimension(b) >= std::max(1,n) );
+ detail::pftrs( transr, traits::matrix_uplo_tag(rfp), n,
+ traits::matrix_num_columns(b), traits::vector_storage(a),
+ traits::matrix_storage(b), traits::leading_dimension(b),
+ info );
+ }
+};
+
+// complex specialization
+template< typename ValueType >
+struct pftrs_impl< ValueType, typename boost::enable_if< traits::is_complex<ValueType> >::type > {
+
+ typedef ValueType value_type;
+ typedef typename traits::type_traits<ValueType>::real_type real_type;
+
+ // templated specialization
+ template< typename VectorA, typename MatrixB >
+ static void invoke( char const transr, integer_t const n, VectorA& a,
+ MatrixB& b, integer_t& info ) {
+ BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
+ VectorA >::value_type, typename traits::matrix_traits<
+ MatrixB >::value_type >::value) );
+ BOOST_ASSERT( transr == 'N' || transr == 'C' );
+ BOOST_ASSERT( traits::matrix_uplo_tag(rfp) == 'U' ||
+ traits::matrix_uplo_tag(rfp) == 'L' );
+ BOOST_ASSERT( n >= 0 );
+ BOOST_ASSERT( traits::matrix_num_columns(b) >= 0 );
+ BOOST_ASSERT( traits::vector_size(a) >= n*(n+1)/2 );
+ BOOST_ASSERT( traits::leading_dimension(b) >= std::max(1,n) );
+ detail::pftrs( transr, traits::matrix_uplo_tag(rfp), n,
+ traits::matrix_num_columns(b), traits::vector_storage(a),
+ traits::matrix_storage(b), traits::leading_dimension(b),
+ info );
+ }
+};
+
+
+// template function to call pftrs
+template< typename VectorA, typename MatrixB >
+inline integer_t pftrs( char const transr, integer_t const n, VectorA& a,
+ MatrixB& b ) {
+ typedef typename traits::vector_traits< VectorA >::value_type value_type;
+ integer_t info(0);
+ pftrs_impl< value_type >::invoke( transr, n, a, b, info );
+ return info;
+}
+
+}}}} // namespace boost::numeric::bindings::lapack
+
+#endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -1203,6 +1203,20 @@
         integer_t const* nrhs, dcomplex_t const* ab, integer_t const* ldab,
         dcomplex_t* b, integer_t const* ldb, integer_t* info );
 
+// Value-type variants of pftrs
+void LAPACK_SPFTRS( char const* transr, char const* uplo, integer_t const* n,
+ integer_t const* nrhs, float const* a, float* b, integer_t const* ldb,
+ integer_t* info );
+void LAPACK_DPFTRS( char const* transr, char const* uplo, integer_t const* n,
+ integer_t const* nrhs, double const* a, double* b,
+ integer_t const* ldb, integer_t* info );
+void LAPACK_CPFTRS( char const* transr, char const* uplo, integer_t const* n,
+ integer_t const* nrhs, fcomplex_t const* a, fcomplex_t* b,
+ integer_t const* ldb, integer_t* info );
+void LAPACK_ZPFTRS( char const* transr, char const* uplo, integer_t const* n,
+ integer_t const* nrhs, dcomplex_t const* a, dcomplex_t* b,
+ integer_t const* ldb, integer_t* info );
+
 // Value-type variants of pocon
 void LAPACK_SPOCON( char const* uplo, integer_t const* n, float const* a,
         integer_t const* lda, float const* anorm, float* rcond, float* work,
@@ -2667,9 +2681,16 @@
 void LAPACK_ZCGESV( integer_t const* n, integer_t const* nrhs, dcomplex_t* a,
         integer_t const* lda, integer_t* ipiv, dcomplex_t const* b,
         integer_t const* ldb, dcomplex_t* x, integer_t const* ldx,
- dcomplex_t* work, fcomplex_t* swork, integer_t* iter,
+ dcomplex_t* work, fcomplex_t* swork, double* rwork, integer_t* iter,
         integer_t* info );
 
+// Value-type variants of cposv
+void LAPACK_ZCPOSV( char const* uplo, integer_t const* n,
+ integer_t const* nrhs, dcomplex_t* a, integer_t const* lda,
+ dcomplex_t const* b, integer_t const* ldb, dcomplex_t* x,
+ integer_t const* ldx, dcomplex_t* work, fcomplex_t* swork,
+ double* rwork, integer_t* iter, integer_t* info );
+
 // Value-type variants of gbsv
 void LAPACK_SGBSV( integer_t const* n, integer_t const* kl,
         integer_t const* ku, integer_t const* nrhs, float* ab,
@@ -2999,6 +3020,13 @@
         integer_t const* ldb, double* x, integer_t const* ldx, double* work,
         float* swork, integer_t* iter, integer_t* info );
 
+// Value-type variants of sposv
+void LAPACK_DSPOSV( char const* uplo, integer_t const* n,
+ integer_t const* nrhs, double* a, integer_t const* lda,
+ double const* b, integer_t const* ldb, double* x,
+ integer_t const* ldx, double* work, float* swork, integer_t* iter,
+ integer_t* info );
+
 // Value-type variants of spsv
 void LAPACK_SSPSV( char const* uplo, integer_t const* n,
         integer_t const* nrhs, float* ap, integer_t* ipiv, float* b,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -444,6 +444,12 @@
 #define LAPACK_CPBTRS FORTRAN_ID( cpbtrs )
 #define LAPACK_ZPBTRS FORTRAN_ID( zpbtrs )
 
+// Value-type variants of pftrs
+#define LAPACK_SPFTRS FORTRAN_ID( spftrs )
+#define LAPACK_DPFTRS FORTRAN_ID( dpftrs )
+#define LAPACK_CPFTRS FORTRAN_ID( cpftrs )
+#define LAPACK_ZPFTRS FORTRAN_ID( zpftrs )
+
 // Value-type variants of pocon
 #define LAPACK_SPOCON FORTRAN_ID( spocon )
 #define LAPACK_DPOCON FORTRAN_ID( dpocon )
@@ -905,6 +911,9 @@
 // Value-type variants of cgesv
 #define LAPACK_ZCGESV FORTRAN_ID( zcgesv )
 
+// Value-type variants of cposv
+#define LAPACK_ZCPOSV FORTRAN_ID( zcposv )
+
 // Value-type variants of gbsv
 #define LAPACK_SGBSV FORTRAN_ID( sgbsv )
 #define LAPACK_DGBSV FORTRAN_ID( dgbsv )
@@ -1008,6 +1017,9 @@
 // Value-type variants of sgesv
 #define LAPACK_DSGESV FORTRAN_ID( dsgesv )
 
+// Value-type variants of sposv
+#define LAPACK_DSPOSV FORTRAN_ID( dsposv )
+
 // Value-type variants of spsv
 #define LAPACK_SSPSV FORTRAN_ID( sspsv )
 #define LAPACK_DSPSV FORTRAN_ID( dspsv )

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -37,11 +37,12 @@
             traits::complex_d* a, integer_t const lda, integer_t* ipiv,
             traits::complex_d* b, integer_t const ldb, traits::complex_d* x,
             integer_t const ldx, traits::complex_d* work,
- traits::complex_f* swork, integer_t& iter, integer_t& info ) {
+ traits::complex_f* swork, double* rwork, integer_t& iter,
+ integer_t& info ) {
         LAPACK_ZCGESV( &n, &nrhs, traits::complex_ptr(a), &lda, ipiv,
                 traits::complex_ptr(b), &ldb, traits::complex_ptr(x), &ldx,
- traits::complex_ptr(work), traits::complex_ptr(swork), &iter,
- &info );
+ traits::complex_ptr(work), traits::complex_ptr(swork), rwork,
+ &iter, &info );
     }
 }
 
@@ -54,10 +55,10 @@
 
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
- typename MatrixX, typename WORK, typename SWORK >
+ typename MatrixX, typename WORK, typename SWORK, typename RWORK >
     static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
- integer_t& iter, integer_t& info, detail::workspace2< WORK,
- SWORK > work ) {
+ integer_t& iter, integer_t& info, detail::workspace3< WORK, SWORK,
+ RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -79,14 +80,16 @@
         BOOST_ASSERT( traits::vector_size(work.select(value_type())) >=
                 min_size_swork( traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ));
+ BOOST_ASSERT( traits::vector_size(work.select(real_type())) >=
+ min_size_rwork( traits::matrix_num_columns(a) ));
         detail::cgesv( traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b), traits::matrix_storage(a),
                 traits::leading_dimension(a), traits::vector_storage(ipiv),
                 traits::matrix_storage(b), traits::leading_dimension(b),
                 traits::matrix_storage(x), traits::leading_dimension(x),
                 traits::matrix_storage(work),
- traits::vector_storage(work.select(value_type())), iter,
- info );
+ traits::vector_storage(work.select(value_type())),
+ traits::vector_storage(work.select(real_type())), iter, info );
     }
 
     // minimal workspace specialization
@@ -99,7 +102,10 @@
         traits::detail::array< value_type > tmp_swork( min_size_swork(
                 traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
- invoke( a, ipiv, b, x, iter, info, workspace( tmp_work, tmp_swork ) );
+ traits::detail::array< real_type > tmp_rwork( min_size_rwork(
+ traits::matrix_num_columns(a) ) );
+ invoke( a, ipiv, b, x, iter, info, workspace( tmp_work, tmp_swork,
+ tmp_rwork ) );
     }
 
     // optimal workspace specialization
@@ -118,6 +124,10 @@
             integer_t const nrhs ) {
         return n*(n+nrhs);
     }
+
+ static integer_t min_size_rwork( integer_t const n ) {
+ return n;
+ }
 };
 
 

Added: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -0,0 +1,155 @@
+//
+// Copyright (c) 2003--2009
+// Toon Knapen, Karl Meerbergen, Kresimir Fresl,
+// Thomas Klimpel and Rutger ter Borg
+//
+// 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)
+//
+// THIS FILE IS AUTOMATICALLY GENERATED
+// PLEASE DO NOT EDIT!
+//
+
+#ifndef BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_CPOSV_HPP
+#define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_CPOSV_HPP
+
+#include <boost/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/numeric/bindings/lapack/detail/lapack.h>
+#include <boost/numeric/bindings/lapack/workspace.hpp>
+#include <boost/numeric/bindings/traits/detail/array.hpp>
+#include <boost/numeric/bindings/traits/traits.hpp>
+#include <boost/numeric/bindings/traits/type_traits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost {
+namespace numeric {
+namespace bindings {
+namespace lapack {
+
+//$DESCRIPTION
+
+// overloaded functions to call lapack
+namespace detail {
+ inline void cposv( char const uplo, integer_t const n,
+ integer_t const nrhs, traits::complex_d* a, integer_t const lda,
+ traits::complex_d* b, integer_t const ldb, traits::complex_d* x,
+ integer_t const ldx, traits::complex_d* work,
+ traits::complex_f* swork, double* rwork, integer_t& iter,
+ integer_t& info ) {
+ LAPACK_ZCPOSV( &uplo, &n, &nrhs, traits::complex_ptr(a), &lda,
+ traits::complex_ptr(b), &ldb, traits::complex_ptr(x), &ldx,
+ traits::complex_ptr(work), traits::complex_ptr(swork), rwork,
+ &iter, &info );
+ }
+}
+
+// value-type based template
+template< typename ValueType >
+struct cposv_impl {
+
+ typedef ValueType value_type;
+ typedef typename traits::type_traits<ValueType>::real_type real_type;
+
+ // user-defined workspace specialization
+ template< typename MatrixA, typename MatrixB, typename MatrixX,
+ typename WORK, typename SWORK, typename RWORK >
+ static void invoke( MatrixA& a, MatrixB& b, MatrixX& x, integer_t& iter,
+ integer_t& info, detail::workspace3< WORK, SWORK, RWORK > work ) {
+ BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
+ MatrixA >::value_type, typename traits::matrix_traits<
+ MatrixB >::value_type >::value) );
+ BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
+ MatrixA >::value_type, typename traits::matrix_traits<
+ MatrixX >::value_type >::value) );
+ BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
+ traits::matrix_uplo_tag(a) == 'L' );
+ BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
+ BOOST_ASSERT( traits::matrix_num_columns(b) >= 0 );
+ BOOST_ASSERT( traits::leading_dimension(a) >= std::max(1,
+ traits::matrix_num_columns(a)) );
+ BOOST_ASSERT( traits::leading_dimension(b) >= std::max(1,
+ traits::matrix_num_columns(a)) );
+ BOOST_ASSERT( traits::leading_dimension(x) >= std::max(1,
+ traits::matrix_num_columns(a)) );
+ BOOST_ASSERT( traits::vector_size(work.select(value_type())) >=
+ min_size_work( $CALL_MIN_SIZE ));
+ BOOST_ASSERT( traits::vector_size(work.select(value_type())) >=
+ min_size_swork( traits::matrix_num_columns(a),
+ traits::matrix_num_columns(b) ));
+ BOOST_ASSERT( traits::vector_size(work.select(real_type())) >=
+ min_size_rwork( traits::matrix_num_columns(a) ));
+ detail::cposv( traits::matrix_uplo_tag(a),
+ traits::matrix_num_columns(a), traits::matrix_num_columns(b),
+ traits::matrix_storage(a), traits::leading_dimension(a),
+ traits::matrix_storage(b), traits::leading_dimension(b),
+ traits::matrix_storage(x), traits::leading_dimension(x),
+ traits::matrix_storage(work),
+ traits::vector_storage(work.select(value_type())),
+ traits::vector_storage(work.select(real_type())), iter, info );
+ }
+
+ // minimal workspace specialization
+ template< typename MatrixA, typename MatrixB, typename MatrixX >
+ static void invoke( MatrixA& a, MatrixB& b, MatrixX& x, integer_t& iter,
+ integer_t& info, minimal_workspace work ) {
+ traits::detail::array< value_type > tmp_work( min_size_work(
+ $CALL_MIN_SIZE ) );
+ traits::detail::array< value_type > tmp_swork( min_size_swork(
+ traits::matrix_num_columns(a),
+ traits::matrix_num_columns(b) ) );
+ traits::detail::array< real_type > tmp_rwork( min_size_rwork(
+ traits::matrix_num_columns(a) ) );
+ invoke( a, b, x, iter, info, workspace( tmp_work, tmp_swork,
+ tmp_rwork ) );
+ }
+
+ // optimal workspace specialization
+ template< typename MatrixA, typename MatrixB, typename MatrixX >
+ static void invoke( MatrixA& a, MatrixB& b, MatrixX& x, integer_t& iter,
+ integer_t& info, optimal_workspace work ) {
+ invoke( a, b, x, iter, info, minimal_workspace() );
+ }
+
+ static integer_t min_size_work( $ARGUMENTS ) {
+ $MIN_SIZE
+ }
+
+ static integer_t min_size_swork( integer_t const n,
+ integer_t const nrhs ) {
+ return n*(n+nrhs);
+ }
+
+ static integer_t min_size_rwork( integer_t const n ) {
+ return n;
+ }
+};
+
+
+// template function to call cposv
+template< typename MatrixA, typename MatrixB, typename MatrixX,
+ typename Workspace >
+inline integer_t cposv( MatrixA& a, MatrixB& b, MatrixX& x,
+ integer_t& iter, Workspace work ) {
+ typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
+ integer_t info(0);
+ cposv_impl< value_type >::invoke( a, b, x, iter, info, work );
+ return info;
+}
+
+// template function to call cposv, default workspace type
+template< typename MatrixA, typename MatrixB, typename MatrixX >
+inline integer_t cposv( MatrixA& a, MatrixB& b, MatrixX& x,
+ integer_t& iter ) {
+ typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
+ integer_t info(0);
+ cposv_impl< value_type >::invoke( a, b, x, iter, info,
+ optimal_workspace() );
+ return info;
+}
+
+}}}} // namespace boost::numeric::bindings::lapack
+
+#endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
+#include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
+#include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>

Added: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -0,0 +1,141 @@
+//
+// Copyright (c) 2003--2009
+// Toon Knapen, Karl Meerbergen, Kresimir Fresl,
+// Thomas Klimpel and Rutger ter Borg
+//
+// 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)
+//
+// THIS FILE IS AUTOMATICALLY GENERATED
+// PLEASE DO NOT EDIT!
+//
+
+#ifndef BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPOSV_HPP
+#define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPOSV_HPP
+
+#include <boost/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/numeric/bindings/lapack/detail/lapack.h>
+#include <boost/numeric/bindings/lapack/workspace.hpp>
+#include <boost/numeric/bindings/traits/detail/array.hpp>
+#include <boost/numeric/bindings/traits/traits.hpp>
+#include <boost/numeric/bindings/traits/type_traits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost {
+namespace numeric {
+namespace bindings {
+namespace lapack {
+
+//$DESCRIPTION
+
+// overloaded functions to call lapack
+namespace detail {
+ inline void sposv( char const uplo, integer_t const n,
+ integer_t const nrhs, double* a, integer_t const lda, double* b,
+ integer_t const ldb, double* x, integer_t const ldx, double* work,
+ float* swork, integer_t& iter, integer_t& info ) {
+ LAPACK_DSPOSV( &uplo, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, work,
+ swork, &iter, &info );
+ }
+}
+
+// value-type based template
+template< typename ValueType >
+struct sposv_impl {
+
+ typedef ValueType value_type;
+ typedef typename traits::type_traits<ValueType>::real_type real_type;
+
+ // user-defined workspace specialization
+ template< typename MatrixA, typename MatrixB, typename MatrixX,
+ typename WORK, typename SWORK >
+ static void invoke( MatrixA& a, MatrixB& b, MatrixX& x, integer_t& iter,
+ integer_t& info, detail::workspace2< WORK, SWORK > work ) {
+ BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
+ MatrixA >::value_type, typename traits::matrix_traits<
+ MatrixB >::value_type >::value) );
+ BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
+ MatrixA >::value_type, typename traits::matrix_traits<
+ MatrixX >::value_type >::value) );
+ BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
+ traits::matrix_uplo_tag(a) == 'L' );
+ BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
+ BOOST_ASSERT( traits::matrix_num_columns(b) >= 0 );
+ BOOST_ASSERT( traits::leading_dimension(a) >= std::max(1,
+ traits::matrix_num_columns(a)) );
+ BOOST_ASSERT( traits::leading_dimension(b) >= std::max(1,
+ traits::matrix_num_columns(a)) );
+ BOOST_ASSERT( traits::leading_dimension(x) >= std::max(1,
+ traits::matrix_num_columns(a)) );
+ BOOST_ASSERT( traits::vector_size(work.select(real_type())) >=
+ min_size_work( $CALL_MIN_SIZE ));
+ BOOST_ASSERT( traits::vector_size(work.select(real_type())) >=
+ min_size_swork( traits::matrix_num_columns(a),
+ traits::matrix_num_columns(b) ));
+ detail::sposv( traits::matrix_uplo_tag(a),
+ traits::matrix_num_columns(a), traits::matrix_num_columns(b),
+ traits::matrix_storage(a), traits::leading_dimension(a),
+ traits::matrix_storage(b), traits::leading_dimension(b),
+ traits::matrix_storage(x), traits::leading_dimension(x),
+ traits::matrix_storage(work),
+ traits::vector_storage(work.select(real_type())), iter, info );
+ }
+
+ // minimal workspace specialization
+ template< typename MatrixA, typename MatrixB, typename MatrixX >
+ static void invoke( MatrixA& a, MatrixB& b, MatrixX& x, integer_t& iter,
+ integer_t& info, minimal_workspace work ) {
+ traits::detail::array< real_type > tmp_work( min_size_work(
+ $CALL_MIN_SIZE ) );
+ traits::detail::array< real_type > tmp_swork( min_size_swork(
+ traits::matrix_num_columns(a),
+ traits::matrix_num_columns(b) ) );
+ invoke( a, b, x, iter, info, workspace( tmp_work, tmp_swork ) );
+ }
+
+ // optimal workspace specialization
+ template< typename MatrixA, typename MatrixB, typename MatrixX >
+ static void invoke( MatrixA& a, MatrixB& b, MatrixX& x, integer_t& iter,
+ integer_t& info, optimal_workspace work ) {
+ invoke( a, b, x, iter, info, minimal_workspace() );
+ }
+
+ static integer_t min_size_work( $ARGUMENTS ) {
+ $MIN_SIZE
+ }
+
+ static integer_t min_size_swork( integer_t const n,
+ integer_t const nrhs ) {
+ return n*(n+nrhs);
+ }
+};
+
+
+// template function to call sposv
+template< typename MatrixA, typename MatrixB, typename MatrixX,
+ typename Workspace >
+inline integer_t sposv( MatrixA& a, MatrixB& b, MatrixX& x,
+ integer_t& iter, Workspace work ) {
+ typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
+ integer_t info(0);
+ sposv_impl< value_type >::invoke( a, b, x, iter, info, work );
+ return info;
+}
+
+// template function to call sposv, default workspace type
+template< typename MatrixA, typename MatrixB, typename MatrixX >
+inline integer_t sposv( MatrixA& a, MatrixB& b, MatrixX& x,
+ integer_t& iter ) {
+ typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
+ integer_t info(0);
+ sposv_impl< value_type >::invoke( a, b, x, iter, info,
+ optimal_workspace() );
+ return info;
+}
+
+}}}} // namespace boost::numeric::bindings::lapack
+
+#endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/solve.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/solve.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/solve.hpp 2009-03-30 03:05:21 EDT (Mon, 30 Mar 2009)
@@ -9,11 +9,10 @@
 #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_SOLVE_HPP
 #define BOOST_NUMERIC_BINDINGS_LAPACK_SOLVE_HPP
 
-#include <boost/numeric/bindings/traits/traits.hpp>
-#include <boost/numeric/bindings/traits/detail/array.hpp>
+// LAPACK User's Guide table 2.2; simple driver routines
 #include <boost/numeric/bindings/lapack/driver/gesv.hpp>
-//#include <boost/numeric/bindings/lapack/driver/gbsv.hpp>
-//#include <boost/numeric/bindings/lapack/driver/gtsv.hpp>
+#include <boost/numeric/bindings/lapack/driver/gbsv.hpp>
+#include <boost/numeric/bindings/lapack/driver/gtsv.hpp>
 #include <boost/numeric/bindings/lapack/driver/hesv.hpp>
 #include <boost/numeric/bindings/lapack/driver/hpsv.hpp>
 #include <boost/numeric/bindings/lapack/driver/posv.hpp>
@@ -23,6 +22,20 @@
 #include <boost/numeric/bindings/lapack/driver/sysv.hpp>
 #include <boost/numeric/bindings/lapack/driver/spsv.hpp>
 
+// LAPACK User's guide table 2.2; expert driver routines
+#include <boost/numeric/bindings/lapack/driver/gesvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/gbsvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/gtsvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/hesvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/hpsvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/posvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/ppsvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/pbsvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/ptsvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/sysvx.hpp>
+#include <boost/numeric/bindings/lapack/driver/spsvx.hpp>
+
+
 #include <boost/numeric/bindings/lapack/keywords.hpp>
 
 #include <boost/mpl/at.hpp>
@@ -53,7 +66,18 @@
   // mpl::pair< traits::banded_t, gbsv_impl< value_type > >,
         mpl::pair< traits::unknown_structure_t, gesv_impl< value_type > > > simple_map;
 
- typedef typename mpl::at< simple_map, matrix_structure >::type simple;
+ typedef typename mpl::at< simple_map, matrix_structure >::type simple_driver;
+
+ typedef typename mpl::map<
+ mpl::pair< traits::general_t, gesvx_impl< value_type > >,
+ mpl::pair< traits::symmetric_t, sysvx_impl< value_type > >,
+ mpl::pair< traits::symmetric_packed_t, spsvx_impl< value_type > >,
+ mpl::pair< traits::hermitian_t, hesvx_impl< value_type > >,
+ mpl::pair< traits::hermitian_packed_t, hpsvx_impl< value_type > >,
+ // mpl::pair< traits::banded_t, gbsv_impl< value_type > >,
+ mpl::pair< traits::unknown_structure_t, gesvx_impl< value_type > > > expert_map;
+
+ typedef typename mpl::at< simple_map, matrix_structure >::type expert_driver;
 
 };
 
@@ -70,7 +94,7 @@
             typename solve_impl< A_type >::null_type() )
     )
     ) {
- typedef typename solve_impl< A_type >::simple routine;
+ typedef typename solve_impl< A_type >::simple_driver routine;
         integer_t info(0);
         routine::solve( A, B, pivot, info );
     }


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