$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r64075 - in sandbox/numeric_bindings: boost/numeric/bindings/lapack boost/numeric/bindings/lapack/computational boost/numeric/bindings/lapack/detail libs/numeric/bindings/doc/lapack libs/numeric/bindings/doc/lapack/computational libs/numeric/bindings/tools libs/numeric/bindings/tools/templates/computational
From: thomas.klimpel_at_[hidden]
Date: 2010-07-16 18:32:15
Author: klimpel
Date: 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
New Revision: 64075
URL: http://svn.boost.org/trac/boost/changeset/64075
Log:
Further reduced required hand editing of lapack/computational.hpp to make include_test.cpp pass.
Added:
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrf.qbk   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftri.qbk   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/tftri.qbk   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbcon.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbtrs.hpp   (contents, props changed)
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pftrs.hpp   (contents, props changed)
Text files modified: 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp             |    13 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp       |     3                                         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp       |     2                                         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp       |    95 +++++++++++++++++++++------------------ 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp       |    40 +++++++++-------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp       |    61 +++++++++++++------------               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp       |    37 +++++++++------                         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp       |    72 ++++++++++++++---------------           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp       |    71 ++++++++++++++++-------------           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp       |    13 +---                                    
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h               |    30 ++++++++++++                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h         |    18 +++++++                                 
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk          |     3 +                                       
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk    |     2                                         
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk    |     2                                         
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk    |     9 +--                                     
   sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py                       |     3                                         
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp |     6 --                                      
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp |     6 --                                      
   19 files changed, 275 insertions(+), 211 deletions(-)
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -49,7 +49,7 @@
 #include <boost/numeric/bindings/lapack/computational/bdsqr.hpp>
 #include <boost/numeric/bindings/lapack/computational/gbbrd.hpp>
 #include <boost/numeric/bindings/lapack/computational/gebrd.hpp>
-//#include <boost/numeric/bindings/lapack/computational/orgbr.hpp>
+#include <boost/numeric/bindings/lapack/computational/orgbr.hpp>
 // #include <boost/numeric/bindings/lapack/computational/ormbr.hpp>
 #include <boost/numeric/bindings/lapack/computational/ungbr.hpp>
 // #include <boost/numeric/bindings/lapack/computational/unmbr.hpp>
@@ -90,12 +90,14 @@
 #include <boost/numeric/bindings/lapack/computational/hptrf.hpp>
 #include <boost/numeric/bindings/lapack/computational/hptri.hpp>
 #include <boost/numeric/bindings/lapack/computational/hptrs.hpp>
-// #include <boost/numeric/bindings/lapack/computational/pbcon.hpp>
+#include <boost/numeric/bindings/lapack/computational/pbcon.hpp>
 #include <boost/numeric/bindings/lapack/computational/pbequ.hpp>
 #include <boost/numeric/bindings/lapack/computational/pbrfs.hpp>
 #include <boost/numeric/bindings/lapack/computational/pbtrf.hpp>
-// #include <boost/numeric/bindings/lapack/computational/pbtrs.hpp>
-// #include <boost/numeric/bindings/lapack/computational/pftrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/pbtrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/pftrf.hpp>
+#include <boost/numeric/bindings/lapack/computational/pftri.hpp>
+#include <boost/numeric/bindings/lapack/computational/pftrs.hpp>
 #include <boost/numeric/bindings/lapack/computational/pocon.hpp>
 #include <boost/numeric/bindings/lapack/computational/poequ.hpp>
 #include <boost/numeric/bindings/lapack/computational/porfs.hpp>
@@ -125,6 +127,7 @@
 #include <boost/numeric/bindings/lapack/computational/tbcon.hpp>
 #include <boost/numeric/bindings/lapack/computational/tbrfs.hpp>
 #include <boost/numeric/bindings/lapack/computational/tbtrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/tftri.hpp>
 #include <boost/numeric/bindings/lapack/computational/tpcon.hpp>
 #include <boost/numeric/bindings/lapack/computational/tprfs.hpp>
 #include <boost/numeric/bindings/lapack/computational/tptri.hpp>
@@ -151,7 +154,7 @@
 #include <boost/numeric/bindings/lapack/computational/steqr.hpp>
 #include <boost/numeric/bindings/lapack/computational/sterf.hpp>
 #include <boost/numeric/bindings/lapack/computational/sytrd.hpp>
-// #include <boost/numeric/bindings/lapack/computational/ungtr.hpp>
+#include <boost/numeric/bindings/lapack/computational/ungtr.hpp>
 #include <boost/numeric/bindings/lapack/computational/unmtr.hpp>
 #include <boost/numeric/bindings/lapack/computational/upgtr.hpp>
 #include <boost/numeric/bindings/lapack/computational/upmtr.hpp>
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -160,7 +160,8 @@
     //
     static std::ptrdiff_t min_size_work( const std::ptrdiff_t m,
             const std::ptrdiff_t n ) {
-        return std::max< std::ptrdiff_t >( 1, std::min< std::ptrdiff_t >( m, n );
+        return std::max< std::ptrdiff_t >( 1, std::min< std::ptrdiff_t >( m,
+                n ) );
     }
 };
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -161,7 +161,7 @@
     // workspace-array work.
     //
     static std::ptrdiff_t min_size_work( const std::ptrdiff_t n ) {
-        return std::max< std::ptrdiff_t >( 1, n-1 );
+        return std::max< std::ptrdiff_t >(1,n-1);
     }
 };
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -55,12 +55,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const float* ab, const fortran_int_t ldab,
         const float anorm, float& rcond, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
-    LAPACK_SPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, iwork,
-            &info );
+    LAPACK_SPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+            &rcond, work, iwork, &info );
     return info;
 }
 
@@ -69,13 +70,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const double* ab, const fortran_int_t ldab,
         const double anorm, double& rcond, double* work,
         fortran_int_t* iwork ) {
     fortran_int_t info(0);
-    LAPACK_DPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, iwork,
-            &info );
+    LAPACK_DPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+            &rcond, work, iwork, &info );
     return info;
 }
 
