$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r52375 - in sandbox/numeric_bindings: boost/numeric/bindings/lapack/computational boost/numeric/bindings/lapack/driver libs/numeric/bindings/tools
From: rutger_at_[hidden]
Date: 2009-04-14 02:36:04
Author: rutger
Date: 2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
New Revision: 52375
URL: http://svn.boost.org/trac/boost/changeset/52375
Log:
Improved real_type argument classification for lapack
Text files modified: 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp |    16 ++++++++++------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp |    11 +++++++----                             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp |    13 ++++++++-----                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp |     9 ++++++---                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp |    21 ++++++++++++---------                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp |    13 ++++++++-----                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp |     9 +++++----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp |    26 ++++++++++++++++----------              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp  |    25 +++++++++++++++++++++++++               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp |     4 ++--                                    
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp |    16 ++++++++++------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp |     8 +++++---                                
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp |    16 ++++++++++------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp |     6 ++++--                                  
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp |    34 ++++++++++++++++++++--------------      
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp |    13 ++++++++-----                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp |     7 ++++---                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp |    32 ++++++++++++++++++++------------        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp |    16 ++++++++++------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp |    13 ++++++++-----                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp |    16 ++++++++++------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp |     5 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp        |    29 ++++++++++++++++++-----------           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp        |    20 ++++++++++++--------                    
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp        |     9 +++++----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp        |     9 +++++----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp        |     9 +++++----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp        |    13 ++++++++-----                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp        |    32 ++++++++++++++++++++------------        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp        |    31 ++++++++++++++++++-------------         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp        |    30 ++++++++++++++++++------------          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp        |     9 +++++----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp        |    13 ++++++++-----                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp        |    31 ++++++++++++++++++-------------         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp        |    30 ++++++++++++++++++------------          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp        |    27 ++++++++++++++++-----------             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp        |    10 ++++++----                              
   sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py                 |     4 ++--                                    
   59 files changed, 639 insertions(+), 410 deletions(-)
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -201,9 +201,11 @@
 template< typename MatrixAB, typename VectorIPIV, typename Workspace >
 inline integer_t gbcon( char const norm, integer_t const n,
         integer_t const kl, integer_t const ku, MatrixAB& ab,
-        VectorIPIV& ipiv, typename traits::matrix_traits<
-        MatrixAB >::value_type const anorm, typename traits::matrix_traits<
-        MatrixAB >::value_type& rcond, Workspace work ) {
+        VectorIPIV& ipiv, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     gbcon_impl< value_type >::invoke( norm, n, kl, ku, ab, ipiv, anorm,
@@ -215,9 +217,11 @@
 template< typename MatrixAB, typename VectorIPIV >
 inline integer_t gbcon( char const norm, integer_t const n,
         integer_t const kl, integer_t const ku, MatrixAB& ab,
-        VectorIPIV& ipiv, typename traits::matrix_traits<
-        MatrixAB >::value_type const anorm, typename traits::matrix_traits<
-        MatrixAB >::value_type& rcond ) {
+        VectorIPIV& ipiv, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     gbcon_impl< value_type >::invoke( norm, n, kl, ku, ab, ipiv, anorm,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -130,10 +130,13 @@
 template< typename MatrixAB, typename VectorR, typename VectorC >
 inline integer_t gbequ( integer_t const m, integer_t const n,
         integer_t const kl, integer_t const ku, MatrixAB& ab, VectorR& r,
-        VectorC& c, typename traits::matrix_traits<
-        MatrixAB >::value_type& rowcnd, typename traits::matrix_traits<
-        MatrixAB >::value_type& colcnd, typename traits::matrix_traits<
-        MatrixAB >::value_type& amax ) {
+        VectorC& c, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rowcnd,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& colcnd,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& amax ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     gbequ_impl< value_type >::invoke( m, n, kl, ku, ab, r, c, rowcnd,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -182,9 +182,10 @@
 // template function to call gecon
 template< typename MatrixA, typename Workspace >
 inline integer_t gecon( char const norm, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const anorm,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gecon_impl< value_type >::invoke( norm, a, anorm, rcond, info, work );
@@ -194,8 +195,10 @@
 // template function to call gecon, default workspace type
 template< typename MatrixA >
 inline integer_t gecon( char const norm, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const anorm,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gecon_impl< value_type >::invoke( norm, a, anorm, rcond, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -119,9 +119,12 @@
 // template function to call geequ
 template< typename MatrixA, typename VectorR, typename VectorC >
 inline integer_t geequ( MatrixA& a, VectorR& r, VectorC& c,
-        typename traits::matrix_traits< MatrixA >::value_type& rowcnd,
-        typename traits::matrix_traits< MatrixA >::value_type& colcnd,
-        typename traits::matrix_traits< MatrixA >::value_type& amax ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rowcnd,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& colcnd,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& amax ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     geequ_impl< value_type >::invoke( a, r, c, rowcnd, colcnd, amax,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -312,11 +312,12 @@
 template< typename MatrixA, typename MatrixB, typename MatrixU,
         typename MatrixV, typename MatrixQ, typename Workspace >
 inline integer_t ggsvp( char const jobu, char const jobv,
-        char const jobq, MatrixA& a, MatrixB& b,
-        typename traits::matrix_traits< MatrixA >::value_type const tola,
-        typename traits::matrix_traits< MatrixA >::value_type const tolb,
-        integer_t& k, integer_t& l, MatrixU& u, MatrixV& v, MatrixQ& q,
-        Workspace work ) {
+        char const jobq, MatrixA& a, MatrixB& b, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tola,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tolb, integer_t& k,
+        integer_t& l, MatrixU& u, MatrixV& v, MatrixQ& q, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     ggsvp_impl< value_type >::invoke( jobu, jobv, jobq, a, b, tola, tolb,
@@ -328,10 +329,12 @@
 template< typename MatrixA, typename MatrixB, typename MatrixU,
         typename MatrixV, typename MatrixQ >
 inline integer_t ggsvp( char const jobu, char const jobv,
-        char const jobq, MatrixA& a, MatrixB& b,
-        typename traits::matrix_traits< MatrixA >::value_type const tola,
-        typename traits::matrix_traits< MatrixA >::value_type const tolb,
-        integer_t& k, integer_t& l, MatrixU& u, MatrixV& v, MatrixQ& q ) {
+        char const jobq, MatrixA& a, MatrixB& b, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tola,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tolb, integer_t& k,
+        integer_t& l, MatrixU& u, MatrixV& v, MatrixQ& q ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     ggsvp_impl< value_type >::invoke( jobu, jobv, jobq, a, b, tola, tolb,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -102,9 +102,10 @@
 // template function to call hecon
 template< typename MatrixA, typename VectorIPIV, typename Workspace >
 inline integer_t hecon( char const uplo, MatrixA& a, VectorIPIV& ipiv,
-        typename traits::matrix_traits< MatrixA >::value_type const anorm,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     hecon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
@@ -115,8 +116,10 @@
 // template function to call hecon, default workspace type
 template< typename MatrixA, typename VectorIPIV >
 inline integer_t hecon( char const uplo, MatrixA& a, VectorIPIV& ipiv,
-        typename traits::matrix_traits< MatrixA >::value_type const anorm,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     hecon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -148,8 +148,9 @@
 // template function to call lacon
 template< typename VectorX, typename Workspace >
 inline integer_t lacon( integer_t const n, VectorX& x,
-        typename traits::vector_traits< VectorX >::value_type& est,
-        integer_t& kase, Workspace work ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorX >::value_type >::real_type& est, integer_t& kase,
+        Workspace work ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
     integer_t info(0);
     lacon_impl< value_type >::invoke( n, x, est, kase, work );
@@ -159,8 +160,8 @@
 // template function to call lacon, default workspace type
 template< typename VectorX >
 inline integer_t lacon( integer_t const n, VectorX& x,
-        typename traits::vector_traits< VectorX >::value_type& est,
-        integer_t& kase ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorX >::value_type >::real_type& est, integer_t& kase ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
     integer_t info(0);
     lacon_impl< value_type >::invoke( n, x, est, kase,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -153,11 +153,14 @@
         typename MatrixNAB, typename Workspace >
 inline integer_t laebz( integer_t const ijob, integer_t const nitmax,
         integer_t const n, integer_t const minp, integer_t const nbmin,
-        typename traits::vector_traits< VectorD >::value_type const abstol,
-        typename traits::vector_traits< VectorD >::value_type const reltol,
-        typename traits::vector_traits< VectorD >::value_type const pivmin,
-        VectorD& d, VectorE& e, VectorE2& e2, VectorNVAL& nval, MatrixAB& ab,
-        VectorC& c, integer_t& mout, MatrixNAB& nab, Workspace work ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const reltol,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const pivmin, VectorD& d,
+        VectorE& e, VectorE2& e2, VectorNVAL& nval, MatrixAB& ab, VectorC& c,
+        integer_t& mout, MatrixNAB& nab, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     laebz_impl< value_type >::invoke( ijob, nitmax, n, minp, nbmin,
@@ -172,11 +175,14 @@
         typename MatrixNAB >
 inline integer_t laebz( integer_t const ijob, integer_t const nitmax,
         integer_t const n, integer_t const minp, integer_t const nbmin,
-        typename traits::vector_traits< VectorD >::value_type const abstol,
-        typename traits::vector_traits< VectorD >::value_type const reltol,
-        typename traits::vector_traits< VectorD >::value_type const pivmin,
-        VectorD& d, VectorE& e, VectorE2& e2, VectorNVAL& nval, MatrixAB& ab,
-        VectorC& c, integer_t& mout, MatrixNAB& nab ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const reltol,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const pivmin, VectorD& d,
+        VectorE& e, VectorE2& e2, VectorNVAL& nval, MatrixAB& ab, VectorC& c,
+        integer_t& mout, MatrixNAB& nab ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     laebz_impl< value_type >::invoke( ijob, nitmax, n, minp, nbmin,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -182,6 +182,31 @@
 // template function to call larz
 template< typename VectorV, typename MatrixC, typename Workspace >
 inline integer_t larz( char const side, integer_t const l, VectorV& v,
+        integer_t const incv, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorV >::value_type >::real_type const tau, MatrixC& c,
+        Workspace work ) {
+    typedef typename traits::vector_traits< VectorV >::value_type value_type;
+    integer_t info(0);
+    larz_impl< value_type >::invoke( side, l, v, incv, tau, c, work );
+    return info;
+}
+
+// template function to call larz, default workspace type
+template< typename VectorV, typename MatrixC >
+inline integer_t larz( char const side, integer_t const l, VectorV& v,
+        integer_t const incv, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorV >::value_type >::real_type const tau, MatrixC& c ) {
+    typedef typename traits::vector_traits< VectorV >::value_type value_type;
+    integer_t info(0);
+    larz_impl< value_type >::invoke( side, l, v, incv, tau, c,
+            optimal_workspace() );
+    return info;
+}
+// template function to call larz
+template< typename VectorV, typename MatrixC, typename Workspace >
+inline integer_t larz( char const side, integer_t const l, VectorV& v,
         integer_t const incv, typename traits::vector_traits<
         VectorV >::value_type const tau, MatrixC& c, Workspace work ) {
     typedef typename traits::vector_traits< VectorV >::value_type value_type;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -138,8 +138,8 @@
 template< typename MatrixA, typename VectorX, typename VectorCNORM >
 inline integer_t latrs( char const uplo, char const trans,
         char const diag, char const normin, MatrixA& a, VectorX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& scale,
-        VectorCNORM& cnorm ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& scale, VectorCNORM& cnorm ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     latrs_impl< value_type >::invoke( uplo, trans, diag, normin, a, x,
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	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -182,9 +182,11 @@
 // template function to call pbcon
 template< typename MatrixAB, typename Workspace >
 inline integer_t pbcon( char const uplo, integer_t const n,
-        integer_t const kd, MatrixAB& ab, typename traits::matrix_traits<
-        MatrixAB >::value_type const anorm, typename traits::matrix_traits<
-        MatrixAB >::value_type& rcond, Workspace work ) {
+        integer_t const kd, MatrixAB& ab, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     pbcon_impl< value_type >::invoke( uplo, n, kd, ab, anorm, rcond,
@@ -195,9 +197,11 @@
 // template function to call pbcon, default workspace type
 template< typename MatrixAB >
 inline integer_t pbcon( char const uplo, integer_t const n,
-        integer_t const kd, MatrixAB& ab, typename traits::matrix_traits<
-        MatrixAB >::value_type const anorm, typename traits::matrix_traits<
-        MatrixAB >::value_type& rcond ) {
+        integer_t const kd, MatrixAB& ab, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     pbcon_impl< value_type >::invoke( uplo, n, kd, ab, anorm, rcond,
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-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -113,9 +113,11 @@
 // template function to call pbequ
 template< typename MatrixAB, typename VectorS >
 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 ) {
+        MatrixAB& ab, VectorS& s, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& scond,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& amax ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     pbequ_impl< value_type >::invoke( n, kd, ab, s, scond, amax, info );
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -179,9 +179,11 @@
 
 // template function to call pocon
 template< typename MatrixA, typename Workspace >
-inline integer_t pocon( MatrixA& a, typename traits::matrix_traits<
-        MatrixA >::value_type const anorm, typename traits::matrix_traits<
-        MatrixA >::value_type& rcond, Workspace work ) {
+inline integer_t pocon( MatrixA& a, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     pocon_impl< value_type >::invoke( a, anorm, rcond, info, work );
@@ -190,9 +192,11 @@
 
 // template function to call pocon, default workspace type
 template< typename MatrixA >
-inline integer_t pocon( MatrixA& a, typename traits::matrix_traits<
-        MatrixA >::value_type const anorm, typename traits::matrix_traits<
-        MatrixA >::value_type& rcond ) {
+inline integer_t pocon( MatrixA& a, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     pocon_impl< value_type >::invoke( a, anorm, rcond, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -107,8 +107,10 @@
 // template function to call poequ
 template< typename MatrixA, typename VectorS >
 inline integer_t poequ( MatrixA& a, VectorS& s,
-        typename traits::matrix_traits< MatrixA >::value_type& scond,
-        typename traits::matrix_traits< MatrixA >::value_type& amax ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& scond,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& amax ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     poequ_impl< value_type >::invoke( a, s, scond, amax, info );
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -141,13 +141,16 @@
 template< typename VectorD, typename VectorE, typename VectorW,
         typename VectorIBLOCK, typename VectorISPLIT, typename Workspace >
 inline integer_t stebz( char const range, char const order,
-        integer_t const n, typename traits::vector_traits<
-        VectorD >::value_type const vl, typename traits::vector_traits<
-        VectorD >::value_type const vu, integer_t const il,
-        integer_t const iu, typename traits::vector_traits<
-        VectorD >::value_type const abstol, VectorD& d, VectorE& e,
-        integer_t& m, integer_t& nsplit, VectorW& w, VectorIBLOCK& iblock,
-        VectorISPLIT& isplit, Workspace work ) {
+        integer_t const n, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol, VectorD& d,
+        VectorE& e, integer_t& m, integer_t& nsplit, VectorW& w,
+        VectorIBLOCK& iblock, VectorISPLIT& isplit, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     stebz_impl< value_type >::invoke( range, order, n, vl, vu, il, iu,
@@ -159,13 +162,16 @@
 template< typename VectorD, typename VectorE, typename VectorW,
         typename VectorIBLOCK, typename VectorISPLIT >
 inline integer_t stebz( char const range, char const order,
-        integer_t const n, typename traits::vector_traits<
-        VectorD >::value_type const vl, typename traits::vector_traits<
-        VectorD >::value_type const vu, integer_t const il,
-        integer_t const iu, typename traits::vector_traits<
-        VectorD >::value_type const abstol, VectorD& d, VectorE& e,
-        integer_t& m, integer_t& nsplit, VectorW& w, VectorIBLOCK& iblock,
-        VectorISPLIT& isplit ) {
+        integer_t const n, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol, VectorD& d,
+        VectorE& e, integer_t& m, integer_t& nsplit, VectorW& w,
+        VectorIBLOCK& iblock, VectorISPLIT& isplit ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     stebz_impl< value_type >::invoke( range, order, n, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -285,12 +285,14 @@
         typename MatrixZ, typename VectorISUPPZ, typename Workspace >
 inline integer_t stegr( char const jobz, char const range,
         integer_t const n, VectorD& d, VectorE& e,
-        typename traits::matrix_traits< MatrixZ >::value_type const vl,
-        typename traits::matrix_traits< MatrixZ >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixZ >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixZ >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixZ >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixZ >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixZ >::value_type value_type;
     integer_t info(0);
     stegr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
@@ -303,11 +305,14 @@
         typename MatrixZ, typename VectorISUPPZ >
 inline integer_t stegr( char const jobz, char const range,
         integer_t const n, VectorD& d, VectorE& e,
-        typename traits::matrix_traits< MatrixZ >::value_type const vl,
-        typename traits::matrix_traits< MatrixZ >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixZ >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixZ >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixZ >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixZ >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::matrix_traits< MatrixZ >::value_type value_type;
     integer_t info(0);
     stegr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -181,9 +181,10 @@
 // template function to call sycon
 template< typename MatrixA, typename VectorIPIV, typename Workspace >
 inline integer_t sycon( char const uplo, MatrixA& a, VectorIPIV& ipiv,
-        typename traits::matrix_traits< MatrixA >::value_type const anorm,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     sycon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
@@ -194,8 +195,10 @@
 // template function to call sycon, default workspace type
 template< typename MatrixA, typename VectorIPIV >
 inline integer_t sycon( char const uplo, MatrixA& a, VectorIPIV& ipiv,
-        typename traits::matrix_traits< MatrixA >::value_type const anorm,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const anorm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     sycon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -191,8 +191,8 @@
 template< typename MatrixAB, typename Workspace >
 inline integer_t tbcon( char const norm, char const uplo,
         char const diag, integer_t const n, integer_t const kd, MatrixAB& ab,
-        typename traits::matrix_traits< MatrixAB >::value_type& rcond,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     tbcon_impl< value_type >::invoke( norm, uplo, diag, n, kd, ab, rcond,
@@ -204,7 +204,8 @@
 template< typename MatrixAB >
 inline integer_t tbcon( char const norm, char const uplo,
         char const diag, integer_t const n, integer_t const kd, MatrixAB& ab,
-        typename traits::matrix_traits< MatrixAB >::value_type& rcond ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     tbcon_impl< value_type >::invoke( norm, uplo, diag, n, kd, ab, rcond,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -337,9 +337,11 @@
         logical_t const wantz, VectorSELECT& select, integer_t const n,
         MatrixA& a, MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixQ& q, MatrixZ& z, integer_t& m,
-        typename traits::matrix_traits< MatrixA >::value_type& pl,
-        typename traits::matrix_traits< MatrixA >::value_type& pr,
-        VectorDIF& dif, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pl, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pr, VectorDIF& dif,
+        Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
@@ -355,9 +357,10 @@
         logical_t const wantz, VectorSELECT& select, integer_t const n,
         MatrixA& a, MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixQ& q, MatrixZ& z, integer_t& m,
-        typename traits::matrix_traits< MatrixA >::value_type& pl,
-        typename traits::matrix_traits< MatrixA >::value_type& pr,
-        VectorDIF& dif ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pl, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pr, VectorDIF& dif ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
@@ -372,9 +375,12 @@
 inline integer_t tgsen( integer_t const ijob, logical_t const wantq,
         logical_t const wantz, VectorSELECT& select, integer_t const n,
         MatrixA& a, MatrixB& b, VectorALPHA& alpha, VectorBETA& beta,
-        MatrixQ& q, MatrixZ& z, integer_t& m, typename traits::matrix_traits<
-        MatrixA >::value_type& pl, typename traits::matrix_traits<
-        MatrixA >::value_type& pr, VectorDIF& dif, Workspace work ) {
+        MatrixQ& q, MatrixZ& z, integer_t& m, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pl, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pr, VectorDIF& dif,
+        Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
@@ -389,9 +395,11 @@
 inline integer_t tgsen( integer_t const ijob, logical_t const wantq,
         logical_t const wantz, VectorSELECT& select, integer_t const n,
         MatrixA& a, MatrixB& b, VectorALPHA& alpha, VectorBETA& beta,
-        MatrixQ& q, MatrixZ& z, integer_t& m, typename traits::matrix_traits<
-        MatrixA >::value_type& pl, typename traits::matrix_traits<
-        MatrixA >::value_type& pr, VectorDIF& dif ) {
+        MatrixQ& q, MatrixZ& z, integer_t& m, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pl, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& pr, VectorDIF& dif ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -288,9 +288,11 @@
         typename MatrixQ, typename Workspace >
 inline integer_t tgsja( char const jobu, char const jobv,
         char const jobq, integer_t const k, integer_t const l, MatrixA& a,
-        MatrixB& b, typename traits::matrix_traits<
-        MatrixA >::value_type const tola, typename traits::matrix_traits<
-        MatrixA >::value_type const tolb, VectorALPHA& alpha,
+        MatrixB& b, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tola,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tolb, VectorALPHA& alpha,
         VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
         integer_t& ncycle, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
@@ -306,9 +308,11 @@
         typename MatrixQ >
 inline integer_t tgsja( char const jobu, char const jobv,
         char const jobq, integer_t const k, integer_t const l, MatrixA& a,
-        MatrixB& b, typename traits::matrix_traits<
-        MatrixA >::value_type const tola, typename traits::matrix_traits<
-        MatrixA >::value_type const tolb, VectorALPHA& alpha,
+        MatrixB& b, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tola,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const tolb, VectorALPHA& alpha,
         VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
         integer_t& ncycle ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -289,9 +289,10 @@
 inline integer_t tgsyl( char const trans, integer_t const ijob,
         integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
         MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f,
-        typename traits::matrix_traits< MatrixA >::value_type& scale,
-        typename traits::matrix_traits< MatrixA >::value_type& dif,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& scale,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& dif, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     tgsyl_impl< value_type >::invoke( trans, ijob, m, n, a, b, c, d, e,
@@ -305,8 +306,10 @@
 inline integer_t tgsyl( char const trans, integer_t const ijob,
         integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
         MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f,
-        typename traits::matrix_traits< MatrixA >::value_type& scale,
-        typename traits::matrix_traits< MatrixA >::value_type& dif ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& scale,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& dif ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     tgsyl_impl< value_type >::invoke( trans, ijob, m, n, a, b, c, d, e,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -188,8 +188,9 @@
 // template function to call trcon
 template< typename MatrixA, typename Workspace >
 inline integer_t trcon( char const norm, char const uplo,
-        char const diag, MatrixA& a, typename traits::matrix_traits<
-        MatrixA >::value_type& rcond, Workspace work ) {
+        char const diag, MatrixA& a, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     trcon_impl< value_type >::invoke( norm, uplo, diag, a, rcond, info,
@@ -200,8 +201,9 @@
 // template function to call trcon, default workspace type
 template< typename MatrixA >
 inline integer_t trcon( char const norm, char const uplo,
-        char const diag, MatrixA& a, typename traits::matrix_traits<
-        MatrixA >::value_type& rcond ) {
+        char const diag, MatrixA& a, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     trcon_impl< value_type >::invoke( norm, uplo, diag, a, rcond, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -136,9 +136,11 @@
         typename VectorW, typename Workspace >
 inline integer_t trsen( char const job, char const compq,
         VectorSELECT& select, MatrixT& t, MatrixQ& q, VectorW& w,
-        integer_t& m, typename traits::vector_traits<
-        VectorSELECT >::value_type& s, typename traits::vector_traits<
-        VectorSELECT >::value_type& sep, Workspace work ) {
+        integer_t& m, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorSELECT >::value_type >::real_type& s,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorSELECT >::value_type >::real_type& sep, Workspace work ) {
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
@@ -152,9 +154,11 @@
         typename VectorW >
 inline integer_t trsen( char const job, char const compq,
         VectorSELECT& select, MatrixT& t, MatrixQ& q, VectorW& w,
-        integer_t& m, typename traits::vector_traits<
-        VectorSELECT >::value_type& s, typename traits::vector_traits<
-        VectorSELECT >::value_type& sep ) {
+        integer_t& m, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorSELECT >::value_type >::real_type& s,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorSELECT >::value_type >::real_type& sep ) {
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -143,8 +143,9 @@
 template< typename MatrixA, typename MatrixB, typename MatrixC >
 inline integer_t trsyl( char const trana, char const tranb,
         integer_t const isgn, integer_t const m, integer_t const n,
-        MatrixA& a, MatrixB& b, MatrixC& c, typename traits::matrix_traits<
-        MatrixA >::value_type& scale ) {
+        MatrixA& a, MatrixB& b, MatrixC& c, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& scale ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     trsyl_impl< value_type >::invoke( trana, tranb, isgn, m, n, a, b, c,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -317,8 +317,9 @@
         integer_t const n, integer_t const kl, integer_t const ku,
         MatrixAB& ab, MatrixAFB& afb, VectorIPIV& ipiv, char& equed,
         VectorR& r, VectorC& c, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAB >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     gbsvx_impl< value_type >::invoke( fact, trans, n, kl, ku, ab, afb,
@@ -334,8 +335,9 @@
         integer_t const n, integer_t const kl, integer_t const ku,
         MatrixAB& ab, MatrixAFB& afb, VectorIPIV& ipiv, char& equed,
         VectorR& r, VectorC& c, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAB >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     gbsvx_impl< value_type >::invoke( fact, trans, n, kl, ku, ab, afb,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -314,9 +314,10 @@
 inline integer_t geesx( char const jobvs, char const sort,
         logical_t* select, char const sense, MatrixA& a, integer_t& sdim,
         VectorWR& wr, VectorWI& wi, MatrixVS& vs,
-        typename traits::matrix_traits< MatrixA >::value_type& rconde,
-        typename traits::matrix_traits< MatrixA >::value_type& rcondv,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rconde,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
@@ -330,8 +331,10 @@
 inline integer_t geesx( char const jobvs, char const sort,
         logical_t* select, char const sense, MatrixA& a, integer_t& sdim,
         VectorWR& wr, VectorWI& wi, MatrixVS& vs,
-        typename traits::matrix_traits< MatrixA >::value_type& rconde,
-        typename traits::matrix_traits< MatrixA >::value_type& rcondv ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rconde,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
@@ -343,9 +346,11 @@
         typename Workspace >
 inline integer_t geesx( char const jobvs, char const sort,
         logical_t* select, char const sense, MatrixA& a, integer_t& sdim,
-        VectorW& w, MatrixVS& vs, typename traits::matrix_traits<
-        MatrixA >::value_type& rconde, typename traits::matrix_traits<
-        MatrixA >::value_type& rcondv, Workspace work ) {
+        VectorW& w, MatrixVS& vs, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rconde,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
@@ -357,9 +362,11 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline integer_t geesx( char const jobvs, char const sort,
         logical_t* select, char const sense, MatrixA& a, integer_t& sdim,
-        VectorW& w, MatrixVS& vs, typename traits::matrix_traits<
-        MatrixA >::value_type& rconde, typename traits::matrix_traits<
-        MatrixA >::value_type& rcondv ) {
+        VectorW& w, MatrixVS& vs, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rconde,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -365,8 +365,9 @@
 inline integer_t geevx( char const balanc, char const jobvl,
         char const jobvr, char const sense, MatrixA& a, VectorWR& wr,
         VectorWI& wi, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
-        integer_t& ihi, VectorSCALE& scale, typename traits::matrix_traits<
-        MatrixA >::value_type& abnrm, VectorRCONDE& rconde,
+        integer_t& ihi, VectorSCALE& scale, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
@@ -382,8 +383,9 @@
 inline integer_t geevx( char const balanc, char const jobvl,
         char const jobvr, char const sense, MatrixA& a, VectorWR& wr,
         VectorWI& wi, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
-        integer_t& ihi, VectorSCALE& scale, typename traits::matrix_traits<
-        MatrixA >::value_type& abnrm, VectorRCONDE& rconde,
+        integer_t& ihi, VectorSCALE& scale, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
@@ -399,8 +401,9 @@
 inline integer_t geevx( char const balanc, char const jobvl,
         char const jobvr, char const sense, MatrixA& a, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
-        VectorSCALE& scale, typename traits::matrix_traits<
-        MatrixA >::value_type& abnrm, VectorRCONDE& rconde,
+        VectorSCALE& scale, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
@@ -416,8 +419,9 @@
 inline integer_t geevx( char const balanc, char const jobvl,
         char const jobvr, char const sense, MatrixA& a, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
-        VectorSCALE& scale, typename traits::matrix_traits<
-        MatrixA >::value_type& abnrm, VectorRCONDE& rconde,
+        VectorSCALE& scale, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -301,8 +301,9 @@
 template< typename MatrixA, typename MatrixB, typename VectorS,
         typename Workspace >
 inline integer_t gelsd( MatrixA& a, MatrixB& b, VectorS& s,
-        typename traits::matrix_traits< MatrixA >::value_type const rcond,
-        integer_t& rank, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const rcond, integer_t& rank,
+        Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gelsd_impl< value_type >::invoke( a, b, s, rcond, rank, info, work );
@@ -312,8 +313,8 @@
 // template function to call gelsd, default workspace type
 template< typename MatrixA, typename MatrixB, typename VectorS >
 inline integer_t gelsd( MatrixA& a, MatrixB& b, VectorS& s,
-        typename traits::matrix_traits< MatrixA >::value_type const rcond,
-        integer_t& rank ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const rcond, integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gelsd_impl< value_type >::invoke( a, b, s, rcond, rank, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -251,8 +251,9 @@
 template< typename MatrixA, typename MatrixB, typename VectorS,
         typename Workspace >
 inline integer_t gelss( MatrixA& a, MatrixB& b, VectorS& s,
-        typename traits::matrix_traits< MatrixA >::value_type const rcond,
-        integer_t& rank, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const rcond, integer_t& rank,
+        Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gelss_impl< value_type >::invoke( a, b, s, rcond, rank, info, work );
@@ -262,8 +263,8 @@
 // template function to call gelss, default workspace type
 template< typename MatrixA, typename MatrixB, typename VectorS >
 inline integer_t gelss( MatrixA& a, MatrixB& b, VectorS& s,
-        typename traits::matrix_traits< MatrixA >::value_type const rcond,
-        integer_t& rank ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const rcond, integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gelss_impl< value_type >::invoke( a, b, s, rcond, rank, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -239,8 +239,9 @@
 template< typename MatrixA, typename MatrixB, typename VectorJPVT,
         typename Workspace >
 inline integer_t gelsy( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
-        typename traits::matrix_traits< MatrixA >::value_type const rcond,
-        integer_t& rank, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const rcond, integer_t& rank,
+        Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gelsy_impl< value_type >::invoke( a, b, jpvt, rcond, rank, info,
@@ -251,8 +252,8 @@
 // template function to call gelsy, default workspace type
 template< typename MatrixA, typename MatrixB, typename VectorJPVT >
 inline integer_t gelsy( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
-        typename traits::matrix_traits< MatrixA >::value_type const rcond,
-        integer_t& rank ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const rcond, integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gelsy_impl< value_type >::invoke( a, b, jpvt, rcond, rank, info,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -311,9 +311,10 @@
         typename Workspace >
 inline integer_t gesvx( char const fact, char const trans, MatrixA& a,
         MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r, VectorC& c,
-        MatrixB& b, MatrixX& x, typename traits::matrix_traits<
-        MatrixA >::value_type& rcond, VectorFERR& ferr, VectorBERR& berr,
-        Workspace work ) {
+        MatrixB& b, MatrixX& x, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gesvx_impl< value_type >::invoke( fact, trans, a, af, ipiv, equed, r,
@@ -327,8 +328,10 @@
         typename MatrixX, typename VectorFERR, typename VectorBERR >
 inline integer_t gesvx( char const fact, char const trans, MatrixA& a,
         MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r, VectorC& c,
-        MatrixB& b, MatrixX& x, typename traits::matrix_traits<
-        MatrixA >::value_type& rcond, VectorFERR& ferr, VectorBERR& berr ) {
+        MatrixB& b, MatrixX& x, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     gesvx_impl< value_type >::invoke( fact, trans, a, af, ipiv, equed, r,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -473,9 +473,11 @@
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
         VectorLSCALE& lscale, VectorRSCALE& rscale,
-        typename traits::matrix_traits< MatrixA >::value_type& abnrm,
-        typename traits::matrix_traits< MatrixA >::value_type& bbnrm,
-        VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& bbnrm, VectorRCONDE& rconde,
+        VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     ggevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, b,
@@ -494,9 +496,11 @@
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
         VectorLSCALE& lscale, VectorRSCALE& rscale,
-        typename traits::matrix_traits< MatrixA >::value_type& abnrm,
-        typename traits::matrix_traits< MatrixA >::value_type& bbnrm,
-        VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& bbnrm, VectorRCONDE& rconde,
+        VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     ggevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, b,
@@ -513,9 +517,11 @@
         char const jobvr, char const sense, MatrixA& a, MatrixB& b,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl, MatrixVR& vr,
         integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
-        VectorRSCALE& rscale, typename traits::matrix_traits<
-        MatrixA >::value_type& abnrm, typename traits::matrix_traits<
-        MatrixA >::value_type& bbnrm, VectorRCONDE& rconde,
+        VectorRSCALE& rscale, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& bbnrm, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
@@ -534,9 +540,11 @@
         char const jobvr, char const sense, MatrixA& a, MatrixB& b,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl, MatrixVR& vr,
         integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
-        VectorRSCALE& rscale, typename traits::matrix_traits<
-        MatrixA >::value_type& abnrm, typename traits::matrix_traits<
-        MatrixA >::value_type& bbnrm, VectorRCONDE& rconde,
+        VectorRSCALE& rscale, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& abnrm,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& bbnrm, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -332,8 +332,9 @@
         integer_t const n, VectorDL& dl, VectorD& d, VectorDU& du,
         VectorDLF& dlf, VectorDF& df, VectorDUF& duf, VectorDU2& du2,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::vector_traits< VectorDL >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorDL >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
     gtsvx_impl< value_type >::invoke( fact, trans, n, dl, d, du, dlf, df,
@@ -350,8 +351,9 @@
         integer_t const n, VectorDL& dl, VectorD& d, VectorDU& du,
         VectorDLF& dlf, VectorDF& df, VectorDUF& duf, VectorDU2& du2,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::vector_traits< VectorDL >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorDL >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
     gtsvx_impl< value_type >::invoke( fact, trans, n, dl, d, du, dlf, df,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -156,12 +156,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t hbevx( char const jobz, char const range,
         integer_t const n, integer_t const kd, MatrixAB& ab, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     hbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
@@ -174,11 +176,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t hbevx( char const jobz, char const range,
         integer_t const n, integer_t const kd, MatrixAB& ab, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     hbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -168,13 +168,15 @@
         typename Workspace >
 inline integer_t hbgvx( char const jobz, char const range,
         integer_t const n, integer_t const ka, integer_t const kb,
-        MatrixAB& ab, MatrixBB& bb, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        MatrixAB& ab, MatrixBB& bb, MatrixQ& q, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     hbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
@@ -187,12 +189,15 @@
         typename VectorW, typename MatrixZ, typename VectorIFAIL >
 inline integer_t hbgvx( char const jobz, char const range,
         integer_t const n, integer_t const ka, integer_t const kb,
-        MatrixAB& ab, MatrixBB& bb, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        MatrixAB& ab, MatrixBB& bb, MatrixQ& q, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     hbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -173,12 +173,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorISUPPZ, typename Workspace >
 inline integer_t heevr( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     heevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
@@ -190,11 +192,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorISUPPZ >
 inline integer_t heevr( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     heevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -169,12 +169,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorIFAIL, typename Workspace >
 inline integer_t heevx( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     heevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
@@ -186,11 +188,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorIFAIL >
 inline integer_t heevx( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     heevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -175,12 +175,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t hegvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixA& a, MatrixB& b,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     hegvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
@@ -193,11 +195,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t hegvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixA& a, MatrixB& b,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     hegvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -177,8 +177,9 @@
         typename VectorBERR, typename Workspace >
 inline integer_t hesvx( char const fact, MatrixA& a, MatrixAF& af,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     hesvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
@@ -192,8 +193,9 @@
         typename VectorBERR >
 inline integer_t hesvx( char const fact, MatrixA& a, MatrixAF& af,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     hesvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -141,12 +141,15 @@
 template< typename MatrixAP, typename VectorW, typename MatrixZ,
         typename VectorIFAIL, typename Workspace >
 inline integer_t hpevx( char const jobz, char const range,
-        integer_t const n, MatrixAP& ap, typename traits::matrix_traits<
-        MatrixAP >::value_type const vl, typename traits::matrix_traits<
-        MatrixAP >::value_type const vu, integer_t const il,
-        integer_t const iu, typename traits::matrix_traits<
-        MatrixAP >::value_type const abstol, integer_t& m, VectorW& w,
-        MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
+        integer_t const n, MatrixAP& ap, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     hpevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
@@ -158,12 +161,15 @@
 template< typename MatrixAP, typename VectorW, typename MatrixZ,
         typename VectorIFAIL >
 inline integer_t hpevx( char const jobz, char const range,
-        integer_t const n, MatrixAP& ap, typename traits::matrix_traits<
-        MatrixAP >::value_type const vl, typename traits::matrix_traits<
-        MatrixAP >::value_type const vu, integer_t const il,
-        integer_t const iu, typename traits::matrix_traits<
-        MatrixAP >::value_type const abstol, integer_t& m, VectorW& w,
-        MatrixZ& z, VectorIFAIL& ifail ) {
+        integer_t const n, MatrixAP& ap, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     hpevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -153,12 +153,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t hpgvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
-        typename traits::matrix_traits< MatrixAP >::value_type const vl,
-        typename traits::matrix_traits< MatrixAP >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAP >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     hpgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
@@ -171,11 +173,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t hpgvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
-        typename traits::matrix_traits< MatrixAP >::value_type const vl,
-        typename traits::matrix_traits< MatrixAP >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAP >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     hpgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -150,8 +150,9 @@
         typename VectorBERR, typename Workspace >
 inline integer_t hpsvx( char const fact, integer_t const n, MatrixAP& ap,
         MatrixAFP& afp, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAP >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     hpsvx_impl< value_type >::invoke( fact, n, ap, afp, ipiv, b, x,
@@ -165,8 +166,9 @@
         typename VectorBERR >
 inline integer_t hpsvx( char const fact, integer_t const n, MatrixAP& ap,
         MatrixAFP& afp, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAP >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     hpsvx_impl< value_type >::invoke( fact, n, ap, afp, ipiv, b, x,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -255,8 +255,9 @@
         typename Workspace >
 inline integer_t lalsd( char const uplo, integer_t const smlsiz,
         integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
-        typename traits::matrix_traits< MatrixB >::value_type const rcond,
-        integer_t& rank, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixB >::value_type >::real_type const rcond, integer_t& rank,
+        Workspace work ) {
     typedef typename traits::matrix_traits< MatrixB >::value_type value_type;
     integer_t info(0);
     lalsd_impl< value_type >::invoke( uplo, smlsiz, n, d, e, b, rcond,
@@ -268,8 +269,8 @@
 template< typename VectorD, typename VectorE, typename MatrixB >
 inline integer_t lalsd( char const uplo, integer_t const smlsiz,
         integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
-        typename traits::matrix_traits< MatrixB >::value_type const rcond,
-        integer_t& rank ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixB >::value_type >::real_type const rcond, integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixB >::value_type value_type;
     integer_t info(0);
     lalsd_impl< value_type >::invoke( uplo, smlsiz, n, d, e, b, rcond,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -292,9 +292,10 @@
         typename VectorBERR, typename Workspace >
 inline integer_t pbsvx( char const fact, integer_t const n,
         integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
-        VectorS& s, MatrixB& b, MatrixX& x, typename traits::matrix_traits<
-        MatrixAB >::value_type& rcond, VectorFERR& ferr, VectorBERR& berr,
-        Workspace work ) {
+        VectorS& s, MatrixB& b, MatrixX& x, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     pbsvx_impl< value_type >::invoke( fact, n, kd, ab, afb, equed, s, b,
@@ -308,8 +309,10 @@
         typename VectorBERR >
 inline integer_t pbsvx( char const fact, integer_t const n,
         integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
-        VectorS& s, MatrixB& b, MatrixX& x, typename traits::matrix_traits<
-        MatrixAB >::value_type& rcond, VectorFERR& ferr, VectorBERR& berr ) {
+        VectorS& s, MatrixB& b, MatrixX& x, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     pbsvx_impl< value_type >::invoke( fact, n, kd, ab, afb, equed, s, b,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -294,8 +294,9 @@
         typename VectorBERR, typename Workspace >
 inline integer_t posvx( char const fact, MatrixA& a, MatrixAF& af,
         char& equed, VectorS& s, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     posvx_impl< value_type >::invoke( fact, a, af, equed, s, b, x, rcond,
@@ -309,8 +310,9 @@
         typename VectorBERR >
 inline integer_t posvx( char const fact, MatrixA& a, MatrixAF& af,
         char& equed, VectorS& s, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     posvx_impl< value_type >::invoke( fact, a, af, equed, s, b, x, rcond,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -280,8 +280,9 @@
         typename VectorBERR, typename Workspace >
 inline integer_t ppsvx( char const fact, MatrixAP& ap, VectorAFP& afp,
         char& equed, VectorS& s, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAP >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     ppsvx_impl< value_type >::invoke( fact, ap, afp, equed, s, b, x,
@@ -295,8 +296,9 @@
         typename VectorBERR >
 inline integer_t ppsvx( char const fact, MatrixAP& ap, VectorAFP& afp,
         char& equed, VectorS& s, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAP >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     ppsvx_impl< value_type >::invoke( fact, ap, afp, equed, s, b, x,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -267,8 +267,9 @@
         typename VectorFERR, typename VectorBERR, typename Workspace >
 inline integer_t ptsvx( char const fact, integer_t const n, VectorD& d,
         VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
-        typename traits::vector_traits< VectorE >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorE >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorE >::value_type value_type;
     integer_t info(0);
     ptsvx_impl< value_type >::invoke( fact, n, d, e, df, ef, b, x, rcond,
@@ -282,8 +283,9 @@
         typename VectorFERR, typename VectorBERR >
 inline integer_t ptsvx( char const fact, integer_t const n, VectorD& d,
         VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
-        typename traits::vector_traits< VectorE >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorE >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorE >::value_type value_type;
     integer_t info(0);
     ptsvx_impl< value_type >::invoke( fact, n, d, e, df, ef, b, x, rcond,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -147,12 +147,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t sbevx( char const jobz, char const range,
         integer_t const n, integer_t const kd, MatrixAB& ab, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     sbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
@@ -165,11 +167,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t sbevx( char const jobz, char const range,
         integer_t const n, integer_t const kd, MatrixAB& ab, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     sbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -156,13 +156,15 @@
         typename Workspace >
 inline integer_t sbgvx( char const jobz, char const range,
         integer_t const n, integer_t const ka, integer_t const kb,
-        MatrixAB& ab, MatrixBB& bb, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        MatrixAB& ab, MatrixBB& bb, MatrixQ& q, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     sbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
@@ -175,12 +177,15 @@
         typename VectorW, typename MatrixZ, typename VectorIFAIL >
 inline integer_t sbgvx( char const jobz, char const range,
         integer_t const n, integer_t const ka, integer_t const kb,
-        MatrixAB& ab, MatrixBB& bb, MatrixQ& q,
-        typename traits::matrix_traits< MatrixAB >::value_type const vl,
-        typename traits::matrix_traits< MatrixAB >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAB >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        MatrixAB& ab, MatrixBB& bb, MatrixQ& q, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAB >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
     sbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -132,12 +132,15 @@
 template< typename MatrixAP, typename VectorW, typename MatrixZ,
         typename VectorIFAIL, typename Workspace >
 inline integer_t spevx( char const jobz, char const range,
-        integer_t const n, MatrixAP& ap, typename traits::matrix_traits<
-        MatrixAP >::value_type const vl, typename traits::matrix_traits<
-        MatrixAP >::value_type const vu, integer_t const il,
-        integer_t const iu, typename traits::matrix_traits<
-        MatrixAP >::value_type const abstol, integer_t& m, VectorW& w,
-        MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
+        integer_t const n, MatrixAP& ap, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     spevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
@@ -149,12 +152,15 @@
 template< typename MatrixAP, typename VectorW, typename MatrixZ,
         typename VectorIFAIL >
 inline integer_t spevx( char const jobz, char const range,
-        integer_t const n, MatrixAP& ap, typename traits::matrix_traits<
-        MatrixAP >::value_type const vl, typename traits::matrix_traits<
-        MatrixAP >::value_type const vu, integer_t const il,
-        integer_t const iu, typename traits::matrix_traits<
-        MatrixAP >::value_type const abstol, integer_t& m, VectorW& w,
-        MatrixZ& z, VectorIFAIL& ifail ) {
+        integer_t const n, MatrixAP& ap, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     spevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -141,12 +141,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t spgvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
-        typename traits::matrix_traits< MatrixAP >::value_type const vl,
-        typename traits::matrix_traits< MatrixAP >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAP >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     spgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
@@ -159,11 +161,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t spgvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
-        typename traits::matrix_traits< MatrixAP >::value_type const vl,
-        typename traits::matrix_traits< MatrixAP >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixAP >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     spgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -270,8 +270,9 @@
         typename VectorBERR, typename Workspace >
 inline integer_t spsvx( char const fact, MatrixAP& ap, MatrixAFP& afp,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAP >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     spsvx_impl< value_type >::invoke( fact, ap, afp, ipiv, b, x, rcond,
@@ -285,8 +286,9 @@
         typename VectorBERR >
 inline integer_t spsvx( char const fact, MatrixAP& ap, MatrixAFP& afp,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixAP >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixAP >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
     spsvx_impl< value_type >::invoke( fact, ap, afp, ipiv, b, x, rcond,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -151,12 +151,14 @@
         typename MatrixZ, typename VectorISUPPZ, typename Workspace >
 inline integer_t stevr( char const jobz, char const range,
         integer_t const n, VectorD& d, VectorE& e,
-        typename traits::vector_traits< VectorD >::value_type const vl,
-        typename traits::vector_traits< VectorD >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::vector_traits< VectorD >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     stevr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
@@ -169,11 +171,14 @@
         typename MatrixZ, typename VectorISUPPZ >
 inline integer_t stevr( char const jobz, char const range,
         integer_t const n, VectorD& d, VectorE& e,
-        typename traits::vector_traits< VectorD >::value_type const vl,
-        typename traits::vector_traits< VectorD >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::vector_traits< VectorD >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     stevr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -138,12 +138,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t stevx( char const jobz, char const range,
         integer_t const n, VectorD& d, VectorE& e,
-        typename traits::vector_traits< VectorD >::value_type const vl,
-        typename traits::vector_traits< VectorD >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::vector_traits< VectorD >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     stevx_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
@@ -156,11 +158,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t stevx( char const jobz, char const range,
         integer_t const n, VectorD& d, VectorE& e,
-        typename traits::vector_traits< VectorD >::value_type const vl,
-        typename traits::vector_traits< VectorD >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::vector_traits< VectorD >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::vector_traits<
+        VectorD >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::vector_traits<
+        VectorD >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
     stevx_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -157,12 +157,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorISUPPZ, typename Workspace >
 inline integer_t syevr( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     syevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
@@ -174,11 +176,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorISUPPZ >
 inline integer_t syevr( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     syevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -157,12 +157,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorIFAIL, typename Workspace >
 inline integer_t syevx( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     syevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
@@ -174,11 +176,14 @@
 template< typename MatrixA, typename VectorW, typename MatrixZ,
         typename VectorIFAIL >
 inline integer_t syevx( char const jobz, char const range, MatrixA& a,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     syevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -162,12 +162,14 @@
         typename MatrixZ, typename VectorIFAIL, typename Workspace >
 inline integer_t sygvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixA& a, MatrixB& b,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
-        Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     sygvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
@@ -180,11 +182,14 @@
         typename MatrixZ, typename VectorIFAIL >
 inline integer_t sygvx( integer_t const itype, char const jobz,
         char const range, integer_t const n, MatrixA& a, MatrixB& b,
-        typename traits::matrix_traits< MatrixA >::value_type const vl,
-        typename traits::matrix_traits< MatrixA >::value_type const vu,
-        integer_t const il, integer_t const iu,
-        typename traits::matrix_traits< MatrixA >::value_type const abstol,
-        integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vl,
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const vu, integer_t const il,
+        integer_t const iu, typename traits::type_traits<
+        typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type const abstol, integer_t& m,
+        VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     sygvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp	2009-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -317,8 +317,9 @@
         typename VectorBERR, typename Workspace >
 inline integer_t sysvx( char const fact, MatrixA& a, MatrixAF& af,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     sysvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
@@ -332,8 +333,9 @@
         typename VectorBERR >
 inline integer_t sysvx( char const fact, MatrixA& a, MatrixAF& af,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
-        typename traits::matrix_traits< MatrixA >::value_type& rcond,
-        VectorFERR& ferr, VectorBERR& berr ) {
+        typename traits::type_traits< typename traits::matrix_traits<
+        MatrixA >::value_type >::real_type& rcond, VectorFERR& ferr,
+        VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
     sysvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
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-04-14 02:35:52 EDT (Tue, 14 Apr 2009)
@@ -159,8 +159,8 @@
 
   if result != None:
     if properties[ 'value_type' ] == 'REAL' or properties[ 'value_type' ] == 'DOUBLE PRECISION':
-      result = result.replace( "real_type", "typename traits::$TYPEOF_FIRST_TYPENAME" + \
-        "_traits< $FIRST_TYPENAME >::value_type" )
+      result = result.replace( "real_type", "typename traits::type_traits< typename traits::$TYPEOF_FIRST_TYPENAME" + \
+        "_traits< $FIRST_TYPENAME >::value_type >::real_type" )
     if properties[ 'value_type' ][ 0:7] == 'COMPLEX' or \
       properties[ 'value_type' ] == 'DOUBLE COMPLEX':
       result = result.replace( "value_type", "typename traits::$TYPEOF_FIRST_TYPENAME" + \