$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r51384 - in sandbox/numeric_bindings: boost/numeric/bindings/blas/level2 boost/numeric/bindings/blas/level3 boost/numeric/bindings/lapack/computational libs/numeric/bindings/tools libs/numeric/bindings/tools/templates/level2 libs/numeric/bindings/tools/templates/level3
From: rutger_at_[hidden]
Date: 2009-02-22 04:52:16
Author: rutger
Date: 2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
New Revision: 51384
URL: http://svn.boost.org/trac/boost/changeset/51384
Log:
Improved UPLO traits detection, character assert detection needs to be done next
Added:
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/tbmv.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/tbsv.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/trmv.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/trsv.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/trmm.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/trsm.hpp   (contents, props changed)
Text files modified: 
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp           |    18 +++++++++---------                      
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp           |    20 ++++++++++----------                    
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp            |    17 +++++++++--------                       
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp           |    20 ++++++++++----------                    
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp           |    19 +++++++++----------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp            |    16 ++++++++--------                        
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp           |    19 +++++++++----------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp           |    18 +++++++++---------                      
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp           |    18 +++++++++---------                      
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp            |    16 ++++++++--------                        
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp           |    18 +++++++++---------                      
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp           |    19 ++++++++++---------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp            |    17 +++++++++--------                       
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp           |    19 ++++++++++---------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp           |    17 +++++++++--------                       
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp           |    17 +++++++++--------                       
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp           |    16 ++++++++--------                        
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp           |    16 ++++++++--------                        
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp           |    17 +++++++++--------                       
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp           |    17 +++++++++--------                       
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp           |    19 +++++++++----------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp          |    23 +++++++++++------------                 
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp           |    19 +++++++++----------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp           |    19 +++++++++----------                     
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp          |    24 ++++++++++++------------                
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp           |    18 +++++++++---------                      
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp           |    23 +++++++++++------------                 
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp           |    23 +++++++++++------------                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp |    28 +++++++++++++++-------------            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp |    21 ++++++++++-----------                   
   sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py                 |    28 ++++++++++++++++++----------            
   31 files changed, 304 insertions(+), 295 deletions(-)
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -57,23 +57,23 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorY >
-    static return_type compute( char const uplo, integer_t const k,
+    static return_type compute( integer_t const k,
             traits::complex_d const alpha, MatrixA& a, VectorX& x,
             traits::complex_d const beta, VectorY& y ) {
-        detail::hbmv( uplo, traits::matrix_size2(a), k, alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x), beta,
-                traits::vector_storage(y), traits::vector_stride(y) );
+        detail::hbmv( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), k, alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x), beta, traits::vector_storage(y),
+                traits::vector_stride(y) );
     }
 };
 
 // template function to call hbmv
 template< typename MatrixA, typename VectorX, typename VectorY >
-inline integer_t hbmv( char const uplo, integer_t const k,
-        traits::complex_d const alpha, MatrixA& a, VectorX& x,
-        traits::complex_d const beta, VectorY& y ) {
+inline integer_t hbmv( integer_t const k, traits::complex_d const alpha,
+        MatrixA& a, VectorX& x, traits::complex_d const beta, VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    hbmv_impl< value_type >::compute( uplo, k, alpha, a, x, beta, y );
+    hbmv_impl< value_type >::compute( k, alpha, a, x, beta, y );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -57,22 +57,22 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorY >
-    static return_type compute( char const uplo,
-            traits::complex_d const alpha, MatrixA& a, VectorX& x,
-            traits::complex_d const beta, VectorY& y ) {
-        detail::hemv( uplo, traits::matrix_size2(a), alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x), beta,
-                traits::vector_storage(y), traits::vector_stride(y) );
+    static return_type compute( traits::complex_d const alpha, MatrixA& a,
+            VectorX& x, traits::complex_d const beta, VectorY& y ) {
+        detail::hemv( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x), beta, traits::vector_storage(y),
+                traits::vector_stride(y) );
     }
 };
 
 // template function to call hemv
 template< typename MatrixA, typename VectorX, typename VectorY >