@@ -84,13 +86,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const std::complex<float>* ab,
         const fortran_int_t ldab, const float anorm, float& rcond,
         std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
-    LAPACK_CPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, rwork,
-            &info );
+    LAPACK_CPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+            &rcond, work, rwork, &info );
     return info;
 }
 
@@ -99,13 +102,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const std::complex<double>* ab,
         const fortran_int_t ldab, const double anorm, double& rcond,
         std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
-    LAPACK_ZPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, rwork,
-            &info );
+    LAPACK_ZPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+            &rcond, work, rwork, &info );
     return info;
 }
 
@@ -133,10 +137,10 @@
     // * Asserts that most arguments make sense.
     //
     template< typename MatrixAB, typename WORK, typename IWORK >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            const real_type anorm, real_type& rcond, detail::workspace2< WORK,
-            IWORK > work ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+            real_type& rcond, detail::workspace2< WORK, IWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixAB >::value) );
         BOOST_ASSERT( bindings::bandwidth(ab, uplo()) >= 0 );
         BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
@@ -148,7 +152,7 @@
                 bindings::stride_minor(ab) == 1 );
         BOOST_ASSERT( bindings::stride_major(ab) >= bindings::bandwidth(ab,
                 uplo())+1 );
-        return detail::pbcon( uplo, bindings::size_column(ab),
+        return detail::pbcon( uplo(), bindings::size_column(ab),
                 bindings::bandwidth(ab, uplo()), bindings::begin_value(ab),
                 bindings::stride_major(ab), anorm, rcond,
                 bindings::begin_value(work.select(real_type())),
@@ -163,15 +167,15 @@
     // * Enables the unblocked algorithm (BLAS level 2)
     //
     template< typename MatrixAB >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            const real_type anorm, real_type& rcond, minimal_workspace ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+            real_type& rcond, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< real_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< fortran_int_t > tmp_iwork(
                 min_size_iwork( bindings::size_column(ab) ) );
-        return invoke( uplo, ab, anorm, rcond, workspace( tmp_work,
-                tmp_iwork ) );
+        return invoke( ab, anorm, rcond, workspace( tmp_work, tmp_iwork ) );
     }
 
     //
@@ -182,10 +186,11 @@
     // * Enables the blocked algorithm (BLAS level 3)
     //
     template< typename MatrixAB >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            const real_type anorm, real_type& rcond, optimal_workspace ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+            real_type& rcond, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
-        return invoke( uplo, ab, anorm, rcond, minimal_workspace() );
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
+        return invoke( ab, anorm, rcond, minimal_workspace() );
     }
 
     //
@@ -220,10 +225,10 @@
     // * Asserts that most arguments make sense.
     //
     template< typename MatrixAB, typename WORK, typename RWORK >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            const real_type anorm, real_type& rcond, detail::workspace2< WORK,
-            RWORK > work ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+            real_type& rcond, detail::workspace2< WORK, RWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixAB >::value) );
         BOOST_ASSERT( bindings::bandwidth_upper(ab) >= 0 );
         BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -235,7 +240,7 @@
                 bindings::stride_minor(ab) == 1 );
         BOOST_ASSERT( bindings::stride_major(ab) >=
                 bindings::bandwidth_upper(ab)+1 );
-        return detail::pbcon( uplo, bindings::size_column(ab),
+        return detail::pbcon( uplo(), bindings::size_column(ab),
                 bindings::bandwidth_upper(ab), bindings::begin_value(ab),
                 bindings::stride_major(ab), anorm, rcond,
                 bindings::begin_value(work.select(value_type())),
@@ -250,15 +255,15 @@
     // * Enables the unblocked algorithm (BLAS level 2)
     //
     template< typename MatrixAB >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            const real_type anorm, real_type& rcond, minimal_workspace ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+            real_type& rcond, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         bindings::detail::array< value_type > tmp_work( min_size_work(
                 bindings::size_column(ab) ) );
         bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
                 bindings::size_column(ab) ) );
-        return invoke( uplo, ab, anorm, rcond, workspace( tmp_work,
-                tmp_rwork ) );
+        return invoke( ab, anorm, rcond, workspace( tmp_work, tmp_rwork ) );
     }
 
     //
@@ -269,10 +274,11 @@
     // * Enables the blocked algorithm (BLAS level 3)
     //
     template< typename MatrixAB >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            const real_type anorm, real_type& rcond, optimal_workspace ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+            real_type& rcond, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
-        return invoke( uplo, ab, anorm, rcond, minimal_workspace() );
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
+        return invoke( ab, anorm, rcond, minimal_workspace() );
     }
 
     //
@@ -309,13 +315,12 @@
 template< typename MatrixAB, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-pbcon( const char uplo, const MatrixAB& ab,
-        const typename remove_imaginary< typename bindings::value_type<
-        MatrixAB >::type >::type anorm, typename remove_imaginary<
-        typename bindings::value_type< MatrixAB >::type >::type& rcond,
-        Workspace work ) {
+pbcon( const MatrixAB& ab, const typename remove_imaginary<
+        typename bindings::value_type< MatrixAB >::type >::type anorm,
+        typename remove_imaginary< typename bindings::value_type<
+        MatrixAB >::type >::type& rcond, Workspace work ) {
     return pbcon_impl< typename bindings::value_type<
-            MatrixAB >::type >::invoke( uplo, ab, anorm, rcond, work );
+            MatrixAB >::type >::invoke( ab, anorm, rcond, work );
 }
 
 //
@@ -325,12 +330,12 @@
 template< typename MatrixAB >
 inline typename boost::disable_if< detail::is_workspace< MatrixAB >,
         std::ptrdiff_t >::type
-pbcon( const char uplo, const MatrixAB& ab,
-        const typename remove_imaginary< typename bindings::value_type<
-        MatrixAB >::type >::type anorm, typename remove_imaginary<
-        typename bindings::value_type< MatrixAB >::type >::type& rcond ) {
+pbcon( const MatrixAB& ab, const typename remove_imaginary<
+        typename bindings::value_type< MatrixAB >::type >::type anorm,
+        typename remove_imaginary< typename bindings::value_type<
+        MatrixAB >::type >::type& rcond ) {
     return pbcon_impl< typename bindings::value_type<
-            MatrixAB >::type >::invoke( uplo, ab, anorm, rcond,
+            MatrixAB >::type >::invoke( ab, anorm, rcond,
             optimal_workspace() );
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -50,11 +50,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs, const float* ab,
         const fortran_int_t ldab, float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_SPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+    LAPACK_SPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+            b, &ldb, &info );
     return info;
 }
 
@@ -63,11 +65,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs, const double* ab,
         const fortran_int_t ldab, double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_DPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+    LAPACK_DPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+            b, &ldb, &info );
     return info;
 }
 
@@ -76,12 +80,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs,
         const std::complex<float>* ab, const fortran_int_t ldab,
         std::complex<float>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_CPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+    LAPACK_CPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+            b, &ldb, &info );
     return info;
 }
 
@@ -90,12 +96,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs,
         const std::complex<double>* ab, const fortran_int_t ldab,
         std::complex<double>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_ZPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+    LAPACK_ZPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+            b, &ldb, &info );
     return info;
 }
 
@@ -117,9 +125,9 @@
     // * Asserts that most arguments make sense.
     //
     template< typename MatrixAB, typename MatrixB >
-    static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
-            MatrixB& b ) {
+    static std::ptrdiff_t invoke( const MatrixAB& ab, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
+        typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
         BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixAB >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixB >::value) );
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
@@ -138,7 +146,7 @@
                 uplo())+1 );
         BOOST_ASSERT( bindings::stride_major(b) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_column(ab)) );
-        return detail::pbtrs( uplo, bindings::size_column(ab),
+        return detail::pbtrs( uplo(), bindings::size_column(ab),
                 bindings::bandwidth(ab, uplo()), bindings::size_column(b),
                 bindings::begin_value(ab), bindings::stride_major(ab),
                 bindings::begin_value(b), bindings::stride_major(b) );
@@ -161,10 +169,9 @@
 // * MatrixB&
 //
 template< typename MatrixAB, typename MatrixB >
-inline std::ptrdiff_t pbtrs( const char uplo, const MatrixAB& ab,
-        MatrixB& b ) {
+inline std::ptrdiff_t pbtrs( const MatrixAB& ab, MatrixB& b ) {
     return pbtrs_impl< typename bindings::value_type<
-            MatrixAB >::type >::invoke( uplo, ab, b );
+            MatrixAB >::type >::invoke( ab, b );
 }
 
 //
@@ -172,10 +179,9 @@
 // * const MatrixB&
 //
 template< typename MatrixAB, typename MatrixB >
-inline std::ptrdiff_t pbtrs( const char uplo, const MatrixAB& ab,
-        const MatrixB& b ) {
+inline std::ptrdiff_t pbtrs( const MatrixAB& ab, const MatrixB& b ) {
     return pbtrs_impl< typename bindings::value_type<
-            MatrixAB >::type >::invoke( uplo, ab, b );
+            MatrixAB >::type >::invoke( ab, b );
 }
 
 } // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,11 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
+#include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value_type.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -48,11 +50,11 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n, float* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+        const fortran_int_t n, float* a ) {
     fortran_int_t info(0);
-    LAPACK_SPFTRF( &lapack_option< TransR >::value, &lapack_option<
-            UpLo >::value, &n, a, &info );
+    LAPACK_SPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
     return info;
 }
 
@@ -61,11 +63,11 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n, double* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+        const fortran_int_t n, double* a ) {
     fortran_int_t info(0);
-    LAPACK_DPFTRF( &lapack_option< TransR >::value, &lapack_option<
-            UpLo >::value, &n, a, &info );
+    LAPACK_DPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
     return info;
 }
 
@@ -74,12 +76,11 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n,
-        std::complex<float>* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+        const fortran_int_t n, std::complex<float>* a ) {
     fortran_int_t info(0);
-    LAPACK_CPFTRF( &lapack_option< TransR >::value, &lapack_option<
-            UpLo >::value, &n, a, &info );
+    LAPACK_CPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
     return info;
 }
 
@@ -88,12 +89,11 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n,
-        std::complex<double>* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+        const fortran_int_t n, std::complex<double>* a ) {
     fortran_int_t info(0);
-    LAPACK_ZPFTRF( &lapack_option< TransR >::value, &lapack_option<
-            UpLo >::value, &n, a, &info );
+    LAPACK_ZPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
     return info;
 }
 
@@ -108,7 +108,6 @@
 
     typedef Value value_type;
     typedef typename remove_imaginary< Value >::type real_type;
-    typedef tag::column_major order;
 
     //
     // Static member function, that
@@ -116,12 +115,14 @@
     // * Asserts that most arguments make sense.
     //
     template< typename MatrixA >
-    static std::ptrdiff_t invoke( MatrixA& a ) {
+    static std::ptrdiff_t invoke( const char uplo, MatrixA& a ) {
+        namespace bindings = ::boost::numeric::bindings;
+        typedef typename blas::detail::default_order< MatrixA >::type order;
         typedef typename result_of::trans_tag< MatrixA, order >::type transr;
-        BOOST_STATIC_ASSERT( (is_mutable< MatrixA >::value) );
-        BOOST_ASSERT( size_column_op(a, transr()) >= 0 );
-        return detail::pftrf( transr(), uplo(), size_column_op(a, transr()),
-                begin_value(a) );
+        BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
+        BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
+        return detail::pftrf( transr(), uplo, bindings::size_column_op(a,
+                transr()), bindings::begin_value(a) );
     }
 
 };
@@ -141,8 +142,9 @@
 // * MatrixA&
 //
 template< typename MatrixA >