-inline integer_t hemv( char const uplo, traits::complex_d const alpha,
-        MatrixA& a, VectorX& x, traits::complex_d const beta, VectorY& y ) {
+inline integer_t hemv( traits::complex_d const alpha, MatrixA& a,
+        VectorX& x, traits::complex_d const beta, VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    hemv_impl< value_type >::compute( uplo, alpha, a, x, beta, y );
+    hemv_impl< value_type >::compute( alpha, a, x, beta, y );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -51,21 +51,22 @@
 
     // templated specialization
     template< typename VectorX, typename MatrixA >
-    static return_type compute( char const uplo, real_type const alpha,
-            VectorX& x, MatrixA& a ) {
-        detail::her( uplo, traits::matrix_size2(a), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::matrix_storage(a), traits::leading_dimension(a) );
+    static return_type compute( real_type const alpha, VectorX& x,
+            MatrixA& a ) {
+        detail::her( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::matrix_storage(a),
+                traits::leading_dimension(a) );
     }
 };
 
 // template function to call her
 template< typename VectorX, typename MatrixA >
-inline integer_t her( char const uplo,
-        typename traits::vector_traits< VectorX >::value_type const alpha,
+
+        inline integer_t her( typename traits::vector_traits< VectorX >::value_type const alpha,
         VectorX& x, MatrixA& a ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    her_impl< value_type >::compute( uplo, alpha, x, a );
+    her_impl< value_type >::compute( alpha, x, a );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -55,22 +55,22 @@
 
     // templated specialization
     template< typename VectorX, typename VectorY, typename MatrixA >
-    static return_type compute( char const uplo,
-            traits::complex_d const alpha, VectorX& x, VectorY& y,
-            MatrixA& a ) {
-        detail::her2( uplo, traits::matrix_size2(a), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::vector_storage(y), traits::vector_stride(y),
-                traits::matrix_storage(a), traits::leading_dimension(a) );
+    static return_type compute( traits::complex_d const alpha, VectorX& x,
+            VectorY& y, MatrixA& a ) {
+        detail::her2( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::vector_storage(y),
+                traits::vector_stride(y), traits::matrix_storage(a),
+                traits::leading_dimension(a) );
     }
 };
 
 // template function to call her2
 template< typename VectorX, typename VectorY, typename MatrixA >
-inline integer_t her2( char const uplo, traits::complex_d const alpha,
-        VectorX& x, VectorY& y, MatrixA& a ) {
+inline integer_t her2( traits::complex_d const alpha, VectorX& x,
+        VectorY& y, MatrixA& a ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    her2_impl< value_type >::compute( uplo, alpha, x, y, a );
+    her2_impl< value_type >::compute( alpha, x, y, a );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -57,22 +57,21 @@
 
     // templated specialization
     template< typename MatrixAP, typename VectorX, typename VectorY >
-    static return_type compute( char const uplo,
-            traits::complex_d const alpha, MatrixAP& ap, VectorX& x,
-            traits::complex_d const beta, VectorY& y ) {
-        detail::hpmv( uplo, traits::matrix_size2(ap), alpha,
-                traits::matrix_storage(ap), traits::vector_storage(x),
-                traits::vector_stride(x), beta, traits::vector_storage(y),
-                traits::vector_stride(y) );
+    static return_type compute( traits::complex_d const alpha, MatrixAP& ap,
+            VectorX& x, traits::complex_d const beta, VectorY& y ) {
+        detail::hpmv( traits::matrix_uplo_tag(ap),
+                traits::matrix_size2(ap), alpha, traits::matrix_storage(ap),
+                traits::vector_storage(x), traits::vector_stride(x), beta,
+                traits::vector_storage(y), traits::vector_stride(y) );
     }
 };
 
 // template function to call hpmv
 template< typename MatrixAP, typename VectorX, typename VectorY >
-inline integer_t hpmv( char const uplo, traits::complex_d const alpha,
-        MatrixAP& ap, VectorX& x, traits::complex_d const beta, VectorY& y ) {
+inline integer_t hpmv( traits::complex_d const alpha, MatrixAP& ap,
+        VectorX& x, traits::complex_d const beta, VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
-    hpmv_impl< value_type >::compute( uplo, alpha, ap, x, beta, y );
+    hpmv_impl< value_type >::compute( alpha, ap, x, beta, y );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -51,21 +51,21 @@
 
     // templated specialization
     template< typename VectorX, typename MatrixAP >
-    static return_type compute( char const uplo, real_type const alpha,
-            VectorX& x, MatrixAP& ap ) {
-        detail::hpr( uplo, traits::matrix_size2(ap), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::matrix_storage(ap) );
+    static return_type compute( real_type const alpha, VectorX& x,
+            MatrixAP& ap ) {
+        detail::hpr( traits::matrix_uplo_tag(ap),
+                traits::matrix_size2(ap), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::matrix_storage(ap) );
     }
 };
 
 // template function to call hpr
 template< typename VectorX, typename MatrixAP >
-inline integer_t hpr( char const uplo,
-        typename traits::vector_traits< VectorX >::value_type const alpha,
+
+        inline integer_t hpr( typename traits::vector_traits< VectorX >::value_type const alpha,
         VectorX& x, MatrixAP& ap ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    hpr_impl< value_type >::compute( uplo, alpha, x, ap );
+    hpr_impl< value_type >::compute( alpha, x, ap );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -55,22 +55,21 @@
 
     // templated specialization
     template< typename VectorX, typename VectorY, typename MatrixAP >
-    static return_type compute( char const uplo,
-            traits::complex_d const alpha, VectorX& x, VectorY& y,
-            MatrixAP& ap ) {
-        detail::hpr2( uplo, traits::matrix_size2(ap), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::vector_storage(y), traits::vector_stride(y),
-                traits::matrix_storage(ap) );
+    static return_type compute( traits::complex_d const alpha, VectorX& x,
+            VectorY& y, MatrixAP& ap ) {
+        detail::hpr2( traits::matrix_uplo_tag(ap),
+                traits::matrix_size2(ap), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::vector_storage(y),
+                traits::vector_stride(y), traits::matrix_storage(ap) );
     }
 };
 
 // template function to call hpr2
 template< typename VectorX, typename VectorY, typename MatrixAP >
-inline integer_t hpr2( char const uplo, traits::complex_d const alpha,
-        VectorX& x, VectorY& y, MatrixAP& ap ) {
+inline integer_t hpr2( traits::complex_d const alpha, VectorX& x,
+        VectorY& y, MatrixAP& ap ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    hpr2_impl< value_type >::compute( uplo, alpha, x, y, ap );
+    hpr2_impl< value_type >::compute( alpha, x, y, ap );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -53,25 +53,25 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorY >
-    static return_type compute( char const uplo, integer_t const k,
-            real_type const alpha, MatrixA& a, VectorX& x,
-            real_type const beta, VectorY& y ) {
-        detail::sbmv( uplo, traits::matrix_size2(a), k, alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x), beta,
-                traits::vector_storage(y), traits::vector_stride(y) );
+    static return_type compute( integer_t const k, real_type const alpha,
+            MatrixA& a, VectorX& x, real_type const beta, VectorY& y ) {
+        detail::sbmv( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), k, alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x), beta, traits::vector_storage(y),
+                traits::vector_stride(y) );
     }
 };
 
 // template function to call sbmv
 template< typename MatrixA, typename VectorX, typename VectorY >
-inline integer_t sbmv( char const uplo, integer_t const k,
+inline integer_t sbmv( integer_t const k,
         typename traits::matrix_traits< MatrixA >::value_type const alpha,
         MatrixA& a, VectorX& x,
         typename traits::matrix_traits< MatrixA >::value_type const beta,
         VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    sbmv_impl< value_type >::compute( uplo, k, alpha, a, x, beta, y );
+    sbmv_impl< value_type >::compute( k, alpha, a, x, beta, y );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -49,24 +49,24 @@
 
     // templated specialization
     template< typename MatrixAP, typename VectorX, typename VectorY >
-    static return_type compute( char const uplo, real_type const alpha,
-            MatrixAP& ap, VectorX& x, real_type const beta, VectorY& y ) {
-        detail::spmv( uplo, traits::matrix_size2(ap), alpha,
-                traits::matrix_storage(ap), traits::vector_storage(x),
-                traits::vector_stride(x), beta, traits::vector_storage(y),
-                traits::vector_stride(y) );
+    static return_type compute( real_type const alpha, MatrixAP& ap,
+            VectorX& x, real_type const beta, VectorY& y ) {
+        detail::spmv( traits::matrix_uplo_tag(ap),
+                traits::matrix_size2(ap), alpha, traits::matrix_storage(ap),
+                traits::vector_storage(x), traits::vector_stride(x), beta,
+                traits::vector_storage(y), traits::vector_stride(y) );
     }
 };
 
 // template function to call spmv
 template< typename MatrixAP, typename VectorX, typename VectorY >
-inline integer_t spmv( char const uplo,
-        typename traits::matrix_traits< MatrixAP >::value_type const alpha,
+
+        inline integer_t spmv( typename traits::matrix_traits< MatrixAP >::value_type const alpha,
         MatrixAP& ap, VectorX& x,
         typename traits::matrix_traits< MatrixAP >::value_type const beta,
         VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
-    spmv_impl< value_type >::compute( uplo, alpha, ap, x, beta, y );
+    spmv_impl< value_type >::compute( alpha, ap, x, beta, y );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -47,21 +47,21 @@
 
     // templated specialization
     template< typename VectorX, typename MatrixAP >
-    static return_type compute( char const uplo, real_type const alpha,
-            VectorX& x, MatrixAP& ap ) {
-        detail::spr( uplo, traits::matrix_size2(ap), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::matrix_storage(ap) );
+    static return_type compute( real_type const alpha, VectorX& x,
+            MatrixAP& ap ) {
+        detail::spr( traits::matrix_uplo_tag(ap),
+                traits::matrix_size2(ap), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::matrix_storage(ap) );
     }
 };
 
 // template function to call spr
 template< typename VectorX, typename MatrixAP >
-inline integer_t spr( char const uplo,
-        typename traits::vector_traits< VectorX >::value_type const alpha,
+
+        inline integer_t spr( typename traits::vector_traits< VectorX >::value_type const alpha,
         VectorX& x, MatrixAP& ap ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    spr_impl< value_type >::compute( uplo, alpha, x, ap );
+    spr_impl< value_type >::compute( alpha, x, ap );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -49,22 +49,22 @@
 
     // templated specialization
     template< typename VectorX, typename VectorY, typename MatrixAP >
-    static return_type compute( char const uplo, real_type const alpha,
-            VectorX& x, VectorY& y, MatrixAP& ap ) {
-        detail::spr2( uplo, traits::matrix_size2(ap), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::vector_storage(y), traits::vector_stride(y),
-                traits::matrix_storage(ap) );
+    static return_type compute( real_type const alpha, VectorX& x, VectorY& y,
+            MatrixAP& ap ) {
+        detail::spr2( traits::matrix_uplo_tag(ap),
+                traits::matrix_size2(ap), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::vector_storage(y),
+                traits::vector_stride(y), traits::matrix_storage(ap) );
     }
 };
 
 // template function to call spr2
 template< typename VectorX, typename VectorY, typename MatrixAP >
-inline integer_t spr2( char const uplo,
-        typename traits::vector_traits< VectorX >::value_type const alpha,
+
+        inline integer_t spr2( typename traits::vector_traits< VectorX >::value_type const alpha,
         VectorX& x, VectorY& y, MatrixAP& ap ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    spr2_impl< value_type >::compute( uplo, alpha, x, y, ap );
+    spr2_impl< value_type >::compute( alpha, x, y, ap );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -49,24 +49,25 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorY >
-    static return_type compute( char const uplo, real_type const alpha,
-            MatrixA& a, VectorX& x, real_type const beta, VectorY& y ) {
-        detail::symv( uplo, traits::matrix_size2(a), alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x), beta,
-                traits::vector_storage(y), traits::vector_stride(y) );
+    static return_type compute( real_type const alpha, MatrixA& a, VectorX& x,
+            real_type const beta, VectorY& y ) {
+        detail::symv( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x), beta, traits::vector_storage(y),
+                traits::vector_stride(y) );
     }
 };
 
 // template function to call symv
 template< typename MatrixA, typename VectorX, typename VectorY >
-inline integer_t symv( char const uplo,
-        typename traits::matrix_traits< MatrixA >::value_type const alpha,
+
+        inline integer_t symv( typename traits::matrix_traits< MatrixA >::value_type const alpha,
         MatrixA& a, VectorX& x,
         typename traits::matrix_traits< MatrixA >::value_type const beta,
         VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    symv_impl< value_type >::compute( uplo, alpha, a, x, beta, y );
+    symv_impl< value_type >::compute( alpha, a, x, beta, y );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -47,21 +47,22 @@
 
     // templated specialization
     template< typename VectorX, typename MatrixA >
-    static return_type compute( char const uplo, real_type const alpha,
-            VectorX& x, MatrixA& a ) {
-        detail::syr( uplo, traits::matrix_size2(a), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::matrix_storage(a), traits::leading_dimension(a) );
+    static return_type compute( real_type const alpha, VectorX& x,
+            MatrixA& a ) {
+        detail::syr( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::matrix_storage(a),
+                traits::leading_dimension(a) );
     }
 };
 
 // template function to call syr
 template< typename VectorX, typename MatrixA >
-inline integer_t syr( char const uplo,
-        typename traits::vector_traits< VectorX >::value_type const alpha,
+
+        inline integer_t syr( typename traits::vector_traits< VectorX >::value_type const alpha,
         VectorX& x, MatrixA& a ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    syr_impl< value_type >::compute( uplo, alpha, x, a );
+    syr_impl< value_type >::compute( alpha, x, a );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -49,22 +49,23 @@
 
     // templated specialization
     template< typename VectorX, typename VectorY, typename MatrixA >
-    static return_type compute( char const uplo, real_type const alpha,
-            VectorX& x, VectorY& y, MatrixA& a ) {
-        detail::syr2( uplo, traits::matrix_size2(a), alpha,
-                traits::vector_storage(x), traits::vector_stride(x),
-                traits::vector_storage(y), traits::vector_stride(y),
-                traits::matrix_storage(a), traits::leading_dimension(a) );
+    static return_type compute( real_type const alpha, VectorX& x, VectorY& y,
+            MatrixA& a ) {
+        detail::syr2( traits::matrix_uplo_tag(a),
+                traits::matrix_size2(a), alpha, traits::vector_storage(x),
+                traits::vector_stride(x), traits::vector_storage(y),
+                traits::vector_stride(y), traits::matrix_storage(a),
+                traits::leading_dimension(a) );
     }
 };
 
 // template function to call syr2
 template< typename VectorX, typename VectorY, typename MatrixA >
-inline integer_t syr2( char const uplo,
-        typename traits::vector_traits< VectorX >::value_type const alpha,
+
+        inline integer_t syr2( typename traits::vector_traits< VectorX >::value_type const alpha,
         VectorX& x, VectorY& y, MatrixA& a ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
-    syr2_impl< value_type >::compute( uplo, alpha, x, y, a );
+    syr2_impl< value_type >::compute( alpha, x, y, a );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -61,20 +61,21 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX >
-    static return_type compute( char const uplo, char const trans,
-            char const diag, integer_t const k, MatrixA& a, VectorX& x ) {
-        detail::tbmv( uplo, trans, diag, traits::matrix_size2(a), k,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x) );
+    static return_type compute( char const trans, char const diag,
+            integer_t const k, MatrixA& a, VectorX& x ) {
+        detail::tbmv( traits::matrix_uplo_tag(a), trans, diag,
+                traits::matrix_size2(a), k, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x) );
     }
 };
 
 // template function to call tbmv
 template< typename MatrixA, typename VectorX >
-inline integer_t tbmv( char const uplo, char const trans,
-        char const diag, integer_t const k, MatrixA& a, VectorX& x ) {
+inline integer_t tbmv( char const trans, char const diag,
+        integer_t const k, MatrixA& a, VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    tbmv_impl< value_type >::compute( uplo, trans, diag, k, a, x );
+    tbmv_impl< value_type >::compute( trans, diag, k, a, x );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -61,20 +61,21 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX >
-    static return_type compute( char const uplo, char const trans,
-            char const diag, integer_t const k, MatrixA& a, VectorX& x ) {
-        detail::tbsv( uplo, trans, diag, traits::matrix_size2(a), k,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x) );
+    static return_type compute( char const trans, char const diag,
+            integer_t const k, MatrixA& a, VectorX& x ) {
+        detail::tbsv( traits::matrix_uplo_tag(a), trans, diag,
+                traits::matrix_size2(a), k, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x) );
     }
 };
 
 // template function to call tbsv
 template< typename MatrixA, typename VectorX >
-inline integer_t tbsv( char const uplo, char const trans,
-        char const diag, integer_t const k, MatrixA& a, VectorX& x ) {
+inline integer_t tbsv( char const trans, char const diag,
+        integer_t const k, MatrixA& a, VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    tbsv_impl< value_type >::compute( uplo, trans, diag, k, a, x );
+    tbsv_impl< value_type >::compute( trans, diag, k, a, x );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -59,20 +59,20 @@
 
     // templated specialization
     template< typename MatrixAP, typename VectorX >
-    static return_type compute( char const uplo, char const trans,
-            char const diag, MatrixAP& ap, VectorX& x ) {
-        detail::tpmv( uplo, trans, diag, traits::matrix_size2(ap),
-                traits::matrix_storage(ap), traits::vector_storage(x),
-                traits::vector_stride(x) );
+    static return_type compute( char const trans, char const diag,
+            MatrixAP& ap, VectorX& x ) {
+        detail::tpmv( traits::matrix_uplo_tag(ap), trans, diag,
+                traits::matrix_size2(ap), traits::matrix_storage(ap),
+                traits::vector_storage(x), traits::vector_stride(x) );
     }
 };
 
 // template function to call tpmv
 template< typename MatrixAP, typename VectorX >
-inline integer_t tpmv( char const uplo, char const trans,
-        char const diag, MatrixAP& ap, VectorX& x ) {
+inline integer_t tpmv( char const trans, char const diag, MatrixAP& ap,
+        VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
-    tpmv_impl< value_type >::compute( uplo, trans, diag, ap, x );
+    tpmv_impl< value_type >::compute( trans, diag, ap, x );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -59,20 +59,20 @@
 
     // templated specialization
     template< typename MatrixAP, typename VectorX >
-    static return_type compute( char const uplo, char const trans,
-            char const diag, MatrixAP& ap, VectorX& x ) {
-        detail::tpsv( uplo, trans, diag, traits::matrix_size2(ap),
-                traits::matrix_storage(ap), traits::vector_storage(x),
-                traits::vector_stride(x) );
+    static return_type compute( char const trans, char const diag,
+            MatrixAP& ap, VectorX& x ) {
+        detail::tpsv( traits::matrix_uplo_tag(ap), trans, diag,
+                traits::matrix_size2(ap), traits::matrix_storage(ap),
+                traits::vector_storage(x), traits::vector_stride(x) );
     }
 };
 
 // template function to call tpsv
 template< typename MatrixAP, typename VectorX >
-inline integer_t tpsv( char const uplo, char const trans,
-        char const diag, MatrixAP& ap, VectorX& x ) {
+inline integer_t tpsv( char const trans, char const diag, MatrixAP& ap,
+        VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
-    tpsv_impl< value_type >::compute( uplo, trans, diag, ap, x );
+    tpsv_impl< value_type >::compute( trans, diag, ap, x );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -61,20 +61,21 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX >
-    static return_type compute( char const uplo, char const trans,
-            char const diag, MatrixA& a, VectorX& x ) {
-        detail::trmv( uplo, trans, diag, traits::matrix_size2(a),
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x) );
+    static return_type compute( char const trans, char const diag, MatrixA& a,
+            VectorX& x ) {
+        detail::trmv( traits::matrix_uplo_tag(a), trans, diag,
+                traits::matrix_size2(a), traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x) );
     }
 };
 
 // template function to call trmv
 template< typename MatrixA, typename VectorX >
-inline integer_t trmv( char const uplo, char const trans,
-        char const diag, MatrixA& a, VectorX& x ) {
+inline integer_t trmv( char const trans, char const diag, MatrixA& a,
+        VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    trmv_impl< value_type >::compute( uplo, trans, diag, a, x );
+    trmv_impl< value_type >::compute( trans, diag, a, x );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -61,20 +61,21 @@
 
     // templated specialization
     template< typename MatrixA, typename VectorX >
-    static return_type compute( char const uplo, char const trans,
-            char const diag, MatrixA& a, VectorX& x ) {
-        detail::trsv( uplo, trans, diag, traits::matrix_size2(a),
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::vector_storage(x), traits::vector_stride(x) );
+    static return_type compute( char const trans, char const diag, MatrixA& a,
+            VectorX& x ) {
+        detail::trsv( traits::matrix_uplo_tag(a), trans, diag,
+                traits::matrix_size2(a), traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::vector_storage(x),
+                traits::vector_stride(x) );
     }
 };
 
 // template function to call trsv
 template< typename MatrixA, typename VectorX >
-inline integer_t trsv( char const uplo, char const trans,
-        char const diag, MatrixA& a, VectorX& x ) {
+inline integer_t trsv( char const trans, char const diag, MatrixA& a,
+        VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    trsv_impl< value_type >::compute( uplo, trans, diag, a, x );
+    trsv_impl< value_type >::compute( trans, diag, a, x );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -57,24 +57,23 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC >
-    static return_type compute( char const side, char const uplo,
+    static return_type compute( char const side,
             traits::complex_d const alpha, MatrixA& a, MatrixB& b,
             traits::complex_d const beta, MatrixC& c ) {
-        detail::hemm( side, uplo, traits::matrix_size1(c),
-                traits::matrix_size2(c), alpha, traits::matrix_storage(a),
-                traits::leading_dimension(a), traits::matrix_storage(b),
-                traits::leading_dimension(b), beta, traits::matrix_storage(c),
-                traits::leading_dimension(c) );
+        detail::hemm( side, traits::matrix_uplo_tag(a),
+                traits::matrix_size1(c), traits::matrix_size2(c), alpha,
+                traits::matrix_storage(a), traits::leading_dimension(a),
+                traits::matrix_storage(b), traits::leading_dimension(b), beta,
+                traits::matrix_storage(c), traits::leading_dimension(c) );
     }
 };
 
 // template function to call hemm
 template< typename MatrixA, typename MatrixB, typename MatrixC >
-inline integer_t hemm( char const side, char const uplo,
-        traits::complex_d const alpha, MatrixA& a, MatrixB& b,
-        traits::complex_d const beta, MatrixC& c ) {
+inline integer_t hemm( char const side, traits::complex_d const alpha,
+        MatrixA& a, MatrixB& b, traits::complex_d const beta, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    hemm_impl< value_type >::compute( side, uplo, alpha, a, b, beta, c );
+    hemm_impl< value_type >::compute( side, alpha, a, b, beta, c );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -57,26 +57,25 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC >
-    static return_type compute( char const uplo, char const trans,
-            integer_t const k, traits::complex_d const alpha, MatrixA& a,
-            MatrixB& b, real_type const beta, MatrixC& c ) {
-        detail::her2k( uplo, trans, traits::matrix_size2(c), k, alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::matrix_storage(b), traits::leading_dimension(b), beta,
-                traits::matrix_storage(c), traits::leading_dimension(c) );
+    static return_type compute( char const trans, integer_t const k,
+            traits::complex_d const alpha, MatrixA& a, MatrixB& b,
+            real_type const beta, MatrixC& c ) {
+        detail::her2k( traits::matrix_uplo_tag(c), trans,
+                traits::matrix_size2(c), k, alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::matrix_storage(b),
+                traits::leading_dimension(b), beta, traits::matrix_storage(c),
+                traits::leading_dimension(c) );
     }
 };
 
 // template function to call her2k
 template< typename MatrixA, typename MatrixB, typename MatrixC >
-inline integer_t her2k( char const uplo, char const trans,
-        integer_t const k, traits::complex_d const alpha, MatrixA& a,
-        MatrixB& b,
+inline integer_t her2k( char const trans, integer_t const k,
+        traits::complex_d const alpha, MatrixA& a, MatrixB& b,
         typename traits::matrix_traits< MatrixA >::value_type const beta,
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    her2k_impl< value_type >::compute( uplo, trans, k, alpha, a, b, beta,
-            c );
+    her2k_impl< value_type >::compute( trans, k, alpha, a, b, beta, c );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -53,26 +53,25 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixC >
-    static return_type compute( char const uplo, char const trans,
-            integer_t const k, real_type const alpha, MatrixA& a,
-            real_type const beta, MatrixC& c ) {
-        detail::herk( uplo, trans, traits::matrix_size2(c), k, alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a), beta,
-                traits::matrix_storage(c), traits::leading_dimension(c) );
+    static return_type compute( char const trans, integer_t const k,
+            real_type const alpha, MatrixA& a, real_type const beta,
+            MatrixC& c ) {
+        detail::herk( traits::matrix_uplo_tag(c), trans,
+                traits::matrix_size2(c), k, alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), beta, traits::matrix_storage(c),
+                traits::leading_dimension(c) );
     }
 };
 
 // template function to call herk
 template< typename MatrixA, typename MatrixC >
-inline integer_t herk( char const uplo, char const trans,
-        integer_t const k,
+inline integer_t herk( char const trans, integer_t const k,
         typename traits::matrix_traits< MatrixA >::value_type const alpha,
         MatrixA& a,
         typename traits::matrix_traits< MatrixA >::value_type const beta,
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    herk_impl< value_type >::compute( uplo, trans, k, alpha, a, beta,
-            c );
+    herk_impl< value_type >::compute( trans, k, alpha, a, beta, c );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -71,24 +71,23 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC >
-    static return_type compute( char const side, char const uplo,
+    static return_type compute( char const side,
             traits::complex_d const alpha, MatrixA& a, MatrixB& b,
             traits::complex_d const beta, MatrixC& c ) {
-        detail::symm( side, uplo, traits::matrix_size1(c),
-                traits::matrix_size2(c), alpha, traits::matrix_storage(a),
-                traits::leading_dimension(a), traits::matrix_storage(b),
-                traits::leading_dimension(b), beta, traits::matrix_storage(c),
-                traits::leading_dimension(c) );
+        detail::symm( side, traits::matrix_uplo_tag(a),
+                traits::matrix_size1(c), traits::matrix_size2(c), alpha,
+                traits::matrix_storage(a), traits::leading_dimension(a),
+                traits::matrix_storage(b), traits::leading_dimension(b), beta,
+                traits::matrix_storage(c), traits::leading_dimension(c) );
     }
 };
 
 // template function to call symm
 template< typename MatrixA, typename MatrixB, typename MatrixC >
-inline integer_t symm( char const side, char const uplo,
-        traits::complex_d const alpha, MatrixA& a, MatrixB& b,
-        traits::complex_d const beta, MatrixC& c ) {
+inline integer_t symm( char const side, traits::complex_d const alpha,
+        MatrixA& a, MatrixB& b, traits::complex_d const beta, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    symm_impl< value_type >::compute( side, uplo, alpha, a, b, beta, c );
+    symm_impl< value_type >::compute( side, alpha, a, b, beta, c );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -71,24 +71,24 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC >
-    static return_type compute( char const uplo, char const trans,
-            integer_t const k, traits::complex_d const alpha, MatrixA& a,
-            MatrixB& b, traits::complex_d const beta, MatrixC& c ) {
-        detail::syr2k( uplo, trans, traits::matrix_size2(c), k, alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a),
-                traits::matrix_storage(b), traits::leading_dimension(b), beta,
-                traits::matrix_storage(c), traits::leading_dimension(c) );
+    static return_type compute( char const trans, integer_t const k,
+            traits::complex_d const alpha, MatrixA& a, MatrixB& b,
+            traits::complex_d const beta, MatrixC& c ) {
+        detail::syr2k( traits::matrix_uplo_tag(c), trans,
+                traits::matrix_size2(c), k, alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), traits::matrix_storage(b),
+                traits::leading_dimension(b), beta, traits::matrix_storage(c),
+                traits::leading_dimension(c) );
     }
 };
 
 // template function to call syr2k
 template< typename MatrixA, typename MatrixB, typename MatrixC >
-inline integer_t syr2k( char const uplo, char const trans,
-        integer_t const k, traits::complex_d const alpha, MatrixA& a,
-        MatrixB& b, traits::complex_d const beta, MatrixC& c ) {
+inline integer_t syr2k( char const trans, integer_t const k,
+        traits::complex_d const alpha, MatrixA& a, MatrixB& b,
+        traits::complex_d const beta, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    syr2k_impl< value_type >::compute( uplo, trans, k, alpha, a, b, beta,
-            c );
+    syr2k_impl< value_type >::compute( trans, k, alpha, a, b, beta, c );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -69,23 +69,23 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixC >
-    static return_type compute( char const uplo, char const trans,
-            integer_t const k, traits::complex_d const alpha, MatrixA& a,
+    static return_type compute( char const trans, integer_t const k,
+            traits::complex_d const alpha, MatrixA& a,
             traits::complex_d const beta, MatrixC& c ) {
-        detail::syrk( uplo, trans, traits::matrix_size2(c), k, alpha,
-                traits::matrix_storage(a), traits::leading_dimension(a), beta,
-                traits::matrix_storage(c), traits::leading_dimension(c) );
+        detail::syrk( traits::matrix_uplo_tag(c), trans,
+                traits::matrix_size2(c), k, alpha, traits::matrix_storage(a),
+                traits::leading_dimension(a), beta, traits::matrix_storage(c),
+                traits::leading_dimension(c) );
     }
 };
 
 // template function to call syrk
 template< typename MatrixA, typename MatrixC >
-inline integer_t syrk( char const uplo, char const trans,
-        integer_t const k, traits::complex_d const alpha, MatrixA& a,
+inline integer_t syrk( char const trans, integer_t const k,
+        traits::complex_d const alpha, MatrixA& a,
         traits::complex_d const beta, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    syrk_impl< value_type >::compute( uplo, trans, k, alpha, a, beta,
-            c );
+    syrk_impl< value_type >::compute( trans, k, alpha, a, beta, c );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -69,24 +69,23 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static return_type compute( char const side, char const uplo,
-            char const transa, char const diag, traits::complex_d const alpha,
-            MatrixA& a, MatrixB& b ) {
-        detail::trmm( side, uplo, transa, diag, traits::matrix_size1(b),
-                traits::matrix_size2(b), alpha, traits::matrix_storage(a),
-                traits::leading_dimension(a), traits::matrix_storage(b),
-                traits::leading_dimension(b) );
+    static return_type compute( char const side, char const transa,
+            char const diag, traits::complex_d const alpha, MatrixA& a,
+            MatrixB& b ) {
+        detail::trmm( side, traits::matrix_uplo_tag(a), transa, diag,
+                traits::matrix_size1(b), traits::matrix_size2(b), alpha,
+                traits::matrix_storage(a), traits::leading_dimension(a),
+                traits::matrix_storage(b), traits::leading_dimension(b) );
     }
 };
 
 // template function to call trmm
 template< typename MatrixA, typename MatrixB >
-inline integer_t trmm( char const side, char const uplo,
-        char const transa, char const diag, traits::complex_d const alpha,
-        MatrixA& a, MatrixB& b ) {
+inline integer_t trmm( char const side, char const transa,
+        char const diag, traits::complex_d const alpha, MatrixA& a,
+        MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    trmm_impl< value_type >::compute( side, uplo, transa, diag, alpha,
-            a, b );
+    trmm_impl< value_type >::compute( side, transa, diag, alpha, a, b );
 }
 
 
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-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -69,24 +69,23 @@
 
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static return_type compute( char const side, char const uplo,
-            char const transa, char const diag, traits::complex_d const alpha,
-            MatrixA& a, MatrixB& b ) {
-        detail::trsm( side, uplo, transa, diag, traits::matrix_size1(b),
-                traits::matrix_size2(b), alpha, traits::matrix_storage(a),
-                traits::leading_dimension(a), traits::matrix_storage(b),
-                traits::leading_dimension(b) );
+    static return_type compute( char const side, char const transa,
+            char const diag, traits::complex_d const alpha, MatrixA& a,
+            MatrixB& b ) {
+        detail::trsm( side, traits::matrix_uplo_tag(a), transa, diag,
+                traits::matrix_size1(b), traits::matrix_size2(b), alpha,
+                traits::matrix_storage(a), traits::leading_dimension(a),
+                traits::matrix_storage(b), traits::leading_dimension(b) );
     }
 };
 
 // template function to call trsm
 template< typename MatrixA, typename MatrixB >
-inline integer_t trsm( char const side, char const uplo,
-        char const transa, char const diag, traits::complex_d const alpha,
-        MatrixA& a, MatrixB& b ) {
+inline integer_t trsm( char const side, char const transa,
+        char const diag, traits::complex_d const alpha, MatrixA& a,
+        MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
-    trsm_impl< value_type >::compute( side, uplo, transa, diag, alpha,
-            a, b );
+    trsm_impl< value_type >::compute( side, transa, diag, alpha, a, b );
 }
 
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -71,16 +71,17 @@
     // templated specialization
     template< typename MatrixA, typename VectorE, typename VectorTAU,
             typename MatrixW >
-    static void compute( char const uplo, integer_t const nb, MatrixA& a,
-            VectorE& e, VectorTAU& tau, MatrixW& w ) {
+    static void compute( integer_t const nb, MatrixA& a, VectorE& e,
+            VectorTAU& tau, MatrixW& w ) {
 #ifndef NDEBUG
-        assert( uplo == 'U' || uplo == 'L' );
+        assert( traits::matrix_uplo_tag(a) == 'U' ||
+                traits::matrix_uplo_tag(a) == 'L' );
         assert( traits::leading_dimension(a) >= (ERROR) );
         assert( traits::leading_dimension(w) >= std::max(1,
                 traits::matrix_size2(a)) );
 #endif
-        detail::latrd( uplo, traits::matrix_size2(a), nb,
-                traits::matrix_storage(a), traits::leading_dimension(a),
+        detail::latrd( traits::matrix_uplo_tag(a), traits::matrix_size2(a),
+                nb, traits::matrix_storage(a), traits::leading_dimension(a),
                 traits::vector_storage(e), traits::vector_storage(tau),
                 traits::matrix_storage(w), traits::leading_dimension(w) );
     }
@@ -96,17 +97,18 @@
     // templated specialization
     template< typename MatrixA, typename VectorE, typename VectorTAU,
             typename MatrixW >
-    static void compute( char const uplo, integer_t const nb, MatrixA& a,
-            VectorE& e, VectorTAU& tau, MatrixW& w ) {
+    static void compute( integer_t const nb, MatrixA& a, VectorE& e,
+            VectorTAU& tau, MatrixW& w ) {
 #ifndef NDEBUG
-        assert( uplo == 'U' || uplo == 'L' );
+        assert( traits::matrix_uplo_tag(h) == 'U' ||
+                traits::matrix_uplo_tag(h) == 'L' );
         assert( traits::leading_dimension(a) >= std::max(1,
                 traits::matrix_size2(a)) );
         assert( traits::leading_dimension(w) >= std::max(1,
                 traits::matrix_size2(a)) );
 #endif
-        detail::latrd( uplo, traits::matrix_size2(a), nb,
-                traits::matrix_storage(a), traits::leading_dimension(a),
+        detail::latrd( traits::matrix_uplo_tag(h), traits::matrix_size2(a),
+                nb, traits::matrix_storage(a), traits::leading_dimension(a),
                 traits::vector_storage(e), traits::vector_storage(tau),
                 traits::matrix_storage(w), traits::leading_dimension(w) );
     }
@@ -116,11 +118,11 @@
 // template function to call latrd
 template< typename MatrixA, typename VectorE, typename VectorTAU,
         typename MatrixW >
-inline integer_t latrd( char const uplo, integer_t const nb, MatrixA& a,
-        VectorE& e, VectorTAU& tau, MatrixW& w ) {
+inline integer_t latrd( integer_t const nb, MatrixA& a, VectorE& e,
+        VectorTAU& tau, MatrixW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    latrd_impl< value_type >::compute( uplo, nb, a, e, tau, w );
+    latrd_impl< value_type >::compute( nb, a, e, tau, w );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -61,32 +61,31 @@
 
     // templated specialization
     template< typename MatrixAB, typename VectorS >
-    static void compute( char const uplo, integer_t const n,
-            integer_t const kd, MatrixAB& ab, VectorS& s, real_type& scond,
-            real_type& amax, integer_t& info ) {
+    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+            VectorS& s, real_type& scond, real_type& amax, integer_t& info ) {
 #ifndef NDEBUG
-        assert( uplo == 'U' || uplo == 'L' );
+        assert( traits::matrix_uplo_tag(a) == 'U' ||
+                traits::matrix_uplo_tag(a) == 'L' );
         assert( n >= 0 );
         assert( kd >= 0 );
         assert( traits::leading_dimension(ab) >= kd+1 );
 #endif
-        detail::pbequ( uplo, n, kd, traits::matrix_storage(ab),
-                traits::leading_dimension(ab), traits::vector_storage(s),
-                scond, amax, info );
+        detail::pbequ( traits::matrix_uplo_tag(a), n, kd,
+                traits::matrix_storage(ab), traits::leading_dimension(ab),
+                traits::vector_storage(s), scond, amax, info );
     }
 };
 
 
 // template function to call pbequ
 template< typename MatrixAB, typename VectorS >
-inline integer_t pbequ( char const uplo, integer_t const n,
-        integer_t const kd, MatrixAB& ab, VectorS& s,
+inline integer_t pbequ( integer_t const n, integer_t const kd,
+        MatrixAB& ab, VectorS& s,
         typename traits::matrix_traits< MatrixAB >::value_type& scond,
         typename traits::matrix_traits< MatrixAB >::value_type& amax ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbequ_impl< value_type >::compute( uplo, n, kd, ab, s, scond, amax,
-            info );
+    pbequ_impl< value_type >::compute( n, kd, ab, s, scond, amax, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -995,17 +995,25 @@
             argument_properties[ 'assert_char' ] += [ letter ]
 
       if argument_name == 'UPLO':
-        match_uplo = re.compile( '(Upper|Lower)(triangle|triangles|of|input|matrix|\s)+([A-Z]+)' ).findall( comment_block )
-        if len( match_uplo ) == 2 and len( argument_properties[ 'assert_char' ] ) == 2 and \
-          'U' in argument_properties[ 'assert_char' ] and 'L' in argument_properties[ 'assert_char' ]:
-          print "adding uplo trait"
+        # see if the traits are overruled through the template system
+        traits_key = subroutine_group_name.lower() + '.' + subroutine_value_type + '.' + argument_name + '.trait_of'
+        if my_has_key( traits_key, template_map ):
           argument_properties[ 'trait_type' ] = 'uplo'
-          argument_properties[ 'trait_of' ] = match_uplo[ 0 ][ 2 ]
-
-          # see if the traits are overruled through the template system
-          traits_key = subroutine_group_name.lower() + '.' + subroutine_value_type + '.' + argument_name + '.trait_of'
-          if my_has_key( traits_key, template_map ):
-            argument_properties[ 'trait_of' ] = template_map[ my_has_key( traits_key, template_map ) ].strip()
+          argument_properties[ 'trait_of' ] = template_map[ my_has_key( traits_key, template_map ) ].strip()
+        
+        else:
+          match_uplo = re.compile( '([Uu]pper|[Ll]ower)(or|triangular|triangle|triangles|part|of|the|band|hermitian|symmetric|input|matrix|\s)+([A-Z]+)', re.M ).findall( comment_block )
+          print "UPLO:", match_uplo
+          uplo_trait_of = None
+          if len( match_uplo ) > 0:
+            uplo_trait_of = match_uplo[ 0 ][ 2 ]
+          for match in match_uplo:
+            if uplo_trait_of != None and match[2] != uplo_trait_of:
+              uplo_trait_of = None
+          if uplo_trait_of != None:
+            print "adding uplo trait"
+            argument_properties[ 'trait_type' ] = 'uplo'
+            argument_properties[ 'trait_of' ] = uplo_trait_of
 
     #
     # Minimal workspace dimension recognition
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/tbmv.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/tbmv.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,3 @@
+$TEMPLATE[tbmv.all.UPLO.trait_of]
+A
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/tbsv.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/tbsv.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,3 @@
+$TEMPLATE[tbsv.all.UPLO.trait_of]
+A
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/trmv.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/trmv.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,3 @@
+$TEMPLATE[trmv.all.UPLO.trait_of]
+A
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/trsv.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level2/trsv.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,3 @@
+$TEMPLATE[trsv.all.UPLO.trait_of]
+A
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/trmm.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/trmm.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,3 @@
+$TEMPLATE[trmm.all.UPLO.trait_of]
+A
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/trsm.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level3/trsm.hpp	2009-02-22 04:52:12 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,3 @@
+$TEMPLATE[trsm.all.UPLO.trait_of]
+A
+$TEMPLATE[end]