-inline std::ptrdiff_t pftrf( MatrixA& a ) {
-    return pftrf_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+inline std::ptrdiff_t pftrf( const char uplo, MatrixA& a ) {
+    return pftrf_impl< typename bindings::value_type<
+            MatrixA >::type >::invoke( uplo, a );
 }
 
 //
@@ -150,8 +152,9 @@
 // * const MatrixA&
 //
 template< typename MatrixA >
-inline std::ptrdiff_t pftrf( const MatrixA& a ) {
-    return pftrf_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+inline std::ptrdiff_t pftrf( const char uplo, const MatrixA& a ) {
+    return pftrf_impl< typename bindings::value_type<
+            MatrixA >::type >::invoke( uplo, a );
 }
 
 } // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,11 +16,13 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
+#include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value_type.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -49,7 +51,8 @@
 // * float value-type.
 //
 template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n, float* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+        const fortran_int_t n, float* a ) {
     fortran_int_t info(0);
     LAPACK_SPFTRI( &lapack_option< TransR >::value, &lapack_option<
             UpLo >::value, &n, a, &info );
@@ -62,7 +65,8 @@
 // * double value-type.
 //
 template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n, double* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+        const fortran_int_t n, double* a ) {
     fortran_int_t info(0);
     LAPACK_DPFTRI( &lapack_option< TransR >::value, &lapack_option<
             UpLo >::value, &n, a, &info );
@@ -75,8 +79,8 @@
 // * complex<float> value-type.
 //
 template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n,
-        std::complex<float>* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+        const fortran_int_t n, std::complex<float>* a ) {
     fortran_int_t info(0);
     LAPACK_CPFTRI( &lapack_option< TransR >::value, &lapack_option<
             UpLo >::value, &n, a, &info );
@@ -89,8 +93,8 @@
 // * complex<double> value-type.
 //
 template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n,
-        std::complex<double>* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+        const fortran_int_t n, std::complex<double>* a ) {
     fortran_int_t info(0);
     LAPACK_ZPFTRI( &lapack_option< TransR >::value, &lapack_option<
             UpLo >::value, &n, a, &info );
@@ -108,7 +112,6 @@
 
     typedef Value value_type;
     typedef typename remove_imaginary< Value >::type real_type;
-    typedef tag::column_major order;
 
     //
     // Static member function, that
@@ -117,12 +120,14 @@
     //
     template< typename MatrixA >
     static std::ptrdiff_t invoke( MatrixA& a ) {
+        namespace bindings = ::boost::numeric::bindings;
+        typedef typename blas::detail::default_order< MatrixA >::type order;
         typedef typename result_of::trans_tag< MatrixA, order >::type transr;
-        typedef typename result_of::data_side< MatrixA >::type uplo;
-        BOOST_STATIC_ASSERT( (is_mutable< MatrixA >::value) );
-        BOOST_ASSERT( size_column_op(a, transr()) >= 0 );
-        return detail::pftri( transr(), uplo(), size_column_op(a, transr()),
-                begin_value(a) );
+        typedef typename result_of::uplo_tag< MatrixA, transr >::type uplo;
+        BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
+        BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
+        return detail::pftri( transr(), uplo(), bindings::size_column_op(a,
+                transr()), bindings::begin_value(a) );
     }
 
 };
@@ -143,7 +148,8 @@
 //
 template< typename MatrixA >
 inline std::ptrdiff_t pftri( MatrixA& a ) {
-    return pftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+    return pftri_impl< typename bindings::value_type<
+            MatrixA >::type >::invoke( a );
 }
 
 //
@@ -152,7 +158,8 @@
 //
 template< typename MatrixA >
 inline std::ptrdiff_t pftri( const MatrixA& a ) {
-    return pftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+    return pftri_impl< typename bindings::value_type<
+            MatrixA >::type >::invoke( a );
 }
 
 } // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,11 +16,12 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/is_column_major.hpp>
+#include <boost/numeric/bindings/data_order.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
 #include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value_type.hpp>
 #include <boost/static_assert.hpp>
@@ -49,13 +50,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo uplo,
         const fortran_int_t n, const fortran_int_t nrhs, const float* a,
         float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_SPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
-            &ldb, &info );
+    LAPACK_SPFTRS( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
     return info;
 }
 
@@ -64,13 +65,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo uplo,
         const fortran_int_t n, const fortran_int_t nrhs, const double* a,
         double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_DPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
-            &ldb, &info );
+    LAPACK_DPFTRS( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
     return info;
 }
 
@@ -79,14 +80,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo uplo,
         const fortran_int_t n, const fortran_int_t nrhs,
         const std::complex<float>* a, std::complex<float>* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_CPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
-            &ldb, &info );
+    LAPACK_CPFTRS( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
     return info;
 }
 
@@ -95,14 +96,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo uplo,
         const fortran_int_t n, const fortran_int_t nrhs,
         const std::complex<double>* a, std::complex<double>* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
-    LAPACK_ZPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
-            &ldb, &info );
+    LAPACK_ZPFTRS( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
     return info;
 }
 
@@ -123,27 +124,26 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
-    template< typename VectorA, typename MatrixB >
-    static std::ptrdiff_t invoke( const char uplo, const fortran_int_t n,
-            const VectorA& a, MatrixB& b ) {
+    template< typename MatrixA, typename MatrixB >
+    static std::ptrdiff_t invoke( const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
-        typedef typename result_of::trans_tag< VectorA, order >::type transr;
-        BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixB >::value) );
+        typedef typename result_of::data_order< MatrixB >::type order;
+        typedef typename result_of::trans_tag< MatrixA, order >::type transr;
+        typedef typename result_of::uplo_tag< MatrixA, transr >::type uplo;
         BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
-                typename bindings::value_type< VectorA >::type >::type,
+                typename bindings::value_type< MatrixA >::type >::type,
                 typename remove_const< typename bindings::value_type<
                 MatrixB >::type >::type >::value) );
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixB >::value) );
-        BOOST_ASSERT( bindings::size(a) >= n*(n+1)/2 );
         BOOST_ASSERT( bindings::size_column(b) >= 0 );
+        BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
         BOOST_ASSERT( bindings::size_minor(b) == 1 ||
                 bindings::stride_minor(b) == 1 );
         BOOST_ASSERT( bindings::stride_major(b) >= std::max< std::ptrdiff_t >(1,
-                n) );
-        BOOST_ASSERT( n >= 0 );
-        return detail::pftrs( transr(), uplo, n, bindings::size_column(b),
-                bindings::begin_value(a), bindings::begin_value(b),
-                bindings::stride_major(b) );
+                bindings::size_column_op(a, transr())) );
+        return detail::pftrs( transr(), uplo(), bindings::size_column_op(a,
+                transr()), bindings::size_column(b), bindings::begin_value(a),
+                bindings::begin_value(b), bindings::stride_major(b) );
     }
 
 };
@@ -162,22 +162,20 @@
 // Overloaded function for pftrs. Its overload differs for
 // * MatrixB&
 //
-template< typename VectorA, typename MatrixB >
-inline std::ptrdiff_t pftrs( const char uplo, const fortran_int_t n,
-        const VectorA& a, MatrixB& b ) {
+template< typename MatrixA, typename MatrixB >
+inline std::ptrdiff_t pftrs( const MatrixA& a, MatrixB& b ) {
     return pftrs_impl< typename bindings::value_type<
-            VectorA >::type >::invoke( uplo, n, a, b );
+            MatrixA >::type >::invoke( a, b );
 }
 
 //
 // Overloaded function for pftrs. Its overload differs for
 // * const MatrixB&
 //
-template< typename VectorA, typename MatrixB >
-inline std::ptrdiff_t pftrs( const char uplo, const fortran_int_t n,
-        const VectorA& a, const MatrixB& b ) {
+template< typename MatrixA, typename MatrixB >
+inline std::ptrdiff_t pftrs( const MatrixA& a, const MatrixB& b ) {
     return pftrs_impl< typename bindings::value_type<
-            VectorA >::type >::invoke( uplo, n, a, b );
+            MatrixA >::type >::invoke( a, b );
 }
 
 } // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,12 +16,14 @@
 
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
+#include <boost/numeric/bindings/blas/detail/default_order.hpp>
 #include <boost/numeric/bindings/diag_tag.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
 #include <boost/numeric/bindings/value_type.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -49,12 +51,12 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
-        const fortran_int_t n, float* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+        const Diag diag, const fortran_int_t n, float* a ) {
     fortran_int_t info(0);
-    LAPACK_STFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
-            Diag >::value, &n, a, &info );
+    LAPACK_STFTRI( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
     return info;
 }
 
@@ -63,12 +65,12 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
-        const fortran_int_t n, double* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+        const Diag diag, const fortran_int_t n, double* a ) {
     fortran_int_t info(0);
-    LAPACK_DTFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
-            Diag >::value, &n, a, &info );
+    LAPACK_DTFTRI( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
     return info;
 }
 
@@ -77,12 +79,12 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
-        const fortran_int_t n, std::complex<float>* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+        const Diag diag, const fortran_int_t n, std::complex<float>* a ) {
     fortran_int_t info(0);
-    LAPACK_CTFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
-            Diag >::value, &n, a, &info );
+    LAPACK_CTFTRI( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
     return info;
 }
 
@@ -91,12 +93,12 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
-        const fortran_int_t n, std::complex<double>* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+        const Diag diag, const fortran_int_t n, std::complex<double>* a ) {
     fortran_int_t info(0);
-    LAPACK_ZTFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
-            Diag >::value, &n, a, &info );
+    LAPACK_ZTFTRI( &lapack_option< TransR >::value, &lapack_option<
+            UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
     return info;
 }
 
@@ -111,7 +113,6 @@
 
     typedef Value value_type;
     typedef typename remove_imaginary< Value >::type real_type;
-    typedef tag::column_major order;
 
     //
     // Static member function, that
@@ -119,13 +120,17 @@
     // * Asserts that most arguments make sense.
     //
     template< typename MatrixA >
-    static std::ptrdiff_t invoke( const char uplo, MatrixA& a ) {
+    static std::ptrdiff_t invoke( MatrixA& a ) {
+        namespace bindings = ::boost::numeric::bindings;
+        typedef typename blas::detail::default_order< MatrixA >::type order;
         typedef typename result_of::trans_tag< MatrixA, order >::type transr;
+        typedef typename result_of::uplo_tag< MatrixA, transr >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
-        BOOST_STATIC_ASSERT( (is_mutable< MatrixA >::value) );
-        BOOST_ASSERT( size_column_op(a, transr()) >= 0 );
-        return detail::tftri( transr(), uplo, diag(), size_column_op(a,
-                transr()), begin_value(a) );
+        BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
+        BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
+        return detail::tftri( transr(), uplo(), diag(),
+                bindings::size_column_op(a, transr()),
+                bindings::begin_value(a) );
     }
 
 };
@@ -145,9 +150,9 @@
 // * MatrixA&
 //
 template< typename MatrixA >
-inline std::ptrdiff_t tftri( const char uplo, MatrixA& a ) {
-    return tftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( uplo,
-            a );
+inline std::ptrdiff_t tftri( MatrixA& a ) {
+    return tftri_impl< typename bindings::value_type<
+            MatrixA >::type >::invoke( a );
 }
 
 //
@@ -155,9 +160,9 @@
 // * const MatrixA&
 //
 template< typename MatrixA >
-inline std::ptrdiff_t tftri( const char uplo, const MatrixA& a ) {
-    return tftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( uplo,
-            a );
+inline std::ptrdiff_t tftri( const MatrixA& a ) {
+    return tftri_impl< typename bindings::value_type<
+            MatrixA >::type >::invoke( a );
 }
 
 } // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -17,7 +17,6 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
-#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_column_major.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -110,7 +109,7 @@
         BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
         BOOST_ASSERT( bindings::size(tau) >= n-1 );
         BOOST_ASSERT( bindings::size(work.select(value_type())) >=
-                min_size_work( side, m, n ));
+                min_size_work( n ));
         BOOST_ASSERT( bindings::size_minor(a) == 1 ||
                 bindings::stride_minor(a) == 1 );
         BOOST_ASSERT( bindings::stride_major(a) >= n );
@@ -133,8 +132,7 @@
             const VectorTAU& tau, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::uplo_tag< MatrixA >::type uplo;
-        bindings::detail::array< value_type > tmp_work( min_size_work( side,
-                m, n ) );
+        bindings::detail::array< value_type > tmp_work( min_size_work( n ) );
         return invoke( n, a, tau, workspace( tmp_work ) );
     }
 
@@ -163,11 +161,8 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
-    template< typename Side >
-    static std::ptrdiff_t min_size_work( const Side side,
-            const std::ptrdiff_t m, const std::ptrdiff_t n ) {
-        return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
-                n, m ) );
+    static std::ptrdiff_t min_size_work( const std::ptrdiff_t n ) {
+        return n-1;
     }
 };
 
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	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -1209,6 +1209,26 @@
         const fortran_int_t* ldab, void* b, const fortran_int_t* ldb,
         fortran_int_t* info );
 
+// Value-type variants of pftrf
+void LAPACK_SPFTRF( const char* transr, const char* uplo,
+        const fortran_int_t* n, float* a, fortran_int_t* info );
+void LAPACK_DPFTRF( const char* transr, const char* uplo,
+        const fortran_int_t* n, double* a, fortran_int_t* info );
+void LAPACK_CPFTRF( const char* transr, const char* uplo,
+        const fortran_int_t* n, void* a, fortran_int_t* info );
+void LAPACK_ZPFTRF( const char* transr, const char* uplo,
+        const fortran_int_t* n, void* a, fortran_int_t* info );
+
+// Value-type variants of pftri
+void LAPACK_SPFTRI( const char* transr, const char* uplo,
+        const fortran_int_t* n, float* a, fortran_int_t* info );
+void LAPACK_DPFTRI( const char* transr, const char* uplo,
+        const fortran_int_t* n, double* a, fortran_int_t* info );
+void LAPACK_CPFTRI( const char* transr, const char* uplo,
+        const fortran_int_t* n, void* a, fortran_int_t* info );
+void LAPACK_ZPFTRI( const char* transr, const char* uplo,
+        const fortran_int_t* n, void* a, fortran_int_t* info );
+
 // Value-type variants of pftrs
 void LAPACK_SPFTRS( const char* transr, const char* uplo,
         const fortran_int_t* n, const fortran_int_t* nrhs, const float* a,
@@ -1675,6 +1695,16 @@
         const fortran_int_t* nrhs, const void* ab, const fortran_int_t* ldab,
         void* b, const fortran_int_t* ldb, fortran_int_t* info );
 
+// Value-type variants of tftri
+void LAPACK_STFTRI( const char* transr, const char* uplo, const char* diag,
+        const fortran_int_t* n, float* a, fortran_int_t* info );
+void LAPACK_DTFTRI( const char* transr, const char* uplo, const char* diag,
+        const fortran_int_t* n, double* a, fortran_int_t* info );
+void LAPACK_CTFTRI( const char* transr, const char* uplo, const char* diag,
+        const fortran_int_t* n, void* a, fortran_int_t* info );
+void LAPACK_ZTFTRI( const char* transr, const char* uplo, const char* diag,
+        const fortran_int_t* n, void* a, fortran_int_t* info );
+
 // Value-type variants of tpcon
 void LAPACK_STPCON( const char* norm, const char* uplo, const char* diag,
         const fortran_int_t* n, const float* ap, float* rcond, float* work,
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	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -426,6 +426,18 @@
 #define LAPACK_CPBTRS FORTRAN_ID( cpbtrs )
 #define LAPACK_ZPBTRS FORTRAN_ID( zpbtrs )
 
+// Value-type variants of pftrf
+#define LAPACK_SPFTRF FORTRAN_ID( spftrf )
+#define LAPACK_DPFTRF FORTRAN_ID( dpftrf )
+#define LAPACK_CPFTRF FORTRAN_ID( cpftrf )
+#define LAPACK_ZPFTRF FORTRAN_ID( zpftrf )
+
+// Value-type variants of pftri
+#define LAPACK_SPFTRI FORTRAN_ID( spftri )
+#define LAPACK_DPFTRI FORTRAN_ID( dpftri )
+#define LAPACK_CPFTRI FORTRAN_ID( cpftri )
+#define LAPACK_ZPFTRI FORTRAN_ID( zpftri )
+
 // Value-type variants of pftrs
 #define LAPACK_SPFTRS FORTRAN_ID( spftrs )
 #define LAPACK_DPFTRS FORTRAN_ID( dpftrs )
@@ -606,6 +618,12 @@
 #define LAPACK_CTBTRS FORTRAN_ID( ctbtrs )
 #define LAPACK_ZTBTRS FORTRAN_ID( ztbtrs )
 
+// Value-type variants of tftri
+#define LAPACK_STFTRI FORTRAN_ID( stftri )
+#define LAPACK_DTFTRI FORTRAN_ID( dtftri )
+#define LAPACK_CTFTRI FORTRAN_ID( ctftri )
+#define LAPACK_ZTFTRI FORTRAN_ID( ztftri )
+
 // Value-type variants of tpcon
 #define LAPACK_STPCON FORTRAN_ID( stpcon )
 #define LAPACK_DTPCON FORTRAN_ID( dtpcon )
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -87,6 +87,8 @@
 [include computational/pbrfs.qbk]
 [include computational/pbtrf.qbk]
 [include computational/pbtrs.qbk]
+[include computational/pftrf.qbk]
+[include computational/pftri.qbk]
 [include computational/pftrs.qbk]
 [include computational/pocon.qbk]
 [include computational/poequ.qbk]
@@ -117,6 +119,7 @@
 [include computational/tbcon.qbk]
 [include computational/tbrfs.qbk]
 [include computational/tbtrs.qbk]
+[include computational/tftri.qbk]
 [include computational/tpcon.qbk]
 [include computational/tprfs.qbk]
 [include computational/tptri.qbk]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -9,7 +9,7 @@
 [heading Prototype]
 There is one prototype of `pbcon` available, please see below.
 ``
-pbcon( const char uplo, const MatrixAB& ab, const Scalar >, Scalar > );
+pbcon( const MatrixAB& ab, const Scalar >, Scalar > );
 ``
 
 
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -9,7 +9,7 @@
 [heading Prototype]
 There is one prototype of `pbtrs` available, please see below.
 ``
-pbtrs( const char uplo, const MatrixAB& ab, MatrixB& b );
+pbtrs( const MatrixAB& ab, MatrixB& b );
 ``
 
 
Added: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrf.qbk
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrf.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,91 @@
+[/ 
+
+THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
+
+]
+
+[section pftrf]
+
+[heading Prototype]
+There is one prototype of `pftrf` available, please see below.
+``
+pftrf( const char uplo, MatrixA& a );
+``
+
+
+[heading Description]
+
+`pftrf` (short for $FRIENDLY_NAME) provides a C++
+interface to LAPACK routines SPFTRF, DPFTRF, CPFTRF, and ZPFTRF. 
+`pftrf` computes the Cholesky factorization of a complex Hermitian
+positive definite matrix A.
+
+The factorization has the form
+A = U**H * U, if UPLO = 'U', or
+A = L * L**H, if UPLO = 'L',
+where U is an upper triangular matrix and L is lower triangular.
+
+This is the block version of the algorithm, calling Level 3 BLAS.
+
+The selection of the LAPACK routine is done during compile-time, 
+and is determined by the type of values contained in type `MatrixA`.
+The type of values is obtained through the `value_type` meta-function
+ `typename value_type<MatrixA>::type`.
+The dispatching table below illustrates to which specific routine 
+the code path will be generated. 
+
+[table Dispatching of pftrf
+[  [ Value type of MatrixA ] [LAPACK routine] ]
+[  [`float`][SPFTRF] ]
+[  [`double`][DPFTRF] ]
+[  [`complex<float>`][CPFTRF] ]
+[  [`complex<double>`][ZPFTRF] ]
+
+]
+
+
+[heading Definition]
+Defined in header [headerref boost/numeric/bindings/lapack/computational/pftrf.hpp].
+
+
+[heading Parameters or Requirements on Types]
+
+[variablelist Parameters
+    [[MatrixA] [The definition of term 1]]
+    [[MatrixB] [The definition of term 2]]
+    [[MatrixC] [
+    The definition of term 3.
+
+    Definitions may contain paragraphs.
+    ]]
+]
+
+
+[heading Complexity]
+
+
+[heading Example]
+``
+#include <boost/numeric/bindings/lapack/computational/pftrf.hpp>
+using namespace boost::numeric::bindings;
+
+lapack::pftrf( x, y, z );
+
+``
+
+this will output
+
+``
+[5] 0 1 2 3 4 5
+``
+
+
+
+[heading Notes]
+
+
+[heading See Also]
+
+* Originating Fortran source files [@http://www.netlib.org/lapack/explore-html/spftrf.f.html spftrf.f], [@http://www.netlib.org/lapack/explore-html/dpftrf.f.html dpftrf.f], [@http://www.netlib.org/lapack/explore-html/cpftrf.f.html cpftrf.f], and [@http://www.netlib.org/lapack/explore-html/zpftrf.f.html zpftrf.f] at Netlib.
+
+[endsect]
Added: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftri.qbk
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftri.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,85 @@
+[/ 
+
+THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
+
+]
+
+[section pftri]
+
+[heading Prototype]
+There is one prototype of `pftri` available, please see below.
+``
+pftri( MatrixA& a );
+``
+
+
+[heading Description]
+
+`pftri` (short for $FRIENDLY_NAME) provides a C++
+interface to LAPACK routines SPFTRI, DPFTRI, CPFTRI, and ZPFTRI. 
+`pftri` computes the inverse of a complex Hermitian positive definite
+matrix A using the Cholesky factorization A = U**H*U or A = L*L**H
+computed by ZPFTRF.
+
+The selection of the LAPACK routine is done during compile-time, 
+and is determined by the type of values contained in type `MatrixA`.
+The type of values is obtained through the `value_type` meta-function
+ `typename value_type<MatrixA>::type`.
+The dispatching table below illustrates to which specific routine 
+the code path will be generated. 
+
+[table Dispatching of pftri
+[  [ Value type of MatrixA ] [LAPACK routine] ]
+[  [`float`][SPFTRI] ]
+[  [`double`][DPFTRI] ]
+[  [`complex<float>`][CPFTRI] ]
+[  [`complex<double>`][ZPFTRI] ]
+
+]
+
+
+[heading Definition]
+Defined in header [headerref boost/numeric/bindings/lapack/computational/pftri.hpp].
+
+
+[heading Parameters or Requirements on Types]
+
+[variablelist Parameters
+    [[MatrixA] [The definition of term 1]]
+    [[MatrixB] [The definition of term 2]]
+    [[MatrixC] [
+    The definition of term 3.
+
+    Definitions may contain paragraphs.
+    ]]
+]
+
+
+[heading Complexity]
+
+
+[heading Example]
+``
+#include <boost/numeric/bindings/lapack/computational/pftri.hpp>
+using namespace boost::numeric::bindings;
+
+lapack::pftri( x, y, z );
+
+``
+
+this will output
+
+``
+[5] 0 1 2 3 4 5
+``
+
+
+
+[heading Notes]
+
+
+[heading See Also]
+
+* Originating Fortran source files [@http://www.netlib.org/lapack/explore-html/spftri.f.html spftri.f], [@http://www.netlib.org/lapack/explore-html/dpftri.f.html dpftri.f], [@http://www.netlib.org/lapack/explore-html/cpftri.f.html cpftri.f], and [@http://www.netlib.org/lapack/explore-html/zpftri.f.html zpftri.f] at Netlib.
+
+[endsect]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -9,8 +9,7 @@
 [heading Prototype]
 There is one prototype of `pftrs` available, please see below.
 ``
-pftrs( const char uplo, const int_t n, const VectorA& a,
-        MatrixB& b );
+pftrs( const MatrixA& a, MatrixB& b );
 ``
 
 
@@ -23,14 +22,14 @@
 A = U**H*U or A = L*L**H computed by ZPFTRF.
 
 The selection of the LAPACK routine is done during compile-time, 
-and is determined by the type of values contained in type `VectorA`.
+and is determined by the type of values contained in type `MatrixA`.
 The type of values is obtained through the `value_type` meta-function
- `typename value_type<VectorA>::type`.
+ `typename value_type<MatrixA>::type`.
 The dispatching table below illustrates to which specific routine 
 the code path will be generated. 
 
 [table Dispatching of pftrs
-[  [ Value type of VectorA ] [LAPACK routine] ]
+[  [ Value type of MatrixA ] [LAPACK routine] ]
 [  [`float`][SPFTRS] ]
 [  [`double`][DPFTRS] ]
 [  [`complex<float>`][CPFTRS] ]
Added: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/tftri.qbk
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/tftri.qbk	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,86 @@
+[/ 
+
+THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
+
+]
+
+[section tftri]
+
+[heading Prototype]
+There is one prototype of `tftri` available, please see below.
+``
+tftri( MatrixA& a );
+``
+
+
+[heading Description]
+
+`tftri` (short for $FRIENDLY_NAME) provides a C++
+interface to LAPACK routines STFTRI, DTFTRI, CTFTRI, and ZTFTRI. 
+`tftri` computes the inverse of a triangular matrix A stored in RFP
+format.
+
+This is a Level 3 BLAS version of the algorithm.
+
+The selection of the LAPACK routine is done during compile-time, 
+and is determined by the type of values contained in type `MatrixA`.
+The type of values is obtained through the `value_type` meta-function
+ `typename value_type<MatrixA>::type`.
+The dispatching table below illustrates to which specific routine 
+the code path will be generated. 
+
+[table Dispatching of tftri
+[  [ Value type of MatrixA ] [LAPACK routine] ]
+[  [`float`][STFTRI] ]
+[  [`double`][DTFTRI] ]
+[  [`complex<float>`][CTFTRI] ]
+[  [`complex<double>`][ZTFTRI] ]
+
+]
+
+
+[heading Definition]
+Defined in header [headerref boost/numeric/bindings/lapack/computational/tftri.hpp].
+
+
+[heading Parameters or Requirements on Types]
+
+[variablelist Parameters
+    [[MatrixA] [The definition of term 1]]
+    [[MatrixB] [The definition of term 2]]
+    [[MatrixC] [
+    The definition of term 3.
+
+    Definitions may contain paragraphs.
+    ]]
+]
+
+
+[heading Complexity]
+
+
+[heading Example]
+``
+#include <boost/numeric/bindings/lapack/computational/tftri.hpp>
+using namespace boost::numeric::bindings;
+
+lapack::tftri( x, y, z );
+
+``
+
+this will output
+
+``
+[5] 0 1 2 3 4 5
+``
+
+
+
+[heading Notes]
+
+
+[heading See Also]
+
+* Originating Fortran source files [@http://www.netlib.org/lapack/explore-html/stftri.f.html stftri.f], [@http://www.netlib.org/lapack/explore-html/dtftri.f.html dtftri.f], [@http://www.netlib.org/lapack/explore-html/ctftri.f.html ctftri.f], and [@http://www.netlib.org/lapack/explore-html/ztftri.f.html ztftri.f] at Netlib.
+
+[endsect]
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	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -1579,7 +1579,8 @@
       # matrices in our bindings. E.g. as used in spsv. 
       #
       packed_keywords = re.compile( '(stored|packed)\s+(columnwise|triangular\s+matrix)', re.M | re.S ).findall( comment_block )
-      if len( packed_keywords ) > 0:
+      rectangular_full_packed = ' RFP '
+      if len( packed_keywords ) > 0 or rectangular_full_packed in comment_block:
         #
         # Overrule my type :-)
         #
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -1,7 +1,7 @@
 $TEMPLATE[orgbr.all.min_size_work.args]
 M,N
 $TEMPLATE[orgbr.all.min_size_work]
-return std::max< $INTEGER_TYPE >( 1, std::min< $INTEGER_TYPE >( m, n );
+return std::max< $INTEGER_TYPE >( 1, std::min< $INTEGER_TYPE >( m, n ) );
 $TEMPLATE[orglq.all.min_size_work.args]
 M
 $TEMPLATE[orglq.all.min_size_work]
@@ -24,8 +24,4 @@
 N
 $TEMPLATE[orgqr.all.min_size_work]
 return std::max< $INTEGER_TYPE >( 1, n );
-$TEMPLATE[orgtr.all.min_size_work.args]
-N
-$TEMPLATE[orgtr.all.min_size_work]
-return std::max< $INTEGER_TYPE >( 1, n-1 );
 $TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbcon.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbcon.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,3 @@
+$TEMPLATE[pbcon.all.UPLO.trait_of]
+AB
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbtrs.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbtrs.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,3 @@
+$TEMPLATE[pbtrs.all.UPLO.trait_of]
+AB
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pftrs.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pftrs.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,7 @@
+$TEMPLATE[pftrs.all.TRANSR.trait_of]
+A
+$TEMPLATE[pftrs.all.UPLO.trait_of]
+A
+$TEMPLATE[pftrs.all.N.trait_of]
+A
+$TEMPLATE[end]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp	(original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp	2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -24,10 +24,4 @@
 M
 $TEMPLATE[ungrq.all.min_size_work]
 return std::max< $INTEGER_TYPE >( 1, m );
-$TEMPLATE[ungtr.all.min_size_work.args]
-SIDE,M,N
-$TEMPLATE[ungtr.includes]
-#include <boost/numeric/bindings/detail/if_left.hpp>
-$TEMPLATE[ungtr.all.min_size_work]
-return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[end]