$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r50284 - in sandbox/boost/numeric/bindings: blas lapack
From: thomas.klimpel_at_[hidden]
Date: 2008-12-15 16:30:09
Author: klimpel
Date: 2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
New Revision: 50284
URL: http://svn.boost.org/trac/boost/changeset/50284
Log:
white space cleanup
Text files modified: 
   sandbox/boost/numeric/bindings/blas/blas.h              |     8                                         
   sandbox/boost/numeric/bindings/blas/blas1.hpp           |    22                                         
   sandbox/boost/numeric/bindings/blas/blas1_overloads.hpp |    13                                         
   sandbox/boost/numeric/bindings/blas/blas2.hpp           |    64 +-                                      
   sandbox/boost/numeric/bindings/blas/blas3.hpp           |    40 +-                                      
   sandbox/boost/numeric/bindings/lapack/gbsv.hpp          |    78 ++--                                    
   sandbox/boost/numeric/bindings/lapack/gees.hpp          |   106 ++--                                    
   sandbox/boost/numeric/bindings/lapack/geev.hpp          |   432 +++++++++++-----------                  
   sandbox/boost/numeric/bindings/lapack/gels.hpp          |   344 +++++++++---------                      
   sandbox/boost/numeric/bindings/lapack/gelsd.hpp         |   756 ++++++++++++++++++++--------------------
   sandbox/boost/numeric/bindings/lapack/gelss.hpp         |   634 ++++++++++++++++----------------        
   sandbox/boost/numeric/bindings/lapack/geqrf.hpp         |    60 +-                                      
   sandbox/boost/numeric/bindings/lapack/gesdd.hpp         |   660 +++++++++++++++++-----------------      
   sandbox/boost/numeric/bindings/lapack/gesv.hpp          |   310 ++++++++--------                        
   sandbox/boost/numeric/bindings/lapack/gesvd.hpp         |   488 ++++++++++++------------                
   sandbox/boost/numeric/bindings/lapack/hbev.hpp          |    62 +-                                      
   sandbox/boost/numeric/bindings/lapack/hbevx.hpp         |    48 +-                                      
   sandbox/boost/numeric/bindings/lapack/heev.hpp          |    66 +-                                      
   sandbox/boost/numeric/bindings/lapack/heevd.hpp         |     6                                         
   sandbox/boost/numeric/bindings/lapack/heevx.hpp         |     6                                         
   sandbox/boost/numeric/bindings/lapack/hegv.hpp          |    84 ++--                                    
   sandbox/boost/numeric/bindings/lapack/hesv.hpp          |   466 ++++++++++++------------                
   sandbox/boost/numeric/bindings/lapack/hpsv.hpp          |   162 ++++----                                
   sandbox/boost/numeric/bindings/lapack/hseqr.hpp         |   112 ++--                                    
   sandbox/boost/numeric/bindings/lapack/ilaenv.hpp        |     9                                         
   sandbox/boost/numeric/bindings/lapack/lapack.h          |   450 +++++++++++-----------                  
   sandbox/boost/numeric/bindings/lapack/lapack.hpp        |    13                                         
   sandbox/boost/numeric/bindings/lapack/lapack_names.h    |    21                                         
   sandbox/boost/numeric/bindings/lapack/orgqr.hpp         |    88 ++--                                    
   sandbox/boost/numeric/bindings/lapack/ormqr.hpp         |   122 +++---                                  
   sandbox/boost/numeric/bindings/lapack/posv.hpp          |   192 +++++-----                              
   sandbox/boost/numeric/bindings/lapack/ppsv.hpp          |   158 ++++----                                
   sandbox/boost/numeric/bindings/lapack/ptsv.hpp          |    90 ++--                                    
   sandbox/boost/numeric/bindings/lapack/spsv.hpp          |   240 ++++++------                            
   sandbox/boost/numeric/bindings/lapack/steqr.hpp         |    30                                         
   sandbox/boost/numeric/bindings/lapack/syev.hpp          |    66 +-                                      
   sandbox/boost/numeric/bindings/lapack/syevd.hpp         |     6                                         
   sandbox/boost/numeric/bindings/lapack/syevx.hpp         |     6                                         
   sandbox/boost/numeric/bindings/lapack/sygv.hpp          |     4                                         
   sandbox/boost/numeric/bindings/lapack/sysv.hpp          |   610 ++++++++++++++++----------------        
   sandbox/boost/numeric/bindings/lapack/sytrd.hpp         |    42 +-                                      
   sandbox/boost/numeric/bindings/lapack/trevc.hpp         |    80 ++--                                    
   sandbox/boost/numeric/bindings/lapack/trexc.hpp         |    70 +-                                      
   sandbox/boost/numeric/bindings/lapack/workspace.hpp     |     6                                         
   44 files changed, 3663 insertions(+), 3667 deletions(-)
Modified: sandbox/boost/numeric/bindings/blas/blas.h
==============================================================================
--- sandbox/boost/numeric/bindings/blas/blas.h	(original)
+++ sandbox/boost/numeric/bindings/blas/blas.h	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 //
-//  Copyright (C) 2002, 2003 Si-Lab b.v.b.a and Toon Knapen 
+//  Copyright (C) 2002, 2003 Si-Lab b.v.b.a and Toon Knapen
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,7 +11,7 @@
 
 /*
  * const-correct prototypes for BLAS functions
- * 
+ *
  */
 
 #include <boost/numeric/bindings/blas/blas_names.h>
@@ -36,8 +36,8 @@
   double BLAS_DDOT (const int *n, const double *x, const int *incx, const double *y, const int *incy);
 
   void   BLAS_CDOTU(fcomplex_t* ret, const int *n, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy);
-  void   BLAS_ZDOTU(dcomplex_t* ret, const int *n, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy); 
-  
+  void   BLAS_ZDOTU(dcomplex_t* ret, const int *n, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy);
+
   void   BLAS_CDOTC(fcomplex_t* ret, const int *n, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy);
   void   BLAS_ZDOTC(dcomplex_t* ret, const int *n, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy);
 
Modified: sandbox/boost/numeric/bindings/blas/blas1.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/blas/blas1.hpp	(original)
+++ sandbox/boost/numeric/bindings/blas/blas1.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -59,7 +59,7 @@
   // y <- alpha * x + y
   template < typename value_type, typename vector_type_x, typename vector_type_y >
   void axpy(const value_type& alpha, const vector_type_x &x, vector_type_y &y )
-  { 
+  {
 #ifdef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
     BOOST_STATIC_ASSERT( ( is_same< value_type, typename vector_type_x::value_type >::value ) ) ;
     BOOST_STATIC_ASSERT( ( is_same< value_type, typename vector_type_y::value_type >::value ) ) ;
@@ -75,14 +75,14 @@
     const value_type *x_ptr = traits::vector_storage( x ) ;
     value_type *y_ptr = traits::vector_storage( y ) ;
 
-    detail::axpy( n, alpha, x_ptr, stride_x, y_ptr, stride_y ) ; 
+    detail::axpy( n, alpha, x_ptr, stride_x, y_ptr, stride_y ) ;
   }
 
 
   // dot <- x^T * y  (real vectors)
   template < typename vector_type_x, typename vector_type_y >
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-  typename traits::vector_traits< vector_type_x >::value_type 
+  typename traits::vector_traits< vector_type_x >::value_type
 #else
   typename vector_type_x::value_type
 #endif
@@ -98,7 +98,7 @@
 
     typedef
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-    typename traits::vector_traits< vector_type_x >::value_type 
+    typename traits::vector_traits< vector_type_x >::value_type
 #else
     typename vector_type_x::value_type
 #endif
@@ -117,7 +117,7 @@
   // dotu <- x^T * y  (complex vectors)
   template < typename vector_type_x, typename vector_type_y >
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-  typename traits::vector_traits< vector_type_x >::value_type 
+  typename traits::vector_traits< vector_type_x >::value_type
 #else
   typename vector_type_x::value_type
 #endif
@@ -143,16 +143,16 @@
     const int stride_y = traits::vector_stride( y ) ;
     const value_type *x_ptr = traits::vector_storage( x ) ;
     const value_type *y_ptr = traits::vector_storage( y ) ;
-    
+
     value_type ret ;
     detail::dotu( ret, n, x_ptr, stride_x, y_ptr, stride_y ) ;
     return ret;
   }
 
-  // dotc <- x^H * y  (complex vectors) 
+  // dotc <- x^H * y  (complex vectors)
   template < typename vector_type_x, typename vector_type_y >
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-  typename traits::vector_traits< vector_type_x >::value_type 
+  typename traits::vector_traits< vector_type_x >::value_type
 #else
   typename vector_type_x::value_type
 #endif
@@ -178,7 +178,7 @@
     const int stride_y = traits::vector_stride( y ) ;
     const value_type *x_ptr = traits::vector_storage( x ) ;
     const value_type *y_ptr = traits::vector_storage( y ) ;
-    
+
     value_type ret ;
     detail::dotc( ret, n, x_ptr, stride_x, y_ptr, stride_y ) ;
     return ret;
@@ -212,11 +212,11 @@
   // .. for now works only with real vectors
   template < typename vector_type >
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-  typename traits::type_traits< typename traits::vector_traits< vector_type >::value_type >::real_type 
+  typename traits::type_traits< typename traits::vector_traits< vector_type >::value_type >::real_type
 #else
   typename traits::type_traits< typename vector_type::value_type >::real_type
 #endif
-  asum(const vector_type &x) 
+  asum(const vector_type &x)
   {
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
     typedef typename traits::vector_traits< vector_type >::value_type value_type;
Modified: sandbox/boost/numeric/bindings/blas/blas1_overloads.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/blas/blas1_overloads.hpp	(original)
+++ sandbox/boost/numeric/bindings/blas/blas1_overloads.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -17,19 +17,19 @@
 
   using namespace boost::numeric::bindings::traits ;
 
-  // x *= alpha 
-  inline void scal(const int& n, const float&     alpha, float*     x, const int& incx) { BLAS_SSCAL( &n,              &alpha,                x  , &incx ) ; } 
+  // x *= alpha
+  inline void scal(const int& n, const float&     alpha, float*     x, const int& incx) { BLAS_SSCAL( &n,              &alpha,                x  , &incx ) ; }
   inline void scal(const int& n, const double&    alpha, double*    x, const int& incx) { BLAS_DSCAL( &n,              &alpha,                x  , &incx ) ; }
   inline void scal(const int& n, const complex_f& alpha, complex_f* x, const int& incx) { BLAS_CSCAL( &n, complex_ptr( &alpha ), complex_ptr( x ), &incx ) ; }
   inline void scal(const int& n, const complex_d& alpha, complex_d* x, const int& incx) { BLAS_ZSCAL( &n, complex_ptr( &alpha ), complex_ptr( x ), &incx ) ; }
 
-  // y += alpha * x 
+  // y += alpha * x
   inline void axpy(const int& n, const float    & alpha, const float    * x, const int& incx, float    * y, const int& incy) { BLAS_SAXPY( &n,            &alpha  ,            x  , &incx,            y  , &incy ) ; }
   inline void axpy(const int& n, const double   & alpha, const double   * x, const int& incx, double   * y, const int& incy) { BLAS_DAXPY( &n,            &alpha  ,            x  , &incx,            y  , &incy ) ; }
   inline void axpy(const int& n, const complex_f& alpha, const complex_f* x, const int& incx, complex_f* y, const int& incy) { BLAS_CAXPY( &n, complex_ptr( &alpha ), complex_ptr( x ), &incx, complex_ptr( y ), &incy ) ; }
   inline void axpy(const int& n, const complex_d& alpha, const complex_d* x, const int& incx, complex_d* y, const int& incy) { BLAS_ZAXPY( &n, complex_ptr( &alpha ), complex_ptr( x ), &incx, complex_ptr( y ), &incy ) ; }
 
-  // x^T . y 
+  // x^T . y
   inline float  dot(const int& n, const float * x, const int& incx, const float * y, const int& incy) { return BLAS_SDOT( &n, x, &incx, y, &incy ) ; }
   inline double dot(const int& n, const double* x, const int& incx, const double* y, const int& incy) { return BLAS_DDOT( &n, x, &incx, y, &incy ) ; }
 
@@ -46,13 +46,13 @@
   inline double nrm2(const int& n, const double*  x, const int& incx) { return BLAS_DNRM2( &n, x, &incx ) ; }
   inline float  nrm2(const int& n, const complex_f*   x, const int& incx) { return BLAS_SCNRM2( &n, complex_ptr(x), &incx ) ; }
   inline double nrm2(const int& n, const complex_d*  x, const int& incx) { return BLAS_DZNRM2( &n, complex_ptr(x), &incx ) ; }
-  
+
   // 1-norm
   inline float  asum(const int& n, const float*   x, const int& incx) { return BLAS_SASUM( &n, x, &incx ) ; }
   inline double asum(const int& n, const double*  x, const int& incx) { return BLAS_DASUM( &n, x, &incx ) ; }
   inline float  asum(const int& n, const complex_f*   x, const int& incx) { return BLAS_SCASUM( &n, complex_ptr(x), &incx ) ; }
   inline double asum(const int& n, const complex_d*  x, const int& incx) { return BLAS_DZASUM( &n, complex_ptr(x), &incx ) ; }
-  
+
   // copy
   inline void copy(const int& n, const float*     x, const int& incx, float*     y, const int& incy) { BLAS_SCOPY( &n, x, &incx, y, &incy ) ; }
   inline void copy(const int& n, const double*    x, const int& incx, double*    y, const int& incy) { BLAS_DCOPY( &n, x, &incx, y, &incy ) ; }
@@ -61,4 +61,3 @@
 }}}}}
 
 #endif // BOOST_NUMERIC_BINDINGS_BLAS_BLAS1_OVERLOADS_HPP
-
Modified: sandbox/boost/numeric/bindings/blas/blas2.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/blas/blas2.hpp	(original)
+++ sandbox/boost/numeric/bindings/blas/blas2.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -14,7 +14,7 @@
 #include <boost/numeric/bindings/traits/transpose.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits.hpp>
-#include <cassert> 
+#include <cassert>
 
 namespace boost { namespace numeric { namespace bindings { namespace blas {
 
@@ -22,13 +22,13 @@
   // op (A) == A || A^T || A^H
   // ! CAUTION this function assumes that all matrices involved are column-major matrices
   template < typename matrix_type, typename vector_type_x, typename vector_type_y, typename value_type >
-  void gemv(const char TRANS, 
-	    const value_type& alpha, 
-	    const matrix_type &a, 
-	    const vector_type_x &x, 
-	    const value_type& beta,
-	    vector_type_y &y
-	    )
+  void gemv(const char TRANS,
+            const value_type& alpha,
+            const matrix_type &a,
+            const vector_type_x &x,
+            const value_type& beta,
+            vector_type_y &y
+            )
   {
     // precondition: matrix_type must be dense or dense_proxy
     /* not all compilers can handle the traits
@@ -39,9 +39,9 @@
 
     const int m = traits::matrix_size1( a ) ;
     const int n = traits::matrix_size2( a ) ;
-    assert ( traits::vector_size( x ) >= (TRANS == traits::NO_TRANSPOSE ? n : m) ) ; 
-    assert ( traits::vector_size( y ) >= (TRANS == traits::NO_TRANSPOSE ? m : n) ) ; 
-    const int lda = traits::leading_dimension( a ) ; 
+    assert ( traits::vector_size( x ) >= (TRANS == traits::NO_TRANSPOSE ? n : m) ) ;
+    assert ( traits::vector_size( y ) >= (TRANS == traits::NO_TRANSPOSE ? m : n) ) ;
+    const int lda = traits::leading_dimension( a ) ;
     const int stride_x = traits::vector_stride( x ) ;
     const int stride_y = traits::vector_stride( y ) ;
 
@@ -52,13 +52,13 @@
     detail::gemv( TRANS, m, n, alpha, a_ptr, lda, x_ptr, stride_x, beta, y_ptr, stride_y );
   }
 
-  // A <- alpha * x * trans(y) ( outer product ), alpha, x and y are real-valued 
+  // A <- alpha * x * trans(y) ( outer product ), alpha, x and y are real-valued
   // ! CAUTION this function assumes that all matrices involved are column-major matrices
   template < typename vector_type_x, typename vector_type_y, typename value_type, typename matrix_type >
-  void ger( const value_type& alpha, 
-            const vector_type_x &x, 
+  void ger( const value_type& alpha,
+            const vector_type_x &x,
             const vector_type_y &y,
-            matrix_type &a 
+            matrix_type &a
             )
   {
     // precondition: matrix_type must be dense or dense_proxy
@@ -70,9 +70,9 @@
 
     const int m = traits::matrix_size1( a ) ;
     const int n = traits::matrix_size2( a ) ;
-    assert ( traits::vector_size( x ) <= m ) ; 
-    assert ( traits::vector_size( y ) <= n ) ; 
-    const int lda = traits::leading_dimension( a ) ; 
+    assert ( traits::vector_size( x ) <= m ) ;
+    assert ( traits::vector_size( y ) <= n ) ;
+    const int lda = traits::leading_dimension( a ) ;
     const int stride_x = traits::vector_stride( x ) ;
     const int stride_y = traits::vector_stride( y ) ;
 
@@ -85,8 +85,8 @@
 /*
   // A <- alpha * x * trans(y) ( outer product ), alpha, x and y are complex-valued 
   template < typename vector_type_x, typename vector_type_y, typename value_type, typename matrix_type >
-  void geru( const value_type& alpha, 
-             const vector_type_x &x, 
+  void geru( const value_type& alpha,
+             const vector_type_x &x,
              const vector_type_y &y,
              matrix_type &a 
              )
@@ -96,14 +96,14 @@
 //    BOOST_STATIC_ASSERT( ( boost::is_same< typename mtraits::matrix_structure,
 //                                           boost::numeric::bindings::traits::general_t
 //                           >::value ) ) ;
-    
+
 
 //    BOOST_STATIC_ASSERT( ( boost::is_same< x.value_type(), FEMTown::Complex() >::value ) ) ;
     const int m = traits::matrix_size1( a ) ;
     const int n = traits::matrix_size2( a ) ;
-    assert ( traits::vector_size( x ) <= m ) ; 
-    assert ( traits::vector_size( y ) <= n ) ; 
-    const int lda = traits::leading_dimension( a ) ; 
+    assert ( traits::vector_size( x ) <= m ) ;
+    assert ( traits::vector_size( y ) <= n ) ;
+    const int lda = traits::leading_dimension( a ) ;
     const int stride_x = traits::vector_stride( x ) ;
     const int stride_y = traits::vector_stride( y ) ;
 
@@ -117,14 +117,14 @@
   /*
   // y <- alpha * A * x + beta * y 
   template < typename matrix_type, typename vector_type_x, typename vector_type_y >
-  void gemv(const typename traits::matrix_traits<matrix_type>::value_type &alpha, 
-	    const matrix_type &a, 
-	    const vector_type_x &x, 
-	    const typename traits::vector_traits<vector_type_y>::value_type &beta,
-	    vector_type_y &y
-	    )
+  void gemv(const typename traits::matrix_traits<matrix_type>::value_type &alpha,
+            const matrix_type &a, 
+            const vector_type_x &x, 
+            const typename traits::vector_traits<vector_type_y>::value_type &beta,
+            vector_type_y &y
+            )
   {
-    gemv( traits::NO_TRANSPOSE, alpha, a, x, beta, y ); 
+    gemv( traits::NO_TRANSPOSE, alpha, a, x, beta, y );
   }
 
 
@@ -132,7 +132,7 @@
   template < typename matrix_type, typename vector_type_x, typename vector_type_y >
   void gemv(const matrix_type &a, const vector_type_x &x, vector_type_y &y)
   {
-    typedef typename traits::matrix_traits<matrix_type>::value_type val_t; 
+    typedef typename traits::matrix_traits<matrix_type>::value_type val_t;
     gemv( traits::NO_TRANSPOSE, (val_t) 1, a, x, (val_t) 0, y );
   }
   */
Modified: sandbox/boost/numeric/bindings/blas/blas3.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/blas/blas3.hpp	(original)
+++ sandbox/boost/numeric/bindings/blas/blas3.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -15,24 +15,24 @@
 
 namespace boost { namespace numeric { namespace bindings { namespace blas {
 
-  // C <- alpha * op (A) * op (B) + beta * C 
+  // C <- alpha * op (A) * op (B) + beta * C
   // op (X) == X || X^T || X^H
   template < typename value_type, typename matrix_type_a, typename matrix_type_b, typename matrix_type_c >
   // ! CAUTION this function assumes that all matrices involved are column-major matrices
-  void gemm(const char TRANSA, const char TRANSB, 
-	    const value_type& alpha,
-	    const matrix_type_a &a,
-	    const matrix_type_b &b,
-	    const value_type &beta,
-	    matrix_type_c &c
-	    )
+  void gemm(const char TRANSA, const char TRANSB,
+            const value_type& alpha,
+            const matrix_type_a &a,
+            const matrix_type_b &b,
+            const value_type &beta,
+            matrix_type_c &c
+            )
   {
     const int m = TRANSA == traits::NO_TRANSPOSE ? traits::matrix_size1( a ) : traits::matrix_size2( a ) ;
     const int n = TRANSB == traits::NO_TRANSPOSE ? traits::matrix_size2( b ) : traits::matrix_size1( b );
     const int k = TRANSA == traits::NO_TRANSPOSE ? traits::matrix_size2( a ) : traits::matrix_size1( a ) ;
     assert( k ==  ( TRANSB == traits::NO_TRANSPOSE ? traits::matrix_size1( b ) : traits::matrix_size2( b ) ) ) ;
-    assert( m == traits::matrix_size1( c ) ); 
-    assert( n == traits::matrix_size2( c ) ); 
+    assert( m == traits::matrix_size1( c ) );
+    assert( n == traits::matrix_size2( c ) );
     const int lda = traits::leading_dimension( a );
     const int ldb = traits::leading_dimension( b );
     const int ldc = traits::leading_dimension( c );
@@ -45,27 +45,27 @@
   }
 
 
-  // C <- alpha * A * B + beta * C 
+  // C <- alpha * A * B + beta * C
   template < typename value_type, typename matrix_type_a, typename matrix_type_b, typename matrix_type_c >
   void gemm(const value_type& alpha,
-	    const matrix_type_a &a,
-	    const matrix_type_b &b,
-	    const value_type &beta,
-	    matrix_type_c &c
-	    )
+            const matrix_type_a &a,
+            const matrix_type_b &b,
+            const value_type &beta,
+            matrix_type_c &c
+            )
   {
     gemm( traits::NO_TRANSPOSE, traits::NO_TRANSPOSE, alpha, a, b, beta, c ) ;
   }
 
 
-  // C <- A * B 
+  // C <- A * B
   // ! CAUTION this function assumes that all matrices involved are column-major matrices
-  template < 
-    typename matrix_type_a, typename matrix_type_b, typename matrix_type_c 
+  template <
+    typename matrix_type_a, typename matrix_type_b, typename matrix_type_c
     >
   void gemm(const matrix_type_a &a, const matrix_type_b &b, matrix_type_c &c)
   {
-    typedef typename traits::matrix_traits<matrix_type_c>::value_type val_t; 
+    typedef typename traits::matrix_traits<matrix_type_c>::value_type val_t;
     gemm( traits::NO_TRANSPOSE, traits::NO_TRANSPOSE, (val_t) 1, a, b, (val_t) 0, c ) ;
   }
 
Modified: sandbox/boost/numeric/bindings/lapack/gbsv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gbsv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gbsv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -14,13 +14,13 @@
 #include <boost/numeric/bindings/lapack/lapack.h>
 
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -28,25 +28,25 @@
     namespace detail {
       inline
       void gbtrf (int const n, int const m, int const kl, int const ku,
-                  float* ab, int const ldab, int* ipiv, int* info) 
+                  float* ab, int const ldab, int* ipiv, int* info)
       {
         LAPACK_SGBTRF (&n, &m, &kl, &ku, ab, &ldab, ipiv, info);
       }
       inline
       void gbtrf (int const n, int const m, int const kl, int const ku,
-                  double* ab, int const ldab, int* ipiv, int* info) 
+                  double* ab, int const ldab, int* ipiv, int* info)
       {
         LAPACK_DGBTRF (&n, &m, &kl, &ku, ab, &ldab, ipiv, info);
       }
       inline
       void gbtrf (int const n, int const m, int const kl, int const ku,
-                  traits::complex_f* ab, int const ldab, int* ipiv, int* info) 
+                  traits::complex_f* ab, int const ldab, int* ipiv, int* info)
       {
         LAPACK_CGBTRF (&n, &m, &kl, &ku, traits::complex_ptr(ab), &ldab, ipiv, info);
       }
       inline
       void gbtrf (int const n, int const m, int const kl, int const ku,
-                  traits::complex_d* ab, int const ldab, int* ipiv, int* info) 
+                  traits::complex_d* ab, int const ldab, int* ipiv, int* info)
       {
         LAPACK_ZGBTRF (&n, &m, &kl, &ku, traits::complex_ptr(ab), &ldab, ipiv, info);
       }
@@ -57,17 +57,17 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::banded_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::ordering_type, 
+        typename traits::matrix_traits<MatrA>::ordering_type,
         traits::row_major_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const n = traits::matrix_size1 (a);
-      int const m = traits::matrix_size2 (a); 
+      int const m = traits::matrix_size2 (a);
       assert (traits::vector_size (ipiv) == (m < n ? m : n));
 
       // if the matrix has kl lower and ku upper diagonals, then we should have
@@ -78,13 +78,13 @@
 
       assert(ku >= 0);
 
-      int info; 
+      int info;
       detail::gbtrf (n, m, kl, ku,
-                     traits::matrix_storage (a), 
-		     ld,
-                     traits::vector_storage (ipiv),  
+                     traits::matrix_storage (a),
+                     ld,
+                     traits::vector_storage (ipiv),
                      &info);
-      return info; 
+      return info;
     }
 
 
@@ -92,28 +92,28 @@
       inline
       void gbtrs (char const trans, int const n, int const kl, int const ku, int const m,
                   float const* ab, int const ldab, int const* ipiv,
-		  float* b, int const ldb, int* info) 
+                  float* b, int const ldb, int* info)
       {
         LAPACK_SGBTRS (&trans, &n, &kl, &ku, &m, ab, &ldab, ipiv, b, &ldb, info);
       }
       inline
       void gbtrs (char const trans, int const n, int const kl, int const ku, int const m,
                   double const* ab, int const ldab, int const* ipiv,
-		  double* b, int const ldb, int* info) 
+                  double* b, int const ldb, int* info)
       {
         LAPACK_DGBTRS (&trans, &n, &kl, &ku, &m, ab, &ldab, ipiv, b, &ldb, info);
       }
       inline
       void gbtrs (char const trans, int const n, int const kl, int const ku, int const m,
                   traits::complex_f const* ab, int const ldab, int const* ipiv,
-		  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f* b, int const ldb, int* info)
       {
         LAPACK_CGBTRS (&trans, &n, &kl, &ku, &m, traits::complex_ptr(ab), &ldab, ipiv, traits::complex_ptr(b), &ldb, info);
       }
       inline
       void gbtrs (char const trans, int const n, int const kl, int const ku, int const m,
                   traits::complex_d const* ab, int const ldab, int const* ipiv,
-		  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d* b, int const ldb, int* info)
       {
         LAPACK_ZGBTRS (&trans, &n, &kl, &ku, &m, traits::complex_ptr(ab), &ldab, ipiv, traits::complex_ptr(b), &ldb, info);
       }
@@ -121,21 +121,21 @@
 
 
     template <typename MatrA, typename MatrB, typename IVec>
-    int gbtrs (char const trans, MatrA const& a, IVec const& ipiv, MatrB& b) 
+    int gbtrs (char const trans, MatrA const& a, IVec const& ipiv, MatrB& b)
     {
-      assert (trans == 'N' || trans == 'T' || trans == 'C'); 
+      assert (trans == 'N' || trans == 'T' || trans == 'C');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::banded_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::matrix_size1 (b)); 
-      assert (n == traits::vector_size (ipiv)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::matrix_size1 (b));
+      assert (n == traits::vector_size (ipiv));
 
       // if the matrix has kl lower and ku upper diagonals, then we should have
       // allocated kl lower and kl+ku upper diagonals
@@ -145,23 +145,23 @@
 
       assert(ku >= 0);
 
-      int info; 
-      detail::gbtrs (trans, n, kl, ku, traits::matrix_size2 (b), 
+      int info;
+      detail::gbtrs (trans, n, kl, ku, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
 #else
-                     traits::matrix_storage_const (a), 
-#endif 
+                     traits::matrix_storage_const (a),
+#endif
                      ld,
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::vector_storage (ipiv),  
+                     traits::vector_storage (ipiv),
 #else
-                     traits::vector_storage_const (ipiv),  
+                     traits::vector_storage_const (ipiv),
 #endif
                      traits::matrix_storage (b),
                      traits::leading_dimension (b),
                      &info);
-      return info; 
+      return info;
     }
 
 
@@ -169,4 +169,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/gees.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gees.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gees.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -22,23 +22,23 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Schur factorization of general matrix.
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * gees() computes a Schur factorization of an N-by-N matrix A.
      *
      * The Schur decomposition is A = U S * herm(U)  where  U  is a
@@ -56,14 +56,14 @@
      *                           array with vector_size( work ) >= 2*matrix_size1( a )
      *                           and rwork is a real array with
      *                           vector_size( rwork ) >= matrix_size1( a ).
-     */ 
+     */
 
     namespace detail {
-      inline 
+      inline
       void gees (char const jobvs, char const sort, logical_t* select, int const n,
                  float* a, int const lda, int& sdim, traits::complex_f* w,
                  float* vs, int const ldvs, float* work, int const lwork,
-                 bool* bwork, int& info) 
+                 bool* bwork, int& info)
       {
         traits::detail::array<float> wr(n);
         traits::detail::array<float> wi(n);
@@ -77,11 +77,11 @@
       }
 
 
-      inline 
+      inline
       void gees (char const jobvs, char const sort, logical_t* select, int const n,
                  double* a, int const lda, int& sdim, traits::complex_d* w,
                  double* vs, int const ldvs, double* work, int const lwork,
-                 bool* bwork, int& info) 
+                 bool* bwork, int& info)
       {
         traits::detail::array<double> wr(n);
         traits::detail::array<double> wi(n);
@@ -95,12 +95,12 @@
       }
 
 
-      inline 
+      inline
       void gees (char const jobvs, char const sort, logical_t* select, int const n,
                  traits::complex_f* a, int const lda, int& sdim, traits::complex_f* w,
                  traits::complex_f* vs, int const ldvs,
                  traits::complex_f* work, int lwork, float* rwork, bool* bwork,
-                 int& info) 
+                 int& info)
       {
         LAPACK_CGEES (&jobvs, &sort, select, &n, traits::complex_ptr(a), &lda, &sdim,
                       traits::complex_ptr(w), traits::complex_ptr (vs), &ldvs,
@@ -108,19 +108,19 @@
       }
 
 
-      inline 
+      inline
       void gees (char const jobvs, char const sort, logical_t* select, int const n,
                  traits::complex_d* a, int const lda, int& sdim, traits::complex_d* w,
                  traits::complex_d* vs, int const ldvs,
                  traits::complex_d* work, int lwork, double* rwork, bool* bwork,
-                 int& info) 
+                 int& info)
       {
         LAPACK_ZGEES (&jobvs, &sort, select, &n, traits::complex_ptr(a), &lda, &sdim,
                       traits::complex_ptr(w), traits::complex_ptr(vs), &ldvs,
                       traits::complex_ptr(work), &lwork, rwork, bwork, &info);
       }
 
-    } 
+    }
 
 
     namespace detail {
@@ -128,41 +128,41 @@
        template <typename MatrA, typename SchVec, typename EigVal, typename Work>
        int gees (char jobvs, MatrA& a, EigVal& w, SchVec& vs, Work& work) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
          BOOST_STATIC_ASSERT((boost::is_same<
-           typename traits::matrix_traits<MatrA>::matrix_structure, 
+           typename traits::matrix_traits<MatrA>::matrix_structure,
            traits::general_t
-         >::value)); 
+         >::value));
          BOOST_STATIC_ASSERT((boost::is_same<
-           typename traits::matrix_traits<SchVec>::matrix_structure, 
+           typename traits::matrix_traits<SchVec>::matrix_structure,
            traits::general_t
-         >::value)); 
-#endif 
+         >::value));
+#endif
 
          typedef typename MatrA::value_type                            value_type ;
 
          int const n = traits::matrix_size1 (a);
-         assert (n == traits::matrix_size2 (a)); 
-         assert (n == traits::matrix_size1 (vs)); 
-         assert (n == traits::matrix_size2 (vs)); 
-         assert (n == traits::vector_size (w)); 
-         assert (3*n <= traits::vector_size (work)); 
+         assert (n == traits::matrix_size2 (a));
+         assert (n == traits::matrix_size1 (vs));
+         assert (n == traits::matrix_size2 (vs));
+         assert (n == traits::vector_size (w));
+         assert (3*n <= traits::vector_size (work));
 
          logical_t* select=0;
          bool* bwork=0;
 
-         int info, sdim; 
+         int info, sdim;
          detail::gees (jobvs, 'N', select, n,
-                       traits::matrix_storage (a), 
+                       traits::matrix_storage (a),
                        traits::leading_dimension (a),
                        sdim,
                        traits::vector_storage (w),
                        traits::matrix_storage (vs),
                        traits::leading_dimension (vs),
-		       traits::vector_storage( work ),
-		       traits::vector_size( work ),
+                       traits::vector_storage( work ),
+                       traits::vector_size( work ),
                        bwork, info);
-	 return info ;
+         return info ;
        } // gees()
 
 
@@ -170,45 +170,45 @@
        template <typename MatrA, typename SchVec, typename EigVal,
                  typename Work, typename RWork>
        int gees (char jobvs, MatrA& a, EigVal& w, SchVec& vs,
-		 Work& work, RWork& rwork) {
+                 Work& work, RWork& rwork) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
          BOOST_STATIC_ASSERT((boost::is_same<
-           typename traits::matrix_traits<MatrA>::matrix_structure, 
+           typename traits::matrix_traits<MatrA>::matrix_structure,
            traits::general_t
-         >::value)); 
+         >::value));
          BOOST_STATIC_ASSERT((boost::is_same<
-           typename traits::matrix_traits<SchVec>::matrix_structure, 
+           typename traits::matrix_traits<SchVec>::matrix_structure,
            traits::general_t
-         >::value)); 
-#endif 
+         >::value));
+#endif
 
          typedef typename MatrA::value_type                            value_type ;
 
          int const n = traits::matrix_size1 (a);
-         assert (n == traits::matrix_size2 (a)); 
-         assert (n == traits::matrix_size1 (vs)); 
-         assert (n == traits::matrix_size2 (vs)); 
-         assert (n == traits::vector_size (w)); 
-         assert (2*n <= traits::vector_size (work)); 
-         assert (n <= traits::vector_size (rwork)); 
+         assert (n == traits::matrix_size2 (a));
+         assert (n == traits::matrix_size1 (vs));
+         assert (n == traits::matrix_size2 (vs));
+         assert (n == traits::vector_size (w));
+         assert (2*n <= traits::vector_size (work));
+         assert (n <= traits::vector_size (rwork));
 
          logical_t* select=0;
          bool* bwork=0;
 
-         int info, sdim; 
+         int info, sdim;
          detail::gees (jobvs, 'N', select, n,
-                       traits::matrix_storage (a), 
+                       traits::matrix_storage (a),
                        traits::leading_dimension (a),
                        sdim,
                        traits::vector_storage (w),
                        traits::matrix_storage (vs),
                        traits::leading_dimension (vs),
-		       traits::vector_storage( work ),
-		       traits::vector_size( work ),
-		       traits::vector_storage( rwork ),
+                       traits::vector_storage( work ),
+                       traits::vector_size( work ),
+                       traits::vector_storage( rwork ),
                        bwork, info);
-	 return info ;
+         return info ;
        } // gees()
 
 
@@ -331,4 +331,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/geev.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/geev.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/geev.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  * Copyright (c) Andreas Kloeckner 2004
  *               Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
@@ -7,7 +7,7 @@
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -22,26 +22,26 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Eigendecomposition of a general matrix A * V = V * D
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * geev() computes the eigendecomposition of a N x N matrix,
-     * where V is a N x N matrix and D is a diagonal matrix. The 
-     * diagonal element D(i,i) is an eigenvalue of A and Q(:,i) is 
+     * where V is a N x N matrix and D is a diagonal matrix. The
+     * diagonal element D(i,i) is an eigenvalue of A and Q(:,i) is
      * a corresponding eigenvector.
      *
      *
@@ -65,64 +65,64 @@
      * If you choose to leave them real, you have to pick apart the complex-conjugate
      * eigenpairs as per the LAPACK documentation. If you choose them complex,
      * the code will do the picking-apart on your behalf, at the expense of 4*N
-     * extra storage. Only if vr is complex, it will really fulfill its invariant 
+     * extra storage. Only if vr is complex, it will really fulfill its invariant
      * on exit to the code in all cases, since complex pairs spoil that relation.
-     */ 
+     */
 
     namespace detail {
 
       inline
       int geev_backend(const char* jobvl, const char* jobvr, const int* n, float* a,
-	       const int* lda, float* wr, float* wi, float* vl, const int* ldvl,
-	       float* vr, const int* ldvr, float* work, const int* lwork)
+               const int* lda, float* wr, float* wi, float* vl, const int* ldvl,
+               float* vr, const int* ldvr, float* work, const int* lwork)
       {
-	int info;
-	LAPACK_SGEEV(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, &info);
-	return info;
+        int info;
+        LAPACK_SGEEV(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, &info);
+        return info;
       }
 
       inline
       int geev_backend(const char* jobvl, const char* jobvr, const int* n, double* a,
-	       const int* lda, double* wr, double* wi, double* vl, const int* ldvl,
-	       double* vr, const int* ldvr, double* work, const int* lwork)
+               const int* lda, double* wr, double* wi, double* vl, const int* ldvl,
+               double* vr, const int* ldvr, double* work, const int* lwork)
       {
-	int info;
-	LAPACK_DGEEV(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, &info);
-	return info;
+        int info;
+        LAPACK_DGEEV(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, &info);
+        return info;
       }
 
       inline
       int geev_backend(const char* jobvl, const char* jobvr, const int* n, traits::complex_f* a,
-	       const int* lda, traits::complex_f* w, traits::complex_f* vl, const int* ldvl,
-	       traits::complex_f* vr, const int* ldvr, traits::complex_f* work, const int* lwork,
-	       float* rwork)
+               const int* lda, traits::complex_f* w, traits::complex_f* vl, const int* ldvl,
+               traits::complex_f* vr, const int* ldvr, traits::complex_f* work, const int* lwork,
+               float* rwork)
       {
-	int info;
-	LAPACK_CGEEV(jobvl, jobvr, n, 
-		     traits::complex_ptr(a), lda, 
-		     traits::complex_ptr(w), 
-		     traits::complex_ptr(vl), ldvl, 
-		     traits::complex_ptr(vr), ldvr, 
-		     traits::complex_ptr(work), lwork, 
-		     rwork, &info);
-	return info;
+        int info;
+        LAPACK_CGEEV(jobvl, jobvr, n,
+                     traits::complex_ptr(a), lda,
+                     traits::complex_ptr(w),
+                     traits::complex_ptr(vl), ldvl,
+                     traits::complex_ptr(vr), ldvr,
+                     traits::complex_ptr(work), lwork,
+                     rwork, &info);
+        return info;
       }
 
       inline
       int geev_backend(const char* jobvl, const char* jobvr, const int* n, traits::complex_d* a,
-	       const int* lda, traits::complex_d* w, traits::complex_d* vl, const int* ldvl,
-	       traits::complex_d* vr, const int* ldvr, traits::complex_d* work, const int* lwork,
-	       double* rwork)
+               const int* lda, traits::complex_d* w, traits::complex_d* vl, const int* ldvl,
+               traits::complex_d* vr, const int* ldvr, traits::complex_d* work, const int* lwork,
+               double* rwork)
       {
-	int info;
-	LAPACK_ZGEEV(jobvl, jobvr, n, 
-		     traits::complex_ptr(a), lda, 
-		     traits::complex_ptr(w), 
-		     traits::complex_ptr(vl), ldvl, 
-		     traits::complex_ptr(vr), ldvr, 
-		     traits::complex_ptr(work), lwork, 
-		     rwork, &info);
-	return info;
+        int info;
+        LAPACK_ZGEEV(jobvl, jobvr, n,
+                     traits::complex_ptr(a), lda,
+                     traits::complex_ptr(w),
+                     traits::complex_ptr(vl), ldvl,
+                     traits::complex_ptr(vr), ldvr,
+                     traits::complex_ptr(work), lwork,
+                     rwork, &info);
+        return info;
       }
 
 
@@ -135,174 +135,174 @@
 
       // real case
       template <typename A, typename W, typename V>
-      int geev(real_case, const char jobvl, const char jobvr, A& a, W& w, 
-	       V* vl, V *vr)
+      int geev(real_case, const char jobvl, const char jobvr, A& a, W& w,
+               V* vl, V *vr)
       {
-	int const n = traits::matrix_size1(a);
-	typedef typename A::value_type value_type;
-	traits::detail::array<value_type> wr(n);
-	traits::detail::array<value_type> wi(n);
-
-	traits::detail::array<value_type> vl2(vl ? 0 : n);
-	traits::detail::array<value_type> vr2(vr ? 0 : n);
-	value_type* vl_real = vl ? traits::matrix_storage(*vl) : vl2.storage();
-	const int ldvl = vl ? traits::matrix_size2(*vl) : 1;
-	value_type* vr_real = vr ? traits::matrix_storage(*vr) : vr2.storage();
-	const int ldvr = vr ? traits::matrix_size2(*vr) : 1;
-
-
-	// workspace query
-	int lwork = -1;
-	value_type work_temp;
-	int result = geev_backend(&jobvl, &jobvr, &n,
-				  traits::matrix_storage(a), &n, 
-				  wr.storage(), wi.storage(), 
-				  vl_real, &ldvl, vr_real, &ldvr,
-				  &work_temp, &lwork);
-	if (result != 0)
-	  return result;
-
-	lwork = (int) work_temp;
-	traits::detail::array<value_type> work(lwork);
-	result = geev_backend(&jobvl, &jobvr, &n,
-			      traits::matrix_storage(a), &n, 
-			      wr.storage(), wi.storage(), 
-			      vl_real, &ldvl, vr_real, &ldvr,
-			      work.storage(), &lwork);
-
-	for (int i = 0; i < n; i++)
-	  traits::vector_storage(w)[i] = std::complex<value_type>(wr[i], wi[i]);
-	return result;
+        int const n = traits::matrix_size1(a);
+        typedef typename A::value_type value_type;
+        traits::detail::array<value_type> wr(n);
+        traits::detail::array<value_type> wi(n);
+
+        traits::detail::array<value_type> vl2(vl ? 0 : n);
+        traits::detail::array<value_type> vr2(vr ? 0 : n);
+        value_type* vl_real = vl ? traits::matrix_storage(*vl) : vl2.storage();
+        const int ldvl = vl ? traits::matrix_size2(*vl) : 1;
+        value_type* vr_real = vr ? traits::matrix_storage(*vr) : vr2.storage();
+        const int ldvr = vr ? traits::matrix_size2(*vr) : 1;
+
+
+        // workspace query
+        int lwork = -1;
+        value_type work_temp;
+        int result = geev_backend(&jobvl, &jobvr, &n,
+                                  traits::matrix_storage(a), &n,
+                                  wr.storage(), wi.storage(),
+                                  vl_real, &ldvl, vr_real, &ldvr,
+                                  &work_temp, &lwork);
+        if (result != 0)
+          return result;
+
+        lwork = (int) work_temp;
+        traits::detail::array<value_type> work(lwork);
+        result = geev_backend(&jobvl, &jobvr, &n,
+                              traits::matrix_storage(a), &n,
+                              wr.storage(), wi.storage(),
+                              vl_real, &ldvl, vr_real, &ldvr,
+                              work.storage(), &lwork);
+
+        for (int i = 0; i < n; i++)
+          traits::vector_storage(w)[i] = std::complex<value_type>(wr[i], wi[i]);
+        return result;
       }
 
       // mixed (i.e. real with complex vectors) case
       template <typename A, typename W, typename V>
-      int geev(mixed_case, const char jobvl, const char jobvr, A& a, W& w, 
-	       V* vl, V *vr)
+      int geev(mixed_case, const char jobvl, const char jobvr, A& a, W& w,
+               V* vl, V *vr)
       {
-	int const n = traits::matrix_size1(a);
-	typedef typename A::value_type value_type;
-	traits::detail::array<value_type> wr(n);
-	traits::detail::array<value_type> wi(n);
-
-	traits::detail::array<value_type> vl2(vl ? n*n : n);
-	traits::detail::array<value_type> vr2(vr ? n*n : n);
-	const int ldvl2 = vl ? n : 1;
-	const int ldvr2 = vr ? n : 1;
-
-	// workspace query
-	int lwork = -1;
-	value_type work_temp;
-	int result = geev_backend(&jobvl, &jobvr, &n,
-				  traits::matrix_storage(a), &n, 
-				  wr.storage(), wi.storage(), 
-				  vl2.storage(), &ldvl2, vr2.storage(), &ldvr2,
-				  &work_temp, &lwork);
-	if (result != 0)
-	  return result;
-
-	lwork = (int) work_temp;
-	traits::detail::array<value_type> work(lwork);
-	result = geev_backend(&jobvl, &jobvr, &n,
-			      traits::matrix_storage(a), &n, 
-			      wr.storage(), wi.storage(), 
-			      vl2.storage(), &ldvl2, vr2.storage(), &ldvr2,
-			      work.storage(), &lwork);
-
-	typedef typename V::value_type vec_value_type;
-	vec_value_type* vl_stor = NULL;
-	vec_value_type* vr_stor = NULL;
-	int ldvl = 0, ldvr = 0;
-	if (vl)
-	{
-	  vl_stor = traits::matrix_storage(*vl);
-	  ldvl = traits::matrix_size2(*vl);
-	}
-	if (vr)
-	{
-	  vr_stor = traits::matrix_storage(*vr);
-	  ldvr = traits::matrix_size2(*vr);
-	}
-	
-	for (int i = 0; i < n; i++)
+        int const n = traits::matrix_size1(a);
+        typedef typename A::value_type value_type;
+        traits::detail::array<value_type> wr(n);
+        traits::detail::array<value_type> wi(n);
+
+        traits::detail::array<value_type> vl2(vl ? n*n : n);
+        traits::detail::array<value_type> vr2(vr ? n*n : n);
+        const int ldvl2 = vl ? n : 1;
+        const int ldvr2 = vr ? n : 1;
+
+        // workspace query
+        int lwork = -1;
+        value_type work_temp;
+        int result = geev_backend(&jobvl, &jobvr, &n,
+                                  traits::matrix_storage(a), &n,
+                                  wr.storage(), wi.storage(),
+                                  vl2.storage(), &ldvl2, vr2.storage(), &ldvr2,
+                                  &work_temp, &lwork);
+        if (result != 0)
+          return result;
+
+        lwork = (int) work_temp;
+        traits::detail::array<value_type> work(lwork);
+        result = geev_backend(&jobvl, &jobvr, &n,
+                              traits::matrix_storage(a), &n,
+                              wr.storage(), wi.storage(),
+                              vl2.storage(), &ldvl2, vr2.storage(), &ldvr2,
+                              work.storage(), &lwork);
+
+        typedef typename V::value_type vec_value_type;
+        vec_value_type* vl_stor = NULL;
+        vec_value_type* vr_stor = NULL;
+        int ldvl = 0, ldvr = 0;
+        if (vl)
+        {
+          vl_stor = traits::matrix_storage(*vl);
+          ldvl = traits::matrix_size2(*vl);
+        }
+        if (vr)
+        {
+          vr_stor = traits::matrix_storage(*vr);
+          ldvr = traits::matrix_size2(*vr);
+        }
+
+        for (int i = 0; i < n; i++)
         {
           traits::vector_storage(w)[i] = std::complex<value_type>(wr[i], wi[i]);
-	  if (wi[i] != 0)
-	  {
-	    assert(i+1 < n);
-	    assert(wr[i+1] == wr[i]);
-	    assert(wi[i+1] == -wi[i]);
+          if (wi[i] != 0)
+          {
+            assert(i+1 < n);
+            assert(wr[i+1] == wr[i]);
+            assert(wi[i+1] == -wi[i]);
 
             traits::vector_storage(w)[i+1] = std::complex<value_type>(wr[i+1], wi[i+1]);
-	    for (int j = 0; j < n; j++)
-	    {
-	      if (vl)
-	      {
-		vl_stor[i*ldvl+j] = std::complex<value_type>(vl2[i*n+j], vl2[(i+1)*n+j]);
-		vl_stor[(i+1)*ldvl+j] = std::complex<value_type>(vl2[i*n+j], -vl2[(i+1)*n+j]);
-	      }
-	      if (vr)
-	      {
-		vr_stor[i*ldvr+j] = std::complex<value_type>(vr2[i*n+j], vr2[(i+1)*n+j]);
-		vr_stor[(i+1)*ldvr+j] = std::complex<value_type>(vr2[i*n+j], -vr2[(i+1)*n+j]);
-	      }
-	    }
-
-	    i++;
-	  }
-	  else
-	  {
-	    for (int j = 0; j < n; j++)
-	    {
-	      if (vl)
-		vl_stor[i*ldvl+j] = vl2[i*n+j];
-	      if (vr)
-		vr_stor[i*ldvr+j] = vr2[i*n+j];
-	    }
-	  }
-	}
-	return result;
+            for (int j = 0; j < n; j++)
+            {
+              if (vl)
+              {
+                vl_stor[i*ldvl+j] = std::complex<value_type>(vl2[i*n+j], vl2[(i+1)*n+j]);
+                vl_stor[(i+1)*ldvl+j] = std::complex<value_type>(vl2[i*n+j], -vl2[(i+1)*n+j]);
+              }
+              if (vr)
+              {
+                vr_stor[i*ldvr+j] = std::complex<value_type>(vr2[i*n+j], vr2[(i+1)*n+j]);
+                vr_stor[(i+1)*ldvr+j] = std::complex<value_type>(vr2[i*n+j], -vr2[(i+1)*n+j]);
+              }
+            }
+
+            i++;
+          }
+          else
+          {
+            for (int j = 0; j < n; j++)
+            {
+              if (vl)
+                vl_stor[i*ldvl+j] = vl2[i*n+j];
+              if (vr)
+                vr_stor[i*ldvr+j] = vr2[i*n+j];
+            }
+          }
+        }
+        return result;
       }
 
       // complex case
       template <typename A, typename W, typename V>
-      int geev(complex_case, const char jobvl, const char jobvr, A& a, W& w, 
-	       V* vl, V *vr)
+      int geev(complex_case, const char jobvl, const char jobvr, A& a, W& w,
+               V* vl, V *vr)
       {
-	typedef typename A::value_type value_type;
-	typedef typename traits::type_traits<value_type>::real_type real_type;
+        typedef typename A::value_type value_type;
+        typedef typename traits::type_traits<value_type>::real_type real_type;
 
-	int const n = traits::matrix_size1(a);
-	traits::detail::array<real_type> rwork(2*n);
+        int const n = traits::matrix_size1(a);
+        traits::detail::array<real_type> rwork(2*n);
 
-	traits::detail::array<value_type> vl2(vl ? 0 : n);
-	traits::detail::array<value_type> vr2(vr ? 0 : n);
-	value_type* vl_real = vl ? traits::matrix_storage(*vl) : vl2.storage();
-	const int ldvl = vl ? traits::matrix_size2(*vl) : 1;
-	value_type* vr_real = vr ? traits::matrix_storage(*vr) : vr2.storage();
-	const int ldvr = vr ? traits::matrix_size2(*vr) : 1;
-
-	// workspace query
-	int lwork = -1;
-	value_type work_temp;
-	int result = geev_backend(&jobvl, &jobvr, &n,
-				  traits::matrix_storage(a), &n, 
-				  traits::vector_storage(w),
-				  vl_real, &ldvl, vr_real, &ldvr,
-				  &work_temp, &lwork, rwork.storage());
-	if (result != 0)
-	  return result;
-
-	lwork = (int) std::real(work_temp);
-	traits::detail::array<value_type> work(lwork);
-	result = geev_backend(&jobvl, &jobvr, &n,
-			      traits::matrix_storage(a), &n, 
-			      traits::vector_storage(w),
-			      vl_real, &ldvl, vr_real, &ldvr,
-			      work.storage(), &lwork, 
-			      rwork.storage());
+        traits::detail::array<value_type> vl2(vl ? 0 : n);
+        traits::detail::array<value_type> vr2(vr ? 0 : n);
+        value_type* vl_real = vl ? traits::matrix_storage(*vl) : vl2.storage();
+        const int ldvl = vl ? traits::matrix_size2(*vl) : 1;
+        value_type* vr_real = vr ? traits::matrix_storage(*vr) : vr2.storage();
+        const int ldvr = vr ? traits::matrix_size2(*vr) : 1;
+
+        // workspace query
+        int lwork = -1;
+        value_type work_temp;
+        int result = geev_backend(&jobvl, &jobvr, &n,
+                                  traits::matrix_storage(a), &n,
+                                  traits::vector_storage(w),
+                                  vl_real, &ldvl, vr_real, &ldvr,
+                                  &work_temp, &lwork, rwork.storage());
+        if (result != 0)
+          return result;
+
+        lwork = (int) std::real(work_temp);
+        traits::detail::array<value_type> work(lwork);
+        result = geev_backend(&jobvl, &jobvr, &n,
+                              traits::matrix_storage(a), &n,
+                              traits::vector_storage(w),
+                              vl_real, &ldvl, vr_real, &ldvr,
+                              work.storage(), &lwork,
+                              rwork.storage());
 
-	return result;
+        return result;
       }
 
     } // namespace detail
@@ -310,25 +310,25 @@
 
     // gateway / dispatch routine
     template <typename A, typename W, typename V>
-    int geev(A& a, W& w,  V* vl, V* vr, optimal_workspace) 
+    int geev(A& a, W& w,  V* vl, V* vr, optimal_workspace)
     {
       // input checking
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-			   typename traits::matrix_traits<A>::matrix_structure, 
-			   traits::general_t
-			   >::value)); 
-#endif 
+                           typename traits::matrix_traits<A>::matrix_structure,
+                           traits::general_t
+                           >::value));
+#endif
 
 #ifndef NDEBUG
       int const n = traits::matrix_size1(a);
 #endif
 
-      assert(traits::matrix_size2(a)==n); 
-      assert(traits::vector_size(w)==n); 
-      assert(traits::vector_size(w)==n); 
-      assert(!vr || traits::matrix_size1(*vr)==n); 
-      assert(!vl || traits::matrix_size1(*vl)==n); 
+      assert(traits::matrix_size2(a)==n);
+      assert(traits::vector_size(w)==n);
+      assert(traits::vector_size(w)==n);
+      assert(!vr || traits::matrix_size1(*vr)==n);
+      assert(!vl || traits::matrix_size1(*vl)==n);
 
       // preparation
       typedef typename A::value_type value_type;
@@ -337,19 +337,19 @@
 
       // dispatch
       return detail::geev(typename boost::mpl::if_<
-			  boost::is_same<value_type, real_type>,
-			  typename boost::mpl::if_<
-			  boost::is_same<vec_value_type, real_type>,
-			  detail::real_case,
-			  detail::mixed_case>::type,
-			  detail::complex_case>::type(),
-			  vl != 0 ? 'V' : 'N', 
-			  vr != 0 ? 'V' : 'N',
-			  a, w, vl, vr);
+                          boost::is_same<value_type, real_type>,
+                          typename boost::mpl::if_<
+                          boost::is_same<vec_value_type, real_type>,
+                          detail::real_case,
+                          detail::mixed_case>::type,
+                          detail::complex_case>::type(),
+                          vl != 0 ? 'V' : 'N',
+                          vr != 0 ? 'V' : 'N',
+                          a, w, vl, vr);
     }
 
   }
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/gels.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gels.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gels.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -20,185 +20,185 @@
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
 
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
 #endif
 
 namespace boost { namespace numeric { namespace bindings {
-	
-	namespace lapack {
 
-		////////////////////////////////////////////////////////////////////////
-		//
-		// Linear Least Squares of an underdetermined or overdetermined matrix
-		// 
-		///////////////////////////////////////////////////////////////////////
-
-		/*	gels - uses the LQ or QR factorization to solve an overdetermined
-		 *		   or underdetermined linear system.  A full rank matrix is
-		 *		   assumed.
-		 *
-		 *	The linear least squares system is defined by A*x=b.  A is the m-by-n
-		 *	coefficients matrix and b is the m-by-nrhs matrix.  Several 
-		 *	right hand side vectors b and solution vectors x can be handled in 
-		 *	a single call; they are stored as the columns of the m-by-nrhs right
-		 *	hand side matrix B and the n-by-nrh solution matrix x.
-		 *
-		 *	If trans = 'N' and m >= n:	find least squares solution of overdetermined system
-		 *		minimizes || b - A x ||2
-		 *
-		 *	if trans = 'N' and m < n: find minimum norm solution of underdetermined system
-		 *		A*X = B
-		 *
-		 *	if trans = 'T' or 'C' and m >= n: find minimum norm soltion of underdetermined system
-		 *		A^H*X = B
-		 *
-		 *	if trans = 'T' or 'C' and m < n: find least squares solution of overdetermined system
-		 *		minimize || b - A^H x ||2
-		 *
-		 *	Workspace is organized following the arguments in the calling sequence.
-		 *  optimal_workspace() : for optimizing use of blas 3 kernels
-		 *  minimal_workspace() : minimum size of work arrays, but does not allow for optimization
-		 *                        of blas 3 kernels
-		 *  workspace( work )	: where work size must be at least min(m, n) + max(1, m, n, nrhs)
-		 *
-		 *
-		 *	Each solution vector x (length n) is returned column-wise in the rhs matrix B.
-		 */
-
-		namespace detail {
-
-			inline void gels(char const trans, const int m, const int n,
-							 const int nrhs, float *a, const int lda,
-							 float *b, const int ldb, float *work,
-							 const int lwork, int *info)
-			{
-				LAPACK_SGELS(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, info);
-			}
-
-			inline void gels(char const trans, const int m, const int n,
-							 const int nrhs, double *a, const int lda,
-							 double *b, const int ldb, double *work,
-							 const int lwork, int *info)
-			{
-				LAPACK_DGELS(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, info);
-			}
-
-			inline void gels(char const trans, const int m, const int n,
-							 const int nrhs, traits::complex_f *a, const int lda,
-							 traits::complex_f *b, const int ldb, traits::complex_f *work,
-							 const int lwork, int *info)
-			{
-				LAPACK_CGELS(&trans, &m, &n, &nrhs, 
-							 traits::complex_ptr(a), &lda, 
-							 traits::complex_ptr(b), &ldb, 
-							 traits::complex_ptr(work), &lwork, info);
-			}
-
-			inline void gels(char const trans, const int m, const int n,
-							 const int nrhs, traits::complex_d *a, const int lda,
-							 traits::complex_d *b, const int ldb, traits::complex_d *work,
-							 const int lwork, int *info)
-			{
-				LAPACK_ZGELS(&trans, &m, &n, &nrhs, 
-							 traits::complex_ptr(a), &lda, 
-							 traits::complex_ptr(b), &ldb, 
-							 traits::complex_ptr(work), &lwork, info);
-			}
-		
-			// generic function that calls more detailed lapack function
-			template <typename MatrA, typename VecB, typename Work>
-			int gels(const char trans, MatrA& A, VecB& b, Work& work)
-			{
-				const int m = traits::matrix_size1(A);
-				const int n = traits::matrix_size2(A);
-				const int mrhs = traits::matrix_size1(b);
-				const int nrhs = traits::matrix_size2(b);
-
-				// sanity checks
-				assert(trans == 'N' || trans == 'T' || trans == 'C');
-				assert(m >= 0 && n >= 0);
-				assert(mrhs >= 0 && nrhs >= 0);
-				assert(traits::leading_dimension(A) >= 1 && traits::leading_dimension(b) >= 1);
-				assert(mrhs == std::max(m, n));
-
-				int info;
-				detail::gels(trans,
-							 traits::matrix_size1(A),
-							 traits::matrix_size2(A),
-							 traits::matrix_size2(b),
-							 traits::matrix_storage(A),
-							 traits::leading_dimension(A),
-							 traits::matrix_storage(b),
-							 traits::leading_dimension(b),
-							 traits::vector_storage(work),
-							 traits::vector_size(work),
-							 &info);	
-
-				return info;
-			}
-
-			// query for recommended workspace
-			template <typename MatrA, typename VecB>
-			int gels_optimal_work(const char trans, MatrA& A, VecB& b)
-			{
-				typename MatrA::value_type work;
-				int info;
-				detail::gels(trans,
-					traits::matrix_size1(A),
-					traits::matrix_size2(A),
-					traits::matrix_size2(b),
-					traits::matrix_storage(A),
-					traits::leading_dimension(A),
-					traits::matrix_storage(b),
-					traits::leading_dimension(b),
-					&work, //traits::vector_storage(work),
-					-1, // traits::vector_size(work),
-					&info);
-
-				assert(info == 0);
-
-				int lwork = traits::detail::to_int(work);
-
-				return lwork;
-			}
-		} // namespace detail
-
-
-		template <typename MatrA, typename VecB>
-		int gels(const char trans, MatrA& A, VecB& b, optimal_workspace)
-		{
-			// query optimal workspace size
-			int work_size = detail::gels_optimal_work(trans, A, b);
-			traits::detail::array<typename MatrA::value_type> work(work_size);
-
-			return detail::gels(trans, A, b, work);
-		}
-
-		template <typename MatrA, typename VecB>
-		int gels(const char trans, MatrA& A, VecB& b, minimal_workspace)
-		{
-			const int m = traits::matrix_size1(A);
-			const int n = traits::matrix_size2(A);
-			const int r = traits::matrix_size2(b);
-
-			const int minmn = std::min(m, n);		//m < n ? m : n;
-			const int maxmn = std::max(m, n);		// m > n ? m : n;
-			const int maxdim = std::max(maxmn, r);	// maxmn > r ? maxmn : r;
-
-			traits::detail::array<typename MatrA::value_type> work(minmn + std::max(1, maxdim));
-
-			return detail::gels(trans, A, b, work);
-		}
-
-		template <typename MatrA, typename VecB, typename Work>
-		int gels(const char trans, MatrA& A, VecB& b, detail::workspace1<Work> workspace)
-		{
-			return detail::gels(trans, A, b, workspace.w_);
-		}
+    namespace lapack {
 
-	} // namespace lapack
+        ////////////////////////////////////////////////////////////////////////
+        //
+        // Linear Least Squares of an underdetermined or overdetermined matrix
+        //
+        ///////////////////////////////////////////////////////////////////////
+
+        /*  gels - uses the LQ or QR factorization to solve an overdetermined
+         *         or underdetermined linear system.  A full rank matrix is
+         *         assumed.
+         *
+         *  The linear least squares system is defined by A*x=b.  A is the m-by-n
+         *  coefficients matrix and b is the m-by-nrhs matrix.  Several
+         *  right hand side vectors b and solution vectors x can be handled in
+         *  a single call; they are stored as the columns of the m-by-nrhs right
+         *  hand side matrix B and the n-by-nrh solution matrix x.
+         *
+         *  If trans = 'N' and m >= n:  find least squares solution of overdetermined system
+         *      minimizes || b - A x ||2
+         *
+         *  if trans = 'N' and m < n: find minimum norm solution of underdetermined system
+         *      A*X = B
+         *
+         *  if trans = 'T' or 'C' and m >= n: find minimum norm soltion of underdetermined system
+         *      A^H*X = B
+         *
+         *  if trans = 'T' or 'C' and m < n: find least squares solution of overdetermined system
+         *      minimize || b - A^H x ||2
+         *
+         *  Workspace is organized following the arguments in the calling sequence.
+         *  optimal_workspace() : for optimizing use of blas 3 kernels
+         *  minimal_workspace() : minimum size of work arrays, but does not allow for optimization
+         *                        of blas 3 kernels
+         *  workspace( work )   : where work size must be at least min(m, n) + max(1, m, n, nrhs)
+         *
+         *
+         *  Each solution vector x (length n) is returned column-wise in the rhs matrix B.
+         */
+
+        namespace detail {
+
+            inline void gels(char const trans, const int m, const int n,
+                             const int nrhs, float *a, const int lda,
+                             float *b, const int ldb, float *work,
+                             const int lwork, int *info)
+            {
+                LAPACK_SGELS(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, info);
+            }
+
+            inline void gels(char const trans, const int m, const int n,
+                             const int nrhs, double *a, const int lda,
+                             double *b, const int ldb, double *work,
+                             const int lwork, int *info)
+            {
+                LAPACK_DGELS(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, info);
+            }
+
+            inline void gels(char const trans, const int m, const int n,
+                             const int nrhs, traits::complex_f *a, const int lda,
+                             traits::complex_f *b, const int ldb, traits::complex_f *work,
+                             const int lwork, int *info)
+            {
+                LAPACK_CGELS(&trans, &m, &n, &nrhs,
+                             traits::complex_ptr(a), &lda,
+                             traits::complex_ptr(b), &ldb,
+                             traits::complex_ptr(work), &lwork, info);
+            }
+
+            inline void gels(char const trans, const int m, const int n,
+                             const int nrhs, traits::complex_d *a, const int lda,
+                             traits::complex_d *b, const int ldb, traits::complex_d *work,
+                             const int lwork, int *info)
+            {
+                LAPACK_ZGELS(&trans, &m, &n, &nrhs,
+                             traits::complex_ptr(a), &lda,
+                             traits::complex_ptr(b), &ldb,
+                             traits::complex_ptr(work), &lwork, info);
+            }
+
+            // generic function that calls more detailed lapack function
+            template <typename MatrA, typename VecB, typename Work>
+            int gels(const char trans, MatrA& A, VecB& b, Work& work)
+            {
+                const int m = traits::matrix_size1(A);
+                const int n = traits::matrix_size2(A);
+                const int mrhs = traits::matrix_size1(b);
+                const int nrhs = traits::matrix_size2(b);
+
+                // sanity checks
+                assert(trans == 'N' || trans == 'T' || trans == 'C');
+                assert(m >= 0 && n >= 0);
+                assert(mrhs >= 0 && nrhs >= 0);
+                assert(traits::leading_dimension(A) >= 1 && traits::leading_dimension(b) >= 1);
+                assert(mrhs == std::max(m, n));
+
+                int info;
+                detail::gels(trans,
+                             traits::matrix_size1(A),
+                             traits::matrix_size2(A),
+                             traits::matrix_size2(b),
+                             traits::matrix_storage(A),
+                             traits::leading_dimension(A),
+                             traits::matrix_storage(b),
+                             traits::leading_dimension(b),
+                             traits::vector_storage(work),
+                             traits::vector_size(work),
+                             &info);
+
+                return info;
+            }
+
+            // query for recommended workspace
+            template <typename MatrA, typename VecB>
+            int gels_optimal_work(const char trans, MatrA& A, VecB& b)
+            {
+                typename MatrA::value_type work;
+                int info;
+                detail::gels(trans,
+                    traits::matrix_size1(A),
+                    traits::matrix_size2(A),
+                    traits::matrix_size2(b),
+                    traits::matrix_storage(A),
+                    traits::leading_dimension(A),
+                    traits::matrix_storage(b),
+                    traits::leading_dimension(b),
+                    &work, //traits::vector_storage(work),
+                    -1, // traits::vector_size(work),
+                    &info);
+
+                assert(info == 0);
+
+                int lwork = traits::detail::to_int(work);
+
+                return lwork;
+            }
+        } // namespace detail
+
+
+        template <typename MatrA, typename VecB>
+        int gels(const char trans, MatrA& A, VecB& b, optimal_workspace)
+        {
+            // query optimal workspace size
+            int work_size = detail::gels_optimal_work(trans, A, b);
+            traits::detail::array<typename MatrA::value_type> work(work_size);
+
+            return detail::gels(trans, A, b, work);
+        }
+
+        template <typename MatrA, typename VecB>
+        int gels(const char trans, MatrA& A, VecB& b, minimal_workspace)
+        {
+            const int m = traits::matrix_size1(A);
+            const int n = traits::matrix_size2(A);
+            const int r = traits::matrix_size2(b);
+
+            const int minmn = std::min(m, n);       //m < n ? m : n;
+            const int maxmn = std::max(m, n);       // m > n ? m : n;
+            const int maxdim = std::max(maxmn, r);  // maxmn > r ? maxmn : r;
+
+            traits::detail::array<typename MatrA::value_type> work(minmn + std::max(1, maxdim));
+
+            return detail::gels(trans, A, b, work);
+        }
+
+        template <typename MatrA, typename VecB, typename Work>
+        int gels(const char trans, MatrA& A, VecB& b, detail::workspace1<Work> workspace)
+        {
+            return detail::gels(trans, A, b, workspace.w_);
+        }
+
+    } // namespace lapack
 
 }}}
 
Modified: sandbox/boost/numeric/bindings/lapack/gelsd.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gelsd.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gelsd.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -21,395 +21,395 @@
 #include <boost/numeric/bindings/lapack/ilaenv.hpp>
 
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
 #endif
 
 namespace boost { namespace numeric { namespace bindings {
 
-	namespace lapack {
+    namespace lapack {
 
-		namespace detail {
+        namespace detail {
 
-			inline void gelsd(const int m, const int n, const int nrhs, 
-							  float *a, const int lda, float *b, const int ldb, 
-							  float *s, const float rcond, int *rank, float *work,
-							  const int lwork, int *iwork, int *info)
-			{
-				LAPACK_SGELSD(&m, &n, &nrhs, a, &lda, b, &ldb, s, 
-							  &rcond, rank, work, &lwork, iwork, info);
-			}
-
-			inline void gelsd(const int m, const int n, const int nrhs, 
-							  double *a, const int lda, double *b, const int ldb, 
-							  double *s, const double rcond, int *rank, double *work,
-							  const int lwork, int *iwork, int *info)
-			{
-				LAPACK_DGELSD(&m, &n, &nrhs, a, &lda, b, &ldb, s, 
-							  &rcond, rank, work, &lwork, iwork, info);
-			}
-
-			inline void gelsd(const int m, const int n, const int nrhs, 
-							  traits::complex_f *a, const int lda, traits::complex_f *b, 
-							  const int ldb, float *s, const float rcond, int *rank, 
-							  traits::complex_f *work, const int lwork, float *rwork, 
-							  int *iwork, int *info)
-			{
-				LAPACK_CGELSD(&m, &n, &nrhs, traits::complex_ptr(a), 
-							  &lda, traits::complex_ptr(b), &ldb, s, 
-							  &rcond, rank, traits::complex_ptr(work), 
-							  &lwork, rwork, iwork, info);
-			}
-
-			inline void gelsd(const int m, const int n, const int nrhs, 
-							  traits::complex_d *a, const int lda, traits::complex_d *b, 
-							  const int ldb, double *s, const double rcond, int *rank, 
-							  traits::complex_d *work, const int lwork, double *rwork, 
-							  int *iwork, int *info)
-			{
-				LAPACK_ZGELSD(&m, &n, &nrhs, traits::complex_ptr(a), 
-							  &lda, traits::complex_ptr(b), &ldb, s, 
-							  &rcond, rank, traits::complex_ptr(work), 
-							  &lwork, rwork, iwork, info);
-			}
-
-			// gelsd for real type
-			template <typename MatrA, typename MatrB, typename VecS, typename Work>
-			int gelsd(MatrA& A, MatrB& B, VecS& s, Work& work)
-			{
-				typedef typename MatrA::value_type val_t;
-				typedef typename traits::type_traits<val_t>::real_type real_t;
-
-				const int m = traits::matrix_size1(A);
-				const int n = traits::matrix_size2(A);
-				const int nrhs = traits::matrix_size2(B);
-				const int maxmn = std::max(m, n);
-				const int minmn = std::min(m, n);
-
-				// sanity checks
-				assert(m >= 0 && n >= 0);
-				assert(nrhs >= 0);
-				assert(traits::leading_dimension(A) >= std::max(1, m));
-				assert(traits::leading_dimension(B) >= std::max(1, maxmn));
-				assert(traits::vector_size(work) >= 1);
-				assert(traits::vector_size(s) >= std::max(1, minmn));
-
-				int info;
-				const real_t rcond = -1;	// use machine precision
-				int rank;
-
-				// query for maximum size of subproblems
-				const int smlsiz = ilaenv(9, "GELSD", "");
-				const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
-
-				traits::detail::array<int> iwork(3*minmn*nlvl + 11*minmn);
-
-				detail::gelsd(traits::matrix_size1(A),
-							  traits::matrix_size2(A),
-							  traits::matrix_size2(B),
-							  traits::matrix_storage(A),
-							  traits::leading_dimension(A),
-							  traits::matrix_storage(B),
-							  traits::leading_dimension(B),
-							  traits::vector_storage(s),
-							  rcond,
-							  &rank,
-							  traits::vector_storage(work),
-							  traits::vector_size(work),
-							  traits::vector_storage(iwork),
-							  &info);
-
-				return info;
-			}
-
-			// gelsd for complex type
-			template <typename MatrA, typename MatrB, typename VecS, 
-						typename Work, typename RWork>
-			int gelsd(MatrA& A, MatrB& B, VecS& s, Work& work, RWork& rwork)
-			{
-				typedef typename MatrA::value_type val_t;
-				typedef typename traits::type_traits<val_t>::real_type real_t;
-
-				const int m = traits::matrix_size1(A);
-				const int n = traits::matrix_size2(A);
-				const int nrhs = traits::matrix_size2(B);
-				const int maxmn = std::max(m, n);
-				const int minmn = std::min(m, n);
-
-				// sanity checks
-				assert(m >= 0 && n >= 0);
-				assert(nrhs >= 0);
-				assert(traits::leading_dimension(A) >= std::max(1, m));
-				assert(traits::leading_dimension(B) >= std::max(1, maxmn));
-				assert(traits::vector_size(work) >= 1);
-				assert(traits::vector_size(s) >= std::max(1, minmn));
-
-				int info;
-				const real_t rcond = -1;	// use machine precision
-				int rank;
-
-				// query for maximum size of subproblems
-				const int smlsiz = ilaenv(9, "GELSD", "");
-				const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
-
-				traits::detail::array<int> iwork(3*minmn*nlvl + 11*minmn);
-
-				detail::gelsd(traits::matrix_size1(A),
-					traits::matrix_size2(A),
-					traits::matrix_size2(B),
-					traits::matrix_storage(A),
-					traits::leading_dimension(A),
-					traits::matrix_storage(B),
-					traits::leading_dimension(B),
-					traits::vector_storage(s),
-					rcond,
-					&rank,
-					traits::vector_storage(work),
-					traits::vector_size(work),
-					traits::vector_storage(rwork),
-					traits::vector_storage(iwork),
-					&info);
-
-				return info;
-			}
-
-			template <int N>
-			struct Gelsd { };
-
-			// specialization for gelsd real flavors (sgelsd, dgelsd)
-			template <>
-			struct Gelsd<1>
-			{
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int nrhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, nrhs);	// maxmnr = maxmn > nrhs ? maxmn : nrhs
-
-					// query for maximum size of subproblems
-					const int smlsiz = ilaenv(9, "GELSD", "");
-					const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
-
-					const int lwork = 12*minmn + 2*minmn*smlsiz + 8*minmn*nlvl + 
-							     	  minmn*nrhs + (smlsiz+1)*(smlsiz+1);
-
-					traits::detail::array<val_t> work(lwork);
-
-					return gelsd(A, B, s, work);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-					typedef typename traits::type_traits<val_t>::real_type real_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int nrhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, nrhs);	// maxmnr = maxmn > nrhs ? maxmn : nrhs
-
-					val_t temp_work;
-					int temp_iwork;
-
-					const real_t rcond = -1;
-					int rank;
-					int info;
-
-					// query for optimal workspace size
-					detail::gelsd(traits::matrix_size1(A),
-								  traits::matrix_size2(A),
-								  traits::matrix_size2(B),
-								  traits::matrix_storage(A),
-								  traits::leading_dimension(A),
-								  traits::matrix_storage(B),
-								  traits::leading_dimension(B),
-								  traits::vector_storage(s),
-								  rcond,
-								  &rank,
-								  &temp_work,	//traits::vector_storage(work),
-								  -1,			//traits::vector_size(work),
-								  &temp_iwork,
-								  &info);
-
-					assert(info == 0);
-
-					const int lwork = traits::detail::to_int(temp_work);
-
-					traits::detail::array<val_t> work(lwork);
-
-					return gelsd(A, B, s, work);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS, typename Work>
-				int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace1<Work> workspace) const
-				{
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int nrhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, nrhs);	// maxmnr = maxmn > nrhs ? maxmn : nrhs
-
-					return gelsd(A, B, s, workspace.w_);
-				}
-			};
-
-			// specialization for gelsd (cgelsd, zgelsd)
-			template <>
-			struct Gelsd<2>
-			{
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-					typedef typename traits::type_traits<val_t>::real_type real_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int nrhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, nrhs);	// maxmnr = maxmn > nrhs ? maxmn : nrhs
-
-					// query for maximum size of subproblems
-					const int smlsiz = ilaenv(9, "GELSD", "");
-					const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
-
-					traits::detail::array<val_t> work(2*minmn + minmn*nrhs);
-
-					const int rwork_size = 10*minmn + 2*minmn*smlsiz + 8*minmn*nlvl + 
-										   3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1);
-
-					traits::detail::array<real_t> rwork(std::max(1, rwork_size));
-
-					return gelsd(A, B, s, work, rwork);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-					typedef typename traits::type_traits<val_t>::real_type real_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int nrhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, nrhs);	// maxmnr = maxmn > nrhs ? maxmn : nrhs
-
-					val_t temp_work;
-					real_t temp_rwork;
-					int temp_iwork;
-
-					const real_t rcond = -1;
-					int rank;
-					int info;
-
-					// query for optimal workspace size
-					detail::gelsd(traits::matrix_size1(A),
-								  traits::matrix_size2(A),
-								  traits::matrix_size2(B),
-								  traits::matrix_storage(A),
-								  traits::leading_dimension(A),
-								  traits::matrix_storage(B),
-								  traits::leading_dimension(B),
-								  traits::vector_storage(s),
-								  rcond,
-								  &rank,
-								  &temp_work,	//traits::vector_storage(work),
-								  -1,			//traits::vector_size(work),
-								  &temp_rwork,
-								  &temp_iwork,
-								  &info);
-
-					assert(info == 0);
-
-					const int lwork = traits::detail::to_int(temp_work);
-
-					traits::detail::array<val_t> work(lwork);
-
-					// query for maximum size of subproblems
-					const int smlsiz = ilaenv(9, "GELSD", "");
-					const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
-
-					const int rwork_size = 10*minmn + 2*minmn*smlsiz + 8*minmn*nlvl + 
-											3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1);
-
-					traits::detail::array<real_t> rwork(std::max(1, rwork_size));
-
-					return gelsd(A, B, s, work, rwork);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS, typename Work, typename RWork>
-				int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace2<Work, RWork> workspace) const
-				{
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int nrhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, nrhs);	// maxmnr = maxmn > nrhs ? maxmn : nrhs
-
-					return gelsd(A, B, s, workspace.w_, workspace.wr_);
-				}
-			};
-
-		} // detail
-
-		// gelsd
-		// Parameters:
-		//	A:			matrix of coefficients
-		//	B:			matrix of solutions (stored column-wise)
-		//	s:			vector to store singular values on output, length >= max(1, min(m,n))
-		//  workspace:	either optimal, minimal, or user supplied
-		//
-		template <typename MatrA, typename MatrB, typename VecS, typename Work>
-		int gelsd(MatrA& A, MatrB& B, VecS& s, Work workspace)
-		{
-			typedef typename MatrA::value_type val_t;
-
-			return detail::Gelsd<n_workspace_args<val_t>::value>() (A, B, s, workspace);
-		}
-
-		// gelsd, no singular values are returned
-		// Parameters:
-		//	A:			matrix of coefficients
-		//	B:			matrix of solutions (stored column-wise)
-		//	workspace:	either optimal, minimal, or user supplied
-		//
-		template <typename MatrA, typename MatrB, typename Work>
-		int gelsd(MatrA& A, MatrB& B, Work workspace)
-		{
-			typedef typename MatrA::value_type val_t;
-			typedef typename traits::type_traits<val_t>::real_type real_t;
-
-			const int m = traits::matrix_size1(A);
-			const int n = traits::matrix_size2(A);
+            inline void gelsd(const int m, const int n, const int nrhs,
+                              float *a, const int lda, float *b, const int ldb,
+                              float *s, const float rcond, int *rank, float *work,
+                              const int lwork, int *iwork, int *info)
+            {
+                LAPACK_SGELSD(&m, &n, &nrhs, a, &lda, b, &ldb, s,
+                              &rcond, rank, work, &lwork, iwork, info);
+            }
+
+            inline void gelsd(const int m, const int n, const int nrhs,
+                              double *a, const int lda, double *b, const int ldb,
+                              double *s, const double rcond, int *rank, double *work,
+                              const int lwork, int *iwork, int *info)
+            {
+                LAPACK_DGELSD(&m, &n, &nrhs, a, &lda, b, &ldb, s,
+                              &rcond, rank, work, &lwork, iwork, info);
+            }
+
+            inline void gelsd(const int m, const int n, const int nrhs,
+                              traits::complex_f *a, const int lda, traits::complex_f *b,
+                              const int ldb, float *s, const float rcond, int *rank,
+                              traits::complex_f *work, const int lwork, float *rwork,
+                              int *iwork, int *info)
+            {
+                LAPACK_CGELSD(&m, &n, &nrhs, traits::complex_ptr(a),
+                              &lda, traits::complex_ptr(b), &ldb, s,
+                              &rcond, rank, traits::complex_ptr(work),
+                              &lwork, rwork, iwork, info);
+            }
+
+            inline void gelsd(const int m, const int n, const int nrhs,
+                              traits::complex_d *a, const int lda, traits::complex_d *b,
+                              const int ldb, double *s, const double rcond, int *rank,
+                              traits::complex_d *work, const int lwork, double *rwork,
+                              int *iwork, int *info)
+            {
+                LAPACK_ZGELSD(&m, &n, &nrhs, traits::complex_ptr(a),
+                              &lda, traits::complex_ptr(b), &ldb, s,
+                              &rcond, rank, traits::complex_ptr(work),
+                              &lwork, rwork, iwork, info);
+            }
+
+            // gelsd for real type
+            template <typename MatrA, typename MatrB, typename VecS, typename Work>
+            int gelsd(MatrA& A, MatrB& B, VecS& s, Work& work)
+            {
+                typedef typename MatrA::value_type val_t;
+                typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                const int m = traits::matrix_size1(A);
+                const int n = traits::matrix_size2(A);
+                const int nrhs = traits::matrix_size2(B);
+                const int maxmn = std::max(m, n);
+                const int minmn = std::min(m, n);
+
+                // sanity checks
+                assert(m >= 0 && n >= 0);
+                assert(nrhs >= 0);
+                assert(traits::leading_dimension(A) >= std::max(1, m));
+                assert(traits::leading_dimension(B) >= std::max(1, maxmn));
+                assert(traits::vector_size(work) >= 1);
+                assert(traits::vector_size(s) >= std::max(1, minmn));
+
+                int info;
+                const real_t rcond = -1;    // use machine precision
+                int rank;
+
+                // query for maximum size of subproblems
+                const int smlsiz = ilaenv(9, "GELSD", "");
+                const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
+
+                traits::detail::array<int> iwork(3*minmn*nlvl + 11*minmn);
+
+                detail::gelsd(traits::matrix_size1(A),
+                              traits::matrix_size2(A),
+                              traits::matrix_size2(B),
+                              traits::matrix_storage(A),
+                              traits::leading_dimension(A),
+                              traits::matrix_storage(B),
+                              traits::leading_dimension(B),
+                              traits::vector_storage(s),
+                              rcond,
+                              &rank,
+                              traits::vector_storage(work),
+                              traits::vector_size(work),
+                              traits::vector_storage(iwork),
+                              &info);
+
+                return info;
+            }
+
+            // gelsd for complex type
+            template <typename MatrA, typename MatrB, typename VecS,
+                        typename Work, typename RWork>
+            int gelsd(MatrA& A, MatrB& B, VecS& s, Work& work, RWork& rwork)
+            {
+                typedef typename MatrA::value_type val_t;
+                typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                const int m = traits::matrix_size1(A);
+                const int n = traits::matrix_size2(A);
+                const int nrhs = traits::matrix_size2(B);
+                const int maxmn = std::max(m, n);
+                const int minmn = std::min(m, n);
+
+                // sanity checks
+                assert(m >= 0 && n >= 0);
+                assert(nrhs >= 0);
+                assert(traits::leading_dimension(A) >= std::max(1, m));
+                assert(traits::leading_dimension(B) >= std::max(1, maxmn));
+                assert(traits::vector_size(work) >= 1);
+                assert(traits::vector_size(s) >= std::max(1, minmn));
+
+                int info;
+                const real_t rcond = -1;    // use machine precision
+                int rank;
+
+                // query for maximum size of subproblems
+                const int smlsiz = ilaenv(9, "GELSD", "");
+                const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
+
+                traits::detail::array<int> iwork(3*minmn*nlvl + 11*minmn);
+
+                detail::gelsd(traits::matrix_size1(A),
+                    traits::matrix_size2(A),
+                    traits::matrix_size2(B),
+                    traits::matrix_storage(A),
+                    traits::leading_dimension(A),
+                    traits::matrix_storage(B),
+                    traits::leading_dimension(B),
+                    traits::vector_storage(s),
+                    rcond,
+                    &rank,
+                    traits::vector_storage(work),
+                    traits::vector_size(work),
+                    traits::vector_storage(rwork),
+                    traits::vector_storage(iwork),
+                    &info);
+
+                return info;
+            }
+
+            template <int N>
+            struct Gelsd { };
+
+            // specialization for gelsd real flavors (sgelsd, dgelsd)
+            template <>
+            struct Gelsd<1>
+            {
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int nrhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, nrhs);   // maxmnr = maxmn > nrhs ? maxmn : nrhs
+
+                    // query for maximum size of subproblems
+                    const int smlsiz = ilaenv(9, "GELSD", "");
+                    const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
+
+                    const int lwork = 12*minmn + 2*minmn*smlsiz + 8*minmn*nlvl +
+                                      minmn*nrhs + (smlsiz+1)*(smlsiz+1);
+
+                    traits::detail::array<val_t> work(lwork);
+
+                    return gelsd(A, B, s, work);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+                    typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int nrhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, nrhs);   // maxmnr = maxmn > nrhs ? maxmn : nrhs
+
+                    val_t temp_work;
+                    int temp_iwork;
+
+                    const real_t rcond = -1;
+                    int rank;
+                    int info;
+
+                    // query for optimal workspace size
+                    detail::gelsd(traits::matrix_size1(A),
+                                  traits::matrix_size2(A),
+                                  traits::matrix_size2(B),
+                                  traits::matrix_storage(A),
+                                  traits::leading_dimension(A),
+                                  traits::matrix_storage(B),
+                                  traits::leading_dimension(B),
+                                  traits::vector_storage(s),
+                                  rcond,
+                                  &rank,
+                                  &temp_work,   //traits::vector_storage(work),
+                                  -1,           //traits::vector_size(work),
+                                  &temp_iwork,
+                                  &info);
+
+                    assert(info == 0);
+
+                    const int lwork = traits::detail::to_int(temp_work);
+
+                    traits::detail::array<val_t> work(lwork);
+
+                    return gelsd(A, B, s, work);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS, typename Work>
+                int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace1<Work> workspace) const
+                {
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int nrhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, nrhs);   // maxmnr = maxmn > nrhs ? maxmn : nrhs
+
+                    return gelsd(A, B, s, workspace.w_);
+                }
+            };
+
+            // specialization for gelsd (cgelsd, zgelsd)
+            template <>
+            struct Gelsd<2>
+            {
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+                    typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int nrhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, nrhs);   // maxmnr = maxmn > nrhs ? maxmn : nrhs
+
+                    // query for maximum size of subproblems
+                    const int smlsiz = ilaenv(9, "GELSD", "");
+                    const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
+
+                    traits::detail::array<val_t> work(2*minmn + minmn*nrhs);
+
+                    const int rwork_size = 10*minmn + 2*minmn*smlsiz + 8*minmn*nlvl +
+                                           3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1);
+
+                    traits::detail::array<real_t> rwork(std::max(1, rwork_size));
+
+                    return gelsd(A, B, s, work, rwork);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+                    typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int nrhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, nrhs);   // maxmnr = maxmn > nrhs ? maxmn : nrhs
+
+                    val_t temp_work;
+                    real_t temp_rwork;
+                    int temp_iwork;
+
+                    const real_t rcond = -1;
+                    int rank;
+                    int info;
+
+                    // query for optimal workspace size
+                    detail::gelsd(traits::matrix_size1(A),
+                                  traits::matrix_size2(A),
+                                  traits::matrix_size2(B),
+                                  traits::matrix_storage(A),
+                                  traits::leading_dimension(A),
+                                  traits::matrix_storage(B),
+                                  traits::leading_dimension(B),
+                                  traits::vector_storage(s),
+                                  rcond,
+                                  &rank,
+                                  &temp_work,   //traits::vector_storage(work),
+                                  -1,           //traits::vector_size(work),
+                                  &temp_rwork,
+                                  &temp_iwork,
+                                  &info);
+
+                    assert(info == 0);
+
+                    const int lwork = traits::detail::to_int(temp_work);
+
+                    traits::detail::array<val_t> work(lwork);
+
+                    // query for maximum size of subproblems
+                    const int smlsiz = ilaenv(9, "GELSD", "");
+                    const int nlvl = static_cast<int>(((std::log(static_cast<float>(minmn))/std::log(2.f))/ (smlsiz+1)) + 1);
+
+                    const int rwork_size = 10*minmn + 2*minmn*smlsiz + 8*minmn*nlvl +
+                                            3*smlsiz*nrhs + (smlsiz+1)*(smlsiz+1);
+
+                    traits::detail::array<real_t> rwork(std::max(1, rwork_size));
+
+                    return gelsd(A, B, s, work, rwork);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS, typename Work, typename RWork>
+                int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace2<Work, RWork> workspace) const
+                {
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int nrhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, nrhs);   // maxmnr = maxmn > nrhs ? maxmn : nrhs
+
+                    return gelsd(A, B, s, workspace.w_, workspace.wr_);
+                }
+            };
+
+        } // detail
+
+        // gelsd
+        // Parameters:
+        //  A:          matrix of coefficients
+        //  B:          matrix of solutions (stored column-wise)
+        //  s:          vector to store singular values on output, length >= max(1, min(m,n))
+        //  workspace:  either optimal, minimal, or user supplied
+        //
+        template <typename MatrA, typename MatrB, typename VecS, typename Work>
+        int gelsd(MatrA& A, MatrB& B, VecS& s, Work workspace)
+        {
+            typedef typename MatrA::value_type val_t;
+
+            return detail::Gelsd<n_workspace_args<val_t>::value>() (A, B, s, workspace);
+        }
+
+        // gelsd, no singular values are returned
+        // Parameters:
+        //  A:          matrix of coefficients
+        //  B:          matrix of solutions (stored column-wise)
+        //  workspace:  either optimal, minimal, or user supplied
+        //
+        template <typename MatrA, typename MatrB, typename Work>
+        int gelsd(MatrA& A, MatrB& B, Work workspace)
+        {
+            typedef typename MatrA::value_type val_t;
+            typedef typename traits::type_traits<val_t>::real_type real_t;
+
+            const int m = traits::matrix_size1(A);
+            const int n = traits::matrix_size2(A);
 
-			const int s_size = std::max(1, std::min(m,n));
-			traits::detail::array<real_t> s(s_size);
+            const int s_size = std::max(1, std::min(m,n));
+            traits::detail::array<real_t> s(s_size);
 
-			return detail::Gelsd<n_workspace_args<val_t>::value>() (A, B, s, workspace);
-		}
+            return detail::Gelsd<n_workspace_args<val_t>::value>() (A, B, s, workspace);
+        }
 
-	} // lapack
+    } // lapack
 
 }}}
 
Modified: sandbox/boost/numeric/bindings/lapack/gelss.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gelss.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gelss.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -27,327 +27,327 @@
 
 namespace boost { namespace numeric { namespace bindings {
 
-	namespace lapack {
-		
-		namespace detail {
-
-			inline void gelss(const int m, const int n, const int nrhs, 
-							  float *a, const int lda, float *b, const int ldb, 
-							  float *s, const float rcond, int *rank, float *work,
+    namespace lapack {
+
+        namespace detail {
+
+            inline void gelss(const int m, const int n, const int nrhs,
+                              float *a, const int lda, float *b, const int ldb,
+                              float *s, const float rcond, int *rank, float *work,
+                              const int lwork, int *info)
+            {
+                LAPACK_SGELSS(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, rank, work, &lwork, info);
+            }
+
+            inline void gelss(const int m, const int n, const int nrhs,
+                              double *a, const int lda, double *b, const int ldb,
+                              double *s, const double rcond, int *rank, double *work,
                               const int lwork, int *info)
-			{
-				LAPACK_SGELSS(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, rank, work, &lwork, info);
-			}
-
-			inline void gelss(const int m, const int n, const int nrhs, 
-							  double *a, const int lda, double *b, const int ldb, 
-							  double *s, const double rcond, int *rank, double *work,
-							  const int lwork, int *info)
-			{
-				LAPACK_DGELSS(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, rank, work, &lwork, info);
-			}
-
-			inline void gelss(const int m, const int n, const int nrhs, 
-							  traits::complex_f *a, const int lda, traits::complex_f *b, 
-							  const int ldb, float *s, const float rcond, int *rank, 
-							  traits::complex_f *work, const int lwork, float *rwork, int *info)
-			{
-				LAPACK_CGELSS(&m, &n, &nrhs, traits::complex_ptr(a), 
-							  &lda, traits::complex_ptr(b), &ldb, s, 
-							  &rcond, rank, traits::complex_ptr(work), 
-							  &lwork, rwork, info);
-			}
-
-			inline void gelss(const int m, const int n, const int nrhs, 
-							  traits::complex_d *a, const int lda, traits::complex_d *b, 
-							  const int ldb, double *s, const double rcond, int *rank, 
-							  traits::complex_d *work, const int lwork, double *rwork, int *info)
-			{
-				LAPACK_ZGELSS(&m, &n, &nrhs, traits::complex_ptr(a), 
-							  &lda, traits::complex_ptr(b), &ldb, s, 
-							  &rcond, rank, traits::complex_ptr(work), 
-							  &lwork, rwork, info);
-			}
-			
-			// gelss for real type
-			template <typename MatrA, typename MatrB, typename VecS, typename Work>
-			int gelss(MatrA& A, MatrB& B, VecS& s, Work& work)
-			{
-				typedef typename MatrA::value_type val_t;
-				typedef typename traits::type_traits<val_t>::real_type real_t;
-
-				const int m = traits::matrix_size1(A);
-				const int n = traits::matrix_size2(A);
-				const int nrhs = traits::matrix_size2(B);
-				const int maxmn = std::max(m, n);
-				const int minmn = std::min(m, n);
-
-				// sanity checks
-				assert(m >= 0 && n >= 0);
-				assert(nrhs >= 0);
-				assert(traits::leading_dimension(A) >= std::max(1, m));
-				assert(traits::leading_dimension(B) >= std::max(1, maxmn));
-				assert(traits::vector_size(work) >= 1);
-				assert(traits::vector_size(s) >= std::max(1, minmn));
-
-				int info;
-				const real_t rcond = -1;	// use machine precision
-				int rank;
-
-				detail::gelss(traits::matrix_size1(A),
-							  traits::matrix_size2(A),
-							  traits::matrix_size2(B),
-							  traits::matrix_storage(A),
-							  traits::leading_dimension(A),
-							  traits::matrix_storage(B),
-							  traits::leading_dimension(B),
-							  traits::vector_storage(s),
-							  rcond,
-							  &rank,
-							  traits::vector_storage(work),
-							  traits::vector_size(work),
-							  &info);
-
-				return info;
-			}
-
-			// gelss for complex type
-			template <typename MatrA, typename MatrB, typename VecS, typename Work, typename RWork>
-			int gelss(MatrA& A, MatrB& B, VecS& s, Work& work, RWork& rwork)
-			{
-				typedef typename MatrA::value_type val_t;
-				typedef typename traits::type_traits<val_t>::real_type real_t;
-
-				const int m = traits::matrix_size1(A);
-				const int n = traits::matrix_size2(A);
-				const int nrhs = traits::matrix_size2(B);
-				const int maxmn = std::max(m, n);
-				const int minmn = std::min(m, n);
-
-				// sanity checks
-				assert(m >= 0 && n >= 0);
-				assert(nrhs >= 0);
-				assert(traits::leading_dimension(A) >= std::max(1, m));
-				assert(traits::leading_dimension(B) >= std::max(1, maxmn));
-				assert(traits::vector_size(work) >= 1);
-				assert(traits::vector_size(s) >= std::max(1, minmn));
-
-				int info;
-				const real_t rcond = -1;	// use machine precision
-				int rank;
-
-				detail::gelss(traits::matrix_size1(A),
-							  traits::matrix_size2(A),
-							  traits::matrix_size2(B),
-							  traits::matrix_storage(A),
-							  traits::leading_dimension(A),
-							  traits::matrix_storage(B),
-							  traits::leading_dimension(B),
-							  traits::vector_storage(s),
-							  rcond,
-							  &rank,
-							  traits::vector_storage(work),
-							  traits::vector_size(work),
-							  traits::vector_storage(rwork),
-							  &info);
-
-				return info;
-			}
-
-			// default minimal workspace functor
-			template <int N>
-			struct Gelss { };
-
-			// specialization for gelss (sgelss, dgelss)
-			template <>
-			struct Gelss<1>
-			{
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int rhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, rhs);	// maxmnr = maxmn > rhs ? maxmn : rhs
-					
-					traits::detail::array<val_t> work(3*minmn + std::max(2*minmn, maxmnr));
-
-					return gelss(A, B, s, work);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-					typedef typename traits::type_traits<val_t>::real_type real_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int rhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);			// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);			// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, rhs);	// maxmnr = maxmn > rhs ? maxmn : rhs
-
-					val_t temp_work;
-
-					const real_t rcond = -1;
-					int rank;
-					int info;
-
-					// query for optimal workspace size
-					detail::gelss(traits::matrix_size1(A),
-						traits::matrix_size2(A),
-						traits::matrix_size2(B),
-						traits::matrix_storage(A),
-						traits::leading_dimension(A),
-						traits::matrix_storage(B),
-						traits::leading_dimension(B),
-						traits::vector_storage(s),
-						rcond,
-						&rank,
-						&temp_work,	//traits::vector_storage(work),
-						-1,			//traits::vector_size(work),
-						&info);
-
-					assert(info == 0);
-
-					const int lwork = traits::detail::to_int(temp_work);
-
-					traits::detail::array<val_t> work(lwork);
-
-					return gelss(A, B, s, work);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS, typename Work>
-				int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace1<Work> workspace) const
-				{
-					return gelss(A, B, s, workspace.w_);
-				}
-			};
-
-			// specialization for gelss (cgelss, zgelss)
-			template <>
-			struct Gelss<2>
-			{
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-					typedef typename traits::type_traits<val_t>::real_type real_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int rhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);		// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);		// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, rhs);	// maxmnr = maxmn > rhs ? maxmn : rhs
-
-					traits::detail::array<val_t> work(2*minmn + maxmnr);
-					traits::detail::array<real_t> rwork(std::max(1, (5*minmn)));
-					
-					return gelss(A, B, s, work, rwork);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS>
-				int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
-				{
-					typedef typename MatrA::value_type val_t;
-					typedef typename traits::type_traits<val_t>::real_type real_t;
-
-					const int m = traits::matrix_size1(A);
-					const int n = traits::matrix_size2(A);
-					const int rhs = traits::matrix_size2(B);
-
-					const int minmn = std::min(m, n);		// minmn = m < n ? m : n
-					const int maxmn = std::max(m, n);		// maxmn = m > n ? m : n
-					const int maxmnr = std::max(maxmn, rhs);	// maxmnr = maxmn > rhs ? maxmn : rhs
-
-					val_t temp_work;
-					real_t temp_rwork;
-
-					const real_t rcond = -1;
-					int rank;
-					int info;
-
-					// query for optimal workspace size
-					detail::gelss(traits::matrix_size1(A),
-								  traits::matrix_size2(A),
-								  traits::matrix_size2(B),
-								  traits::matrix_storage(A),
-								  traits::leading_dimension(A),
-								  traits::matrix_storage(B),
-								  traits::leading_dimension(B),
-								  traits::vector_storage(s),
-								  rcond,
-								  &rank,
-		  						  &temp_work,	//traits::vector_storage(work),
-								  -1,			//traits::vector_size(work),
-								  &temp_rwork,
-								  &info);
-
-					assert(info == 0);
-
-					const int lwork = traits::detail::to_int(temp_work);
-
-					traits::detail::array<val_t> work(lwork);
-					traits::detail::array<real_t> rwork(std::max(1, (5*minmn)));
-
-					return gelss(A, B, s, work, rwork);
-				}
-
-				template <typename MatrA, typename MatrB, typename VecS, typename Work, typename RWork>
-				int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace2<Work, RWork> workspace) const
-				{
-					return gelss(A, B, s, workspace.w_, workspace.wr);
-				}
-			};
-
-		} // detail
-
-		// gelss
-		// Parameters:
-		//	A:			matrix of coefficients
-		//	B:			matrix of solutions (stored column-wise)
-		//	s:			vector to store singular values on output, length >= max(1, min(m,n))
-		//  workspace:	either optimal, minimal, or user supplied
-		//
-		template <typename MatrA, typename MatrB, typename VecS, typename Work>
-		int gelss(MatrA& A, MatrB& B, VecS& s, Work workspace)
-		{
-			typedef typename MatrA::value_type val_t;
-
-			return detail::Gelss<n_workspace_args<val_t>::value>() (A, B, s, workspace);
-		}
-
-		// gelss, no singular values are returned
-		// Parameters:
-		//	A:			matrix of coefficients
-		//	B:			matrix of solutions (stored column-wise)
-		//	workspace:	either optimal, minimal, or user supplied
-		//
-		template <typename MatrA, typename MatrB, typename Work>
-		int gelss(MatrA& A, MatrB& B, Work workspace)
-		{
-			typedef typename MatrA::value_type val_t;
-			typedef typename traits::type_traits<val_t>::real_type real_t;
-
-			const int m = traits::matrix_size1(A);
-			const int n = traits::matrix_size2(A);
+            {
+                LAPACK_DGELSS(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, rank, work, &lwork, info);
+            }
+
+            inline void gelss(const int m, const int n, const int nrhs,
+                              traits::complex_f *a, const int lda, traits::complex_f *b,
+                              const int ldb, float *s, const float rcond, int *rank,
+                              traits::complex_f *work, const int lwork, float *rwork, int *info)
+            {
+                LAPACK_CGELSS(&m, &n, &nrhs, traits::complex_ptr(a),
+                              &lda, traits::complex_ptr(b), &ldb, s,
+                              &rcond, rank, traits::complex_ptr(work),
+                              &lwork, rwork, info);
+            }
+
+            inline void gelss(const int m, const int n, const int nrhs,
+                              traits::complex_d *a, const int lda, traits::complex_d *b,
+                              const int ldb, double *s, const double rcond, int *rank,
+                              traits::complex_d *work, const int lwork, double *rwork, int *info)
+            {
+                LAPACK_ZGELSS(&m, &n, &nrhs, traits::complex_ptr(a),
+                              &lda, traits::complex_ptr(b), &ldb, s,
+                              &rcond, rank, traits::complex_ptr(work),
+                              &lwork, rwork, info);
+            }
+
+            // gelss for real type
+            template <typename MatrA, typename MatrB, typename VecS, typename Work>
+            int gelss(MatrA& A, MatrB& B, VecS& s, Work& work)
+            {
+                typedef typename MatrA::value_type val_t;
+                typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                const int m = traits::matrix_size1(A);
+                const int n = traits::matrix_size2(A);
+                const int nrhs = traits::matrix_size2(B);
+                const int maxmn = std::max(m, n);
+                const int minmn = std::min(m, n);
+
+                // sanity checks
+                assert(m >= 0 && n >= 0);
+                assert(nrhs >= 0);
+                assert(traits::leading_dimension(A) >= std::max(1, m));
+                assert(traits::leading_dimension(B) >= std::max(1, maxmn));
+                assert(traits::vector_size(work) >= 1);
+                assert(traits::vector_size(s) >= std::max(1, minmn));
+
+                int info;
+                const real_t rcond = -1;    // use machine precision
+                int rank;
+
+                detail::gelss(traits::matrix_size1(A),
+                              traits::matrix_size2(A),
+                              traits::matrix_size2(B),
+                              traits::matrix_storage(A),
+                              traits::leading_dimension(A),
+                              traits::matrix_storage(B),
+                              traits::leading_dimension(B),
+                              traits::vector_storage(s),
+                              rcond,
+                              &rank,
+                              traits::vector_storage(work),
+                              traits::vector_size(work),
+                              &info);
+
+                return info;
+            }
+
+            // gelss for complex type
+            template <typename MatrA, typename MatrB, typename VecS, typename Work, typename RWork>
+            int gelss(MatrA& A, MatrB& B, VecS& s, Work& work, RWork& rwork)
+            {
+                typedef typename MatrA::value_type val_t;
+                typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                const int m = traits::matrix_size1(A);
+                const int n = traits::matrix_size2(A);
+                const int nrhs = traits::matrix_size2(B);
+                const int maxmn = std::max(m, n);
+                const int minmn = std::min(m, n);
+
+                // sanity checks
+                assert(m >= 0 && n >= 0);
+                assert(nrhs >= 0);
+                assert(traits::leading_dimension(A) >= std::max(1, m));
+                assert(traits::leading_dimension(B) >= std::max(1, maxmn));
+                assert(traits::vector_size(work) >= 1);
+                assert(traits::vector_size(s) >= std::max(1, minmn));
+
+                int info;
+                const real_t rcond = -1;    // use machine precision
+                int rank;
+
+                detail::gelss(traits::matrix_size1(A),
+                              traits::matrix_size2(A),
+                              traits::matrix_size2(B),
+                              traits::matrix_storage(A),
+                              traits::leading_dimension(A),
+                              traits::matrix_storage(B),
+                              traits::leading_dimension(B),
+                              traits::vector_storage(s),
+                              rcond,
+                              &rank,
+                              traits::vector_storage(work),
+                              traits::vector_size(work),
+                              traits::vector_storage(rwork),
+                              &info);
+
+                return info;
+            }
+
+            // default minimal workspace functor
+            template <int N>
+            struct Gelss { };
+
+            // specialization for gelss (sgelss, dgelss)
+            template <>
+            struct Gelss<1>
+            {
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int rhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, rhs);    // maxmnr = maxmn > rhs ? maxmn : rhs
+
+                    traits::detail::array<val_t> work(3*minmn + std::max(2*minmn, maxmnr));
+
+                    return gelss(A, B, s, work);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+                    typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int rhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, rhs);    // maxmnr = maxmn > rhs ? maxmn : rhs
+
+                    val_t temp_work;
+
+                    const real_t rcond = -1;
+                    int rank;
+                    int info;
+
+                    // query for optimal workspace size
+                    detail::gelss(traits::matrix_size1(A),
+                        traits::matrix_size2(A),
+                        traits::matrix_size2(B),
+                        traits::matrix_storage(A),
+                        traits::leading_dimension(A),
+                        traits::matrix_storage(B),
+                        traits::leading_dimension(B),
+                        traits::vector_storage(s),
+                        rcond,
+                        &rank,
+                        &temp_work, //traits::vector_storage(work),
+                        -1,         //traits::vector_size(work),
+                        &info);
+
+                    assert(info == 0);
+
+                    const int lwork = traits::detail::to_int(temp_work);
+
+                    traits::detail::array<val_t> work(lwork);
+
+                    return gelss(A, B, s, work);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS, typename Work>
+                int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace1<Work> workspace) const
+                {
+                    return gelss(A, B, s, workspace.w_);
+                }
+            };
+
+            // specialization for gelss (cgelss, zgelss)
+            template <>
+            struct Gelss<2>
+            {
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, minimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+                    typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int rhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, rhs);    // maxmnr = maxmn > rhs ? maxmn : rhs
+
+                    traits::detail::array<val_t> work(2*minmn + maxmnr);
+                    traits::detail::array<real_t> rwork(std::max(1, (5*minmn)));
+
+                    return gelss(A, B, s, work, rwork);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS>
+                int operator() (MatrA& A, MatrB& B, VecS& s, optimal_workspace) const
+                {
+                    typedef typename MatrA::value_type val_t;
+                    typedef typename traits::type_traits<val_t>::real_type real_t;
+
+                    const int m = traits::matrix_size1(A);
+                    const int n = traits::matrix_size2(A);
+                    const int rhs = traits::matrix_size2(B);
+
+                    const int minmn = std::min(m, n);           // minmn = m < n ? m : n
+                    const int maxmn = std::max(m, n);           // maxmn = m > n ? m : n
+                    const int maxmnr = std::max(maxmn, rhs);    // maxmnr = maxmn > rhs ? maxmn : rhs
+
+                    val_t temp_work;
+                    real_t temp_rwork;
+
+                    const real_t rcond = -1;
+                    int rank;
+                    int info;
+
+                    // query for optimal workspace size
+                    detail::gelss(traits::matrix_size1(A),
+                                  traits::matrix_size2(A),
+                                  traits::matrix_size2(B),
+                                  traits::matrix_storage(A),
+                                  traits::leading_dimension(A),
+                                  traits::matrix_storage(B),
+                                  traits::leading_dimension(B),
+                                  traits::vector_storage(s),
+                                  rcond,
+                                  &rank,
+                                  &temp_work,   //traits::vector_storage(work),
+                                  -1,           //traits::vector_size(work),
+                                  &temp_rwork,
+                                  &info);
+
+                    assert(info == 0);
+
+                    const int lwork = traits::detail::to_int(temp_work);
+
+                    traits::detail::array<val_t> work(lwork);
+                    traits::detail::array<real_t> rwork(std::max(1, (5*minmn)));
+
+                    return gelss(A, B, s, work, rwork);
+                }
+
+                template <typename MatrA, typename MatrB, typename VecS, typename Work, typename RWork>
+                int operator() (MatrA& A, MatrB& B, VecS& s, detail::workspace2<Work, RWork> workspace) const
+                {
+                    return gelss(A, B, s, workspace.w_, workspace.wr);
+                }
+            };
+
+        } // detail
+
+        // gelss
+        // Parameters:
+        //  A:          matrix of coefficients
+        //  B:          matrix of solutions (stored column-wise)
+        //  s:          vector to store singular values on output, length >= max(1, min(m,n))
+        //  workspace:  either optimal, minimal, or user supplied
+        //
+        template <typename MatrA, typename MatrB, typename VecS, typename Work>
+        int gelss(MatrA& A, MatrB& B, VecS& s, Work workspace)
+        {
+            typedef typename MatrA::value_type val_t;
+
+            return detail::Gelss<n_workspace_args<val_t>::value>() (A, B, s, workspace);
+        }
+
+        // gelss, no singular values are returned
+        // Parameters:
+        //  A:          matrix of coefficients
+        //  B:          matrix of solutions (stored column-wise)
+        //  workspace:  either optimal, minimal, or user supplied
+        //
+        template <typename MatrA, typename MatrB, typename Work>
+        int gelss(MatrA& A, MatrB& B, Work workspace)
+        {
+            typedef typename MatrA::value_type val_t;
+            typedef typename traits::type_traits<val_t>::real_type real_t;
+
+            const int m = traits::matrix_size1(A);
+            const int n = traits::matrix_size2(A);
 
-			const int s_size = std::max(1, std::min(m,n));
-			traits::detail::array<real_t> s(s_size);
+            const int s_size = std::max(1, std::min(m,n));
+            traits::detail::array<real_t> s(s_size);
 
-			return detail::Gelss<n_workspace_args<val_t>::value>() (A, B, s, workspace);
-		}
+            return detail::Gelss<n_workspace_args<val_t>::value>() (A, B, s, workspace);
+        }
 
-	} // namespace lapack
+    } // namespace lapack
 
 }}}
 
Modified: sandbox/boost/numeric/bindings/lapack/geqrf.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/geqrf.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/geqrf.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -21,24 +21,24 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 #include <cassert>
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // QR factorization of a general m x n matrix  A = Q * R
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * geqrf() computes the QR factorization of a rectangular matrix
      * A = Q *  R,  where Q is a M x min(M,N) matrix with orthogonal
      * and normalized column (i.e. herm(Q) $ Q = I) and R is a
@@ -49,77 +49,77 @@
      * upper triangular if  m  >=  n);  the elements below the diagonal,
      * with the array TAU, represent the orthogonal matrix Q as a product
      * of min(M,N) elementary reflectors.
-     */ 
+     */
 
     namespace detail {
 
-      inline 
+      inline
       void geqrf (int const m, int const n,
                  float* a, int const lda,
-                 float* tau, float* work, int const lwork, int& info) 
+                 float* tau, float* work, int const lwork, int& info)
       {
         LAPACK_SGEQRF (&m, &n, a, &lda, tau, work, &lwork, &info);
       }
 
-      inline 
+      inline
       void geqrf (int const m, int const n,
                  double* a, int const lda,
-                 double* tau, double* work, int const lwork, int& info) 
+                 double* tau, double* work, int const lwork, int& info)
       {
         LAPACK_DGEQRF (&m, &n, a, &lda, tau, work, &lwork, &info);
       }
 
-      inline 
+      inline
       void geqrf (int const m, int const n,
                   traits::complex_f* a, int const lda,
                   traits::complex_f* tau, traits::complex_f* work,
-		  int const lwork, int& info) 
+                  int const lwork, int& info)
       {
         LAPACK_CGEQRF (&m, &n,
                       traits::complex_ptr (a), &lda,
                       traits::complex_ptr (tau),
                       traits::complex_ptr (work), &lwork, &info );
       }
-      
 
-      inline 
+
+      inline
       void geqrf (int const m, int const n,
                   traits::complex_d* a, int const lda,
                   traits::complex_d* tau, traits::complex_d* work,
-		  int const lwork, int& info) 
+                  int const lwork, int& info)
       {
         LAPACK_ZGEQRF (&m, &n,
                       traits::complex_ptr (a), &lda,
                       traits::complex_ptr (tau),
                       traits::complex_ptr (work), &lwork, &info );
       }
-      
-    } 
+
+    }
 
     template <typename A, typename Tau, typename Work>
     int geqrf (A& a, Tau& tau, Work& work) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<A>::matrix_structure, 
+        typename traits::matrix_traits<A>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
-      assert (std::min<int>(m,n) <= traits::vector_size (tau)); 
-      assert (n <= traits::vector_size (work)); 
+      assert (std::min<int>(m,n) <= traits::vector_size (tau));
+      assert (n <= traits::vector_size (work));
 
-      int info; 
+      int info;
       detail::geqrf (m, n,
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (tau),  
+                     traits::vector_storage (tau),
                      traits::vector_storage (work),
                      traits::vector_size (work),
                      info);
-      return info; 
+      return info;
     }
 
     // Computation of the QR factorization.
@@ -168,4 +168,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/gesdd.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gesdd.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gesdd.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -20,368 +20,368 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // singular value decomposition 
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
-     * (divide and conquer driver) 
-     * gesdd() computes the singular value decomposition (SVD) of 
-     * M-by-N matrix A, optionally computing the left and/or right 
-     * singular vectors, by using divide-and-conquer method. 
+    /*
+     * (divide and conquer driver)
+     * gesdd() computes the singular value decomposition (SVD) of
+     * M-by-N matrix A, optionally computing the left and/or right
+     * singular vectors, by using divide-and-conquer method.
      * The SVD is written
      *
      *     A = U * S * V^T    or    A = U * S * V^H
      *
      * where S is an M-by-N matrix which is zero except for its min(m,n)
-     * diagonal elements, U is an M-by-M orthogonal/unitary matrix, and V 
+     * diagonal elements, U is an M-by-M orthogonal/unitary matrix, and V
      * is an N-by-N orthogonal/unitary matrix. The diagonal elements of S
-     * are the singular values of A; they are real and non-negative, and 
-     * are returnede in descending  order. The first min(m,n) columns of 
-     * U and V are the left and right singular vectors of A. (Note that 
+     * are the singular values of A; they are real and non-negative, and
+     * are returnede in descending  order. The first min(m,n) columns of
+     * U and V are the left and right singular vectors of A. (Note that
      * the routine returns V^T or V^H, not V.
-     */ 
+     */
 
     namespace detail {
 
-      inline 
-      void gesdd (char const jobz, int const m, int const n, 
-                  float* a, int const lda, 
-                  float* s, float* u, int const ldu, 
+      inline
+      void gesdd (char const jobz, int const m, int const n,
+                  float* a, int const lda,
+                  float* s, float* u, int const ldu,
                   float* vt, int const ldvt,
-                  float* work, int const lwork, float* /* dummy */, 
+                  float* work, int const lwork, float* /* dummy */,
                   int* iwork, int* info)
       {
-        LAPACK_SGESDD (&jobz, &m, &n, a, &lda, s, 
-                       u, &ldu, vt, &ldvt, work, &lwork, iwork, info); 
+        LAPACK_SGESDD (&jobz, &m, &n, a, &lda, s,
+                       u, &ldu, vt, &ldvt, work, &lwork, iwork, info);
       }
 
-      inline 
-      void gesdd (char const jobz, int const m, int const n, 
-                  double* a, int const lda, 
-                  double* s, double* u, int const ldu, 
+      inline
+      void gesdd (char const jobz, int const m, int const n,
+                  double* a, int const lda,
+                  double* s, double* u, int const ldu,
                   double* vt, int const ldvt,
-                  double* work, int const lwork, double* /* dummy */, 
+                  double* work, int const lwork, double* /* dummy */,
                   int* iwork, int* info)
       {
-        LAPACK_DGESDD (&jobz, &m, &n, a, &lda, s, 
-                       u, &ldu, vt, &ldvt, work, &lwork, iwork, info); 
+        LAPACK_DGESDD (&jobz, &m, &n, a, &lda, s,
+                       u, &ldu, vt, &ldvt, work, &lwork, iwork, info);
       }
 
-      inline 
-      void gesdd (char const jobz, int const m, int const n, 
-                  traits::complex_f* a, int const lda, 
-                  float* s, traits::complex_f* u, int const ldu, 
+      inline
+      void gesdd (char const jobz, int const m, int const n,
+                  traits::complex_f* a, int const lda,
+                  float* s, traits::complex_f* u, int const ldu,
                   traits::complex_f* vt, int const ldvt,
-                  traits::complex_f* work, int const lwork, 
+                  traits::complex_f* work, int const lwork,
                   float* rwork, int* iwork, int* info)
       {
-        LAPACK_CGESDD (&jobz, &m, &n, 
-                       traits::complex_ptr (a), &lda, s, 
-                       traits::complex_ptr (u), &ldu, 
-                       traits::complex_ptr (vt), &ldvt, 
-                       traits::complex_ptr (work), &lwork, 
-                       rwork, iwork, info); 
+        LAPACK_CGESDD (&jobz, &m, &n,
+                       traits::complex_ptr (a), &lda, s,
+                       traits::complex_ptr (u), &ldu,
+                       traits::complex_ptr (vt), &ldvt,
+                       traits::complex_ptr (work), &lwork,
+                       rwork, iwork, info);
       }
 
-      inline 
-      void gesdd (char const jobz, int const m, int const n, 
-                  traits::complex_d* a, int const lda, 
-                  double* s, traits::complex_d* u, int const ldu, 
+      inline
+      void gesdd (char const jobz, int const m, int const n,
+                  traits::complex_d* a, int const lda,
+                  double* s, traits::complex_d* u, int const ldu,
                   traits::complex_d* vt, int const ldvt,
-                  traits::complex_d* work, int const lwork, 
+                  traits::complex_d* work, int const lwork,
                   double* rwork, int* iwork, int* info)
       {
-        LAPACK_ZGESDD (&jobz, &m, &n, 
-                       traits::complex_ptr (a), &lda, s, 
-                       traits::complex_ptr (u), &ldu, 
-                       traits::complex_ptr (vt), &ldvt, 
-                       traits::complex_ptr (work), &lwork, 
-                       rwork, iwork, info); 
+        LAPACK_ZGESDD (&jobz, &m, &n,
+                       traits::complex_ptr (a), &lda, s,
+                       traits::complex_ptr (u), &ldu,
+                       traits::complex_ptr (vt), &ldvt,
+                       traits::complex_ptr (work), &lwork,
+                       rwork, iwork, info);
       }
 
 
-      inline 
+      inline
       int gesdd_min_work (float, char jobz, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
-        int m3 = 3 * minmn; 
-        int m4 = 4 * minmn; 
-        int minw; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
+        int m3 = 3 * minmn;
+        int m4 = 4 * minmn;
+        int minw;
         if (jobz == 'N') {
           // leading comments:
           //   LWORK >= 3*min(M,N) + max(max(M,N), 6*min(M,N))
           // code:
           //   LWORK >= 3*min(M,N) + max(max(M,N), 7*min(M,N))
-          int m7 = 7 * minmn; 
+          int m7 = 7 * minmn;
           minw = maxmn < m7 ? m7 : maxmn;
-          minw += m3; 
+          minw += m3;
         }
         if (jobz == 'O') {
-          // LWORK >= 3*min(M,N)*min(M,N) 
+          // LWORK >= 3*min(M,N)*min(M,N)
           //          + max(max(M,N), 5*min(M,N)*min(M,N)+4*min(M,N))
-          int m5 = 5 * minmn * minmn + m4; 
+          int m5 = 5 * minmn * minmn + m4;
           minw = maxmn < m5 ? m5 : maxmn;
-          minw += m3 * minmn; 
+          minw += m3 * minmn;
         }
         if (jobz == 'S' || jobz == 'A') {
-          // LWORK >= 3*min(M,N)*min(M,N) 
+          // LWORK >= 3*min(M,N)*min(M,N)
           //          + max(max(M,N), 4*min(M,N)*min(M,N)+4*min(M,N)).
-          int m44 = m4 * minmn + m4; 
+          int m44 = m4 * minmn + m4;
           minw = maxmn < m44 ? m44 : maxmn;
-          minw += m3 * minmn; 
+          minw += m3 * minmn;
         }
         return minw; 
       }
-      inline 
+      inline
       int gesdd_min_work (double, char jobz, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
-        int m3 = 3 * minmn; 
-        int m4 = 4 * minmn; 
-        int minw; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
+        int m3 = 3 * minmn;
+        int m4 = 4 * minmn;
+        int minw;
         if (jobz == 'N') {
           // leading comments:
           //   LWORK >= 3*min(M,N) + max(max(M,N), 6*min(M,N))
           // code:
           //   LWORK >= 3*min(M,N) + max(max(M,N), 7*min(M,N))
-          int m7 = 7 * minmn; 
+          int m7 = 7 * minmn;
           minw = maxmn < m7 ? m7 : maxmn;
-          minw += m3; 
+          minw += m3;
         }
         else if (jobz == 'O') {
-          // LWORK >= 3*min(M,N)*min(M,N) 
+          // LWORK >= 3*min(M,N)*min(M,N)
           //          + max(max(M,N), 5*min(M,N)*min(M,N)+4*min(M,N))
-          int m5 = 5 * minmn * minmn + m4; 
+          int m5 = 5 * minmn * minmn + m4;
           minw = maxmn < m5 ? m5 : maxmn;
-          minw += m3 * minmn; 
+          minw += m3 * minmn;
         }
         else if (jobz == 'S' || jobz == 'A') {
-          // LWORK >= 3*min(M,N)*min(M,N) 
+          // LWORK >= 3*min(M,N)*min(M,N)
           //          + max(max(M,N), 4*min(M,N)*min(M,N)+4*min(M,N)).
-          int m44 = m4 * minmn + m4; 
+          int m44 = m4 * minmn + m4;
           minw = maxmn < m44 ? m44 : maxmn;
-          minw += m3 * minmn; 
+          minw += m3 * minmn;
         }
         else {
-          std::cerr << "Invalid option passed to gesdd" << std::endl ;  
+          std::cerr << "Invalid option passed to gesdd" << std::endl ;
           return 0 ;
         }
-        return minw; 
+        return minw;
       }
-      inline 
+      inline
       int gesdd_min_work (traits::complex_f, char jobz, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
         int m2 = 2 * minmn;
-        int minw = m2 + maxmn; 
-        if (jobz == 'N') 
+        int minw = m2 + maxmn;
+        if (jobz == 'N')
           // LWORK >= 2*min(M,N)+max(M,N)
-          ; 
-        if (jobz == 'O') 
+          ;
+        if (jobz == 'O')
           // LWORK >= 2*min(M,N)*min(M,N) + 2*min(M,N) + max(M,N)
-          minw += m2 * minmn; 
-        if (jobz == 'S' || jobz == 'A') 
+          minw += m2 * minmn;
+        if (jobz == 'S' || jobz == 'A')
           // LWORK >= min(M,N)*min(M,N) + 2*min(M,N) + max(M,N)
-          minw += minmn * minmn; 
-        return minw; 
+          minw += minmn * minmn;
+        return minw;
       }
-      inline 
+      inline
       int gesdd_min_work (traits::complex_d, char jobz, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
         int m2 = 2 * minmn;
-        int minw = m2 + maxmn; 
-        if (jobz == 'N') 
+        int minw = m2 + maxmn;
+        if (jobz == 'N')
           // LWORK >= 2*min(M,N)+max(M,N)
-          ; 
-        if (jobz == 'O') 
+          ;
+        if (jobz == 'O')
           // LWORK >= 2*min(M,N)*min(M,N) + 2*min(M,N) + max(M,N)
-          minw += m2 * minmn; 
-        if (jobz == 'S' || jobz == 'A') 
+          minw += m2 * minmn;
+        if (jobz == 'S' || jobz == 'A')
           // LWORK >= min(M,N)*min(M,N) + 2*min(M,N) + max(M,N)
-          minw += minmn * minmn; 
-        return minw; 
+          minw += minmn * minmn;
+        return minw;
       }
 
-      inline 
+      inline
       int gesdd_rwork (float, char, int, int) { return 1; }
-      inline 
+      inline
       int gesdd_rwork (double, char, int, int) { return 1; }
-      inline 
+      inline
       int gesdd_rwork (traits::complex_f, char jobz, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int minw; 
-        if (jobz == 'N') 
+        int minmn = m < n ? m : n;
+        int minw;
+        if (jobz == 'N')
           // LWORK >= 7*min(M,N)
-          minw = 7 * minmn; 
-        else 
+          minw = 7 * minmn;
+        else
           // LRWORK >= 5*min(M,N)*min(M,N) + 5*min(M,N)
           minw = 5 * (minmn * minmn + minmn);
-        return minw; 
+        return minw;
       }
-      inline 
+      inline
       int gesdd_rwork (traits::complex_d, char jobz, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int minw; 
-        if (jobz == 'N') 
+        int minmn = m < n ? m : n;
+        int minw;
+        if (jobz == 'N')
           // LWORK >= 7*min(M,N)
-          minw = 7 * minmn; 
-        else 
+          minw = 7 * minmn;
+        else
           // LRWORK >= 5*min(M,N)*min(M,N) + 5*min(M,N)
           minw = 5 * (minmn * minmn + minmn);
-        return minw; 
+        return minw;
       }
 
       inline
       int gesdd_iwork (int m, int n) {
-        int minmn = m < n ? m : n; 
-        return 8 * minmn; 
+        int minmn = m < n ? m : n;
+        return 8 * minmn;
       }
 
-    } // detail 
+    } // detail
 
 
-    template <typename MatrA> 
-    int gesdd_work (char const q, char const jobz, MatrA const& a) 
+    template <typename MatrA>
+    int gesdd_work (char const q, char const jobz, MatrA const& a)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
 #ifdef BOOST_NUMERIC_BINDINGS_LAPACK_2
-      assert (q == 'M'); 
+      assert (q == 'M');
 #else
-      assert (q == 'M' || q == 'O'); 
+      assert (q == 'M' || q == 'O');
 #endif 
-      assert (jobz == 'N' || jobz == 'O' || jobz == 'A' || jobz == 'S'); 
+      assert (jobz == 'N' || jobz == 'O' || jobz == 'A' || jobz == 'S');
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
-      int lw = -13; 
+      int lw = -13;
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
 
-      if (q == 'M') 
+      if (q == 'M')
         lw = detail::gesdd_min_work (val_t(), jobz, m, n);
 
 #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_2
-      MatrA& a2 = const_cast<MatrA&> (a); 
+      MatrA& a2 = const_cast<MatrA&> (a);
       if (q == 'O') {
-        // traits::detail::array<val_t> w (1); 
-        val_t w; 
-        int info; 
-        detail::gesdd (jobz, m, n, 
-                       traits::matrix_storage (a2), 
+        // traits::detail::array<val_t> w (1);
+        val_t w;
+        int info;
+        detail::gesdd (jobz, m, n,
+                       traits::matrix_storage (a2),
                        traits::leading_dimension (a2),
-                       0, // traits::vector_storage (s),  
+                       0, // traits::vector_storage (s),
                        0, // traits::matrix_storage (u),
                        m, // traits::leading_dimension (u),
                        0, // traits::matrix_storage (vt),
                        n, // traits::leading_dimension (vt),
-                       &w, // traits::vector_storage (w),  
-                       -1, // traits::vector_size (w),  
-                       0, // traits::vector_storage (rw),  
-                       0, // traits::vector_storage (iw),  
+                       &w, // traits::vector_storage (w),
+                       -1, // traits::vector_size (w),
+                       0, // traits::vector_storage (rw),
+                       0, // traits::vector_storage (iw),
                        &info);
-        assert (info == 0); 
+        assert (info == 0);
 
-        lw = traits::detail::to_int (w);  
-        // // lw = traits::detail::to_int (w[0]); 
+        lw = traits::detail::to_int (w);
+        // // lw = traits::detail::to_int (w[0]);
         /*
          * is there a bug in LAPACK? or in Mandrake's .rpm?
-         * if m == 3, n == 4 and jobz == 'N' (real A), 
+         * if m == 3, n == 4 and jobz == 'N' (real A),
          * gesdd() returns optimal size == 1 while minimum size == 27
          */
-        // int lwo = traits::detail::to_int (w);  
+        // int lwo = traits::detail::to_int (w);
         // int lwmin = detail::gesdd_min_work (val_t(), jobz, m, n);
-        // lw = lwo < lwmin ? lwmin : lwo; 
+        // lw = lwo < lwmin ? lwmin : lwo;
       }
-#endif 
-      
-      return lw; 
+#endif
+
+      return lw;
     }
 
 
-    template <typename MatrA> 
+    template <typename MatrA>
     int gesdd_rwork (char jobz, MatrA const& a) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
-      assert (jobz == 'N' || jobz == 'O' || jobz == 'A' || jobz == 'S'); 
+      assert (jobz == 'N' || jobz == 'O' || jobz == 'A' || jobz == 'S');
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
 
-      return detail::gesdd_rwork (val_t(), jobz, 
+      return detail::gesdd_rwork (val_t(), jobz,
                                   traits::matrix_size1 (a),
                                   traits::matrix_size2 (a));
     }
 
 
-    template <typename MatrA> 
+    template <typename MatrA>
     int gesdd_iwork (MatrA const& a) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       return detail::gesdd_iwork (traits::matrix_size1 (a),
                                   traits::matrix_size2 (a));
     }
 
 
-    template <typename MatrA, typename VecS, 
+    template <typename MatrA, typename VecS,
               typename MatrU, typename MatrV, typename VecW, typename VecIW>
-    int gesdd (char const jobz, MatrA& a, 
-               VecS& s, MatrU& u, MatrV& vt, VecW& w, VecIW& iw) 
+    int gesdd (char const jobz, MatrA& a,
+               VecS& s, MatrU& u, MatrV& vt, VecW& w, VecIW& iw)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrU>::matrix_structure, 
+        typename traits::matrix_traits<MatrU>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrV>::matrix_structure, 
+        typename traits::matrix_traits<MatrV>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
 
       BOOST_STATIC_ASSERT(
         (boost::is_same<
@@ -391,238 +391,238 @@
         boost::is_same<
           typename traits::matrix_traits<MatrA>::value_type, double
         >::value));
-#endif 
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 
-      assert (minmn == traits::vector_size (s)); 
+      assert (minmn == traits::vector_size (s));
       assert ((jobz == 'N')
               || ((jobz == 'O' || jobz == 'A') && m >= n)
-              || ((jobz == 'O' || jobz == 'A') 
-                  && m < n 
+              || ((jobz == 'O' || jobz == 'A')
+                  && m < n
                   && m == traits::matrix_size2 (u))
-              || (jobz == 'S' && minmn == traits::matrix_size2 (u))); 
+              || (jobz == 'S' && minmn == traits::matrix_size2 (u)));
       assert ((jobz == 'N' && traits::leading_dimension (u) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m >= n
                   && traits::leading_dimension (u) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m < n
                   && traits::leading_dimension (u) >= m)
               || (jobz == 'A' && traits::leading_dimension (u) >= m)
               || (jobz == 'S' && traits::leading_dimension (u) >= m));
-      assert (n == traits::matrix_size2 (vt)); 
+      assert (n == traits::matrix_size2 (vt));
       assert ((jobz == 'N' && traits::leading_dimension (vt) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m < n
                   && traits::leading_dimension (vt) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m >= n
                   && traits::leading_dimension (vt) >= n)
               || (jobz == 'A' && traits::leading_dimension (vt) >= n)
               || (jobz == 'S' && traits::leading_dimension (vt) >= minmn));
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
-      assert (traits::vector_size (w) 
-              >= detail::gesdd_min_work (val_t(), jobz, m, n)); 
-      assert (traits::vector_size (iw) >= detail::gesdd_iwork (m, n)); 
-
-      int info; 
-      detail::gesdd (jobz, m, n, 
-                     traits::matrix_storage (a), 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
+      assert (traits::vector_size (w)
+              >= detail::gesdd_min_work (val_t(), jobz, m, n));
+      assert (traits::vector_size (iw) >= detail::gesdd_iwork (m, n));
+
+      int info;
+      detail::gesdd (jobz, m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      traits::matrix_storage (u),
                      traits::leading_dimension (u),
                      traits::matrix_storage (vt),
                      traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     0, // dummy argument 
-                     traits::vector_storage (iw),  
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     0, // dummy argument
+                     traits::vector_storage (iw),
                      &info);
-      return info; 
+      return info;
     }
 
 
-    template <typename MatrA, typename VecS, typename MatrU, 
+    template <typename MatrA, typename VecS, typename MatrU,
               typename MatrV, typename VecW, typename VecRW, typename VecIW>
-    int gesdd (char const jobz, MatrA& a, 
-               VecS& s, MatrU& u, MatrV& vt, VecW& w, VecRW& rw, VecIW& iw) 
+    int gesdd (char const jobz, MatrA& a,
+               VecS& s, MatrU& u, MatrV& vt, VecW& w, VecRW& rw, VecIW& iw)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrU>::matrix_structure, 
+        typename traits::matrix_traits<MatrU>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrV>::matrix_structure, 
+        typename traits::matrix_traits<MatrV>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 
-      assert (minmn == traits::vector_size (s)); 
+      assert (minmn == traits::vector_size (s));
       assert ((jobz == 'N')
               || ((jobz == 'O' || jobz == 'A') && m >= n)
-              || ((jobz == 'O' || jobz == 'A') 
-                  && m < n 
+              || ((jobz == 'O' || jobz == 'A')
+                  && m < n
                   && m == traits::matrix_size2 (u))
-              || (jobz == 'S' && minmn == traits::matrix_size2 (u))); 
+              || (jobz == 'S' && minmn == traits::matrix_size2 (u)));
       assert ((jobz == 'N' && traits::leading_dimension (u) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m >= n
                   && traits::leading_dimension (u) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m < n
                   && traits::leading_dimension (u) >= m)
               || (jobz == 'A' && traits::leading_dimension (u) >= m)
               || (jobz == 'S' && traits::leading_dimension (u) >= m));
-      assert (n == traits::matrix_size2 (vt)); 
+      assert (n == traits::matrix_size2 (vt));
       assert ((jobz == 'N' && traits::leading_dimension (vt) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m < n
                   && traits::leading_dimension (vt) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m >= n
                   && traits::leading_dimension (vt) >= n)
               || (jobz == 'A' && traits::leading_dimension (vt) >= n)
               || (jobz == 'S' && traits::leading_dimension (vt) >= minmn));
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
-      assert (traits::vector_size (w) 
-              >= detail::gesdd_min_work (val_t(), jobz, m, n)); 
-      assert (traits::vector_size (rw) 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
+      assert (traits::vector_size (w)
+              >= detail::gesdd_min_work (val_t(), jobz, m, n));
+      assert (traits::vector_size (rw)
               >= detail::gesdd_rwork (val_t(), jobz, m, n));
-      assert (traits::vector_size (iw) >= detail::gesdd_iwork (m, n)); 
+      assert (traits::vector_size (iw) >= detail::gesdd_iwork (m, n));
 
-      int info; 
-      detail::gesdd (jobz, m, n, 
-                     traits::matrix_storage (a), 
+      int info;
+      detail::gesdd (jobz, m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      traits::matrix_storage (u),
                      traits::leading_dimension (u),
                      traits::matrix_storage (vt),
                      traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     traits::vector_storage (rw),  
-                     traits::vector_storage (iw),  
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     traits::vector_storage (rw),
+                     traits::vector_storage (iw),
                      &info);
-      return info; 
+      return info;
     }
 
 
     template <typename MatrA, typename VecS, typename MatrU, typename MatrV>
-    int gesdd (char const opt, char const jobz, 
-               MatrA& a, VecS& s, MatrU& u, MatrV& vt) 
+    int gesdd (char const opt, char const jobz,
+               MatrA& a, VecS& s, MatrU& u, MatrV& vt)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrU>::matrix_structure, 
+        typename traits::matrix_traits<MatrU>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrV>::matrix_structure, 
+        typename traits::matrix_traits<MatrV>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
 #ifndef NDEBUG
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 #endif // NDEBUG
 
-      assert (minmn == traits::vector_size (s)); 
+      assert (minmn == traits::vector_size (s));
       assert ((jobz == 'N')
               || ((jobz == 'O' || jobz == 'A') && m >= n)
-              || ((jobz == 'O' || jobz == 'A') 
-                  && m < n 
+              || ((jobz == 'O' || jobz == 'A')
+                  && m < n
                   && m == traits::matrix_size2 (u))
-              || (jobz == 'S' && minmn == traits::matrix_size2 (u))); 
+              || (jobz == 'S' && minmn == traits::matrix_size2 (u)));
       assert ((jobz == 'N' && traits::leading_dimension (u) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m >= n
                   && traits::leading_dimension (u) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m < n
                   && traits::leading_dimension (u) >= m)
               || (jobz == 'A' && traits::leading_dimension (u) >= m)
               || (jobz == 'S' && traits::leading_dimension (u) >= m));
-      assert (n == traits::matrix_size2 (vt)); 
+      assert (n == traits::matrix_size2 (vt));
       assert ((jobz == 'N' && traits::leading_dimension (vt) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m < n
                   && traits::leading_dimension (vt) >= 1)
-              || (jobz == 'O' 
+              || (jobz == 'O'
                   && m >= n
                   && traits::leading_dimension (vt) >= n)
               || (jobz == 'A' && traits::leading_dimension (vt) >= n)
               || (jobz == 'S' && traits::leading_dimension (vt) >= minmn));
 
 #ifdef BOOST_NUMERIC_BINDINGS_LAPACK_2
-      assert (opt == 'M'); 
+      assert (opt == 'M');
 #else
-      assert (opt == 'M' || opt == 'O'); 
-#endif 
+      assert (opt == 'M' || opt == 'O');
+#endif
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
 #else 
-      typedef typename MatrA::value_type val_t; 
+      typedef typename MatrA::value_type val_t;
 #endif 
       typedef typename traits::type_traits<val_t>::real_type real_t;
 
-      int const lw = gesdd_work (opt, jobz, a); 
-      traits::detail::array<val_t> w (lw); 
-      if (!w.valid()) return -101; 
-
-      int const lrw = gesdd_rwork (jobz, a); 
-      traits::detail::array<real_t> rw (lrw); 
-      if (!rw.valid()) return -102; 
-
-      int const liw = gesdd_iwork (a); 
-      traits::detail::array<int> iw (liw); 
-      if (!iw.valid()) return -103; 
-
-      int info; 
-      detail::gesdd (jobz, m, n, 
-                     traits::matrix_storage (a), 
+      int const lw = gesdd_work (opt, jobz, a);
+      traits::detail::array<val_t> w (lw);
+      if (!w.valid()) return -101;
+
+      int const lrw = gesdd_rwork (jobz, a);
+      traits::detail::array<real_t> rw (lrw);
+      if (!rw.valid()) return -102;
+
+      int const liw = gesdd_iwork (a);
+      traits::detail::array<int> iw (liw);
+      if (!iw.valid()) return -103;
+
+      int info;
+      detail::gesdd (jobz, m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      traits::matrix_storage (u),
                      traits::leading_dimension (u),
                      traits::matrix_storage (vt),
                      traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     lw, //traits::vector_size (w),  
-                     traits::vector_storage (rw),  
-                     traits::vector_storage (iw),  
+                     traits::vector_storage (w),
+                     lw, //traits::vector_size (w),
+                     traits::vector_storage (rw),
+                     traits::vector_storage (iw),
                      &info);
-      return info; 
+      return info;
     }
 
 
@@ -631,71 +631,71 @@
     template <typename MatrA, typename VecS, typename MatrU, typename MatrV>
     inline
     int gesdd (char const jobz, MatrA& a, VecS& s, MatrU& u, MatrV& vt) {
-      return gesdd ('O', jobz, a, s, u, vt); 
+      return gesdd ('O', jobz, a, s, u, vt);
     }
 
     template <typename MatrA, typename VecS, typename MatrU, typename MatrV>
     inline
     int gesdd (MatrA& a, VecS& s, MatrU& u, MatrV& vt) {
-      return gesdd ('O', 'S', a, s, u, vt); 
+      return gesdd ('O', 'S', a, s, u, vt);
     }
 
-    template <typename MatrA, typename VecS> 
+    template <typename MatrA, typename VecS>
     int gesdd (MatrA& a, VecS& s) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
 #endif 
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 
-      assert (minmn == traits::vector_size (s)); 
+      assert (minmn == traits::vector_size (s));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
 #endif 
       typedef typename traits::type_traits<val_t>::real_type real_t;
 
-      int const lw = gesdd_work ('O', 'N', a); 
-      traits::detail::array<val_t> w (lw); 
-      if (!w.valid()) return -101; 
-
-      int const lrw = gesdd_rwork ('N', a); 
-      traits::detail::array<real_t> rw (lrw); 
-      if (!rw.valid()) return -102; 
-
-      int const liw = gesdd_iwork (a); 
-      traits::detail::array<int> iw (liw); 
-      if (!iw.valid()) return -103; 
-
-      int info; 
-      detail::gesdd ('N', m, n, 
-                     traits::matrix_storage (a), 
+      int const lw = gesdd_work ('O', 'N', a);
+      traits::detail::array<val_t> w (lw);
+      if (!w.valid()) return -101;
+
+      int const lrw = gesdd_rwork ('N', a);
+      traits::detail::array<real_t> rw (lrw);
+      if (!rw.valid()) return -102;
+
+      int const liw = gesdd_iwork (a);
+      traits::detail::array<int> iw (liw);
+      if (!iw.valid()) return -103;
+
+      int info;
+      detail::gesdd ('N', m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      0, // traits::matrix_storage (u),
                      1, // traits::leading_dimension (u),
                      0, // traits::matrix_storage (vt),
                      1, // traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     traits::vector_storage (rw),  
-                     traits::vector_storage (iw),  
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     traits::vector_storage (rw),
+                     traits::vector_storage (iw),
                      &info);
-      return info; 
+      return info;
     }
 
-#endif 
+#endif
 
   } // namespace lapack
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/gesv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gesv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gesv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -22,71 +22,71 @@
 #include <boost/numeric/bindings/lapack/ilaenv.hpp>
 
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // general system of linear equations A * X = B
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * gesv() computes the solution to a system of linear equations 
      * A * X = B, where A is an N-by-N matrix and X and B are N-by-NRHS 
      * matrices.
      *
-     * The LU decomposition with partial pivoting and row interchanges 
-     * is used to factor A as A = P * L * U, where P is a permutation 
-     * matrix, L is unit lower triangular, and U is upper triangular.   
-     * The factored form of A is then used to solve the system of 
+     * The LU decomposition with partial pivoting and row interchanges
+     * is used to factor A as A = P * L * U, where P is a permutation
+     * matrix, L is unit lower triangular, and U is upper triangular.
+     * The factored form of A is then used to solve the system of
      * equations A * X = B.
-     */ 
+     */
 
     namespace detail {
 
-      inline 
+      inline
       void gesv (int const n, int const nrhs,
-                 float* a, int const lda, int* ipiv, 
-                 float* b, int const ldb, int* info) 
+                 float* a, int const lda, int* ipiv,
+                 float* b, int const ldb, int* info)
       {
         LAPACK_SGESV (&n, &nrhs, a, &lda, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void gesv (int const n, int const nrhs,
-                 double* a, int const lda, int* ipiv, 
-                 double* b, int const ldb, int* info) 
+                 double* a, int const lda, int* ipiv,
+                 double* b, int const ldb, int* info)
       {
         LAPACK_DGESV (&n, &nrhs, a, &lda, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void gesv (int const n, int const nrhs,
-                 traits::complex_f* a, int const lda, int* ipiv, 
-                 traits::complex_f* b, int const ldb, int* info) 
+                 traits::complex_f* a, int const lda, int* ipiv,
+                 traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CGESV (&n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CGESV (&n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
-      
-      inline 
+
+      inline
       void gesv (int const n, int const nrhs,
-                 traits::complex_d* a, int const lda, int* ipiv, 
-                 traits::complex_d* b, int const ldb, int* info) 
+                 traits::complex_d* a, int const lda, int* ipiv,
+                 traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZGESV (&n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZGESV (&n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
@@ -95,87 +95,87 @@
     template <typename MatrA, typename MatrB, typename IVec>
     int gesv (MatrA& a, IVec& ipiv, MatrB& b) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::matrix_size1 (b)); 
-      assert (n == traits::vector_size (ipiv)); 
-
-      int info; 
-      detail::gesv (n, traits::matrix_size2 (b), 
-                    traits::matrix_storage (a), 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::matrix_size1 (b));
+      assert (n == traits::vector_size (ipiv));
+
+      int info;
+      detail::gesv (n, traits::matrix_size2 (b),
+                    traits::matrix_storage (a),
                     traits::leading_dimension (a),
-                    traits::vector_storage (ipiv),  
+                    traits::vector_storage (ipiv),
                     traits::matrix_storage (b),
                     traits::leading_dimension (b),
                     &info);
-      return info; 
+      return info;
     }
 
     template <typename MatrA, typename MatrB>
     int gesv (MatrA& a, MatrB& b) {
-      // with 'internal' pivot vector 
-      
-      // gesv() errors: 
+      // with 'internal' pivot vector
+
+      // gesv() errors:
       //   if (info == 0), successful
       //   if (info < 0), the -info argument had an illegal value
       //   -- we will use -101 if allocation fails
-      //   if (info > 0), U(i-1,i-1) is exactly zero 
-      int info = -101; 
-      traits::detail::array<int> ipiv (traits::matrix_size1 (a)); 
-      if (ipiv.valid()) 
-        info = gesv (a, ipiv, b); 
-      return info; 
+      //   if (info > 0), U(i-1,i-1) is exactly zero
+      int info = -101;
+      traits::detail::array<int> ipiv (traits::matrix_size1 (a));
+      if (ipiv.valid())
+        info = gesv (a, ipiv, b);
+      return info;
     }
 
 
-    /* 
-     * getrf() computes an LU factorization of a general M-by-N matrix A  
-     * using partial pivoting with row interchanges. The factorization 
-     * has the form A = P * L * U, where P is a permutation matrix, 
+    /*
+     * getrf() computes an LU factorization of a general M-by-N matrix A
+     * using partial pivoting with row interchanges. The factorization
+     * has the form A = P * L * U, where P is a permutation matrix,
      * L is lower triangular with unit diagonal elements (lower
-     * trapezoidal if M > N), and U is upper triangular (upper 
+     * trapezoidal if M > N), and U is upper triangular (upper
      * trapezoidal if M < N).
-     */ 
+     */
 
     namespace detail {
 
-      inline 
+      inline
       void getrf (int const n, int const m,
-                  float* a, int const lda, int* ipiv, int* info) 
+                  float* a, int const lda, int* ipiv, int* info)
       {
         LAPACK_SGETRF (&n, &m, a, &lda, ipiv, info);
       }
 
-      inline 
+      inline
       void getrf (int const n, int const m,
-                  double* a, int const lda, int* ipiv, int* info) 
+                  double* a, int const lda, int* ipiv, int* info)
       {
         LAPACK_DGETRF (&n, &m, a, &lda, ipiv, info);
       }
 
-      inline 
+      inline
       void getrf (int const n, int const m,
-                  traits::complex_f* a, int const 
-                  lda, int* ipiv, int* info) 
+                  traits::complex_f* a, int const
+                  lda, int* ipiv, int* info)
       {
         LAPACK_CGETRF (&n, &m, traits::complex_ptr (a), &lda, ipiv, info);
       }
 
-      inline 
+      inline
       void getrf (int const n, int const m,
-                  traits::complex_d* a, int const lda, 
-                  int* ipiv, int* info) 
+                  traits::complex_d* a, int const lda,
+                  int* ipiv, int* info)
       {
         LAPACK_ZGETRF (&n, &m, traits::complex_ptr (a), &lda, ipiv, info);
       }
@@ -185,196 +185,196 @@
     template <typename MatrA, typename IVec>
     int getrf (MatrA& a, IVec& ipiv) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const n = traits::matrix_size1 (a);
-      int const m = traits::matrix_size2 (a); 
+      int const m = traits::matrix_size2 (a);
       assert (traits::vector_size (ipiv) == (m < n ? m : n));
 
-      int info; 
-      detail::getrf (n, m, 
-                     traits::matrix_storage (a), 
+      int info;
+      detail::getrf (n, m,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (ipiv),  
+                     traits::vector_storage (ipiv),
                      &info);
-      return info; 
+      return info;
     }
 
 
     /*
-     * getrs() solves a system of linear equations A * X = B 
-     * or A^T * X = B with a general N-by-N matrix A using  
+     * getrs() solves a system of linear equations A * X = B
+     * or A^T * X = B with a general N-by-N matrix A using
      * the LU factorization computed by getrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void getrs (char const trans, int const n, int const nrhs,
-                  float const* a, int const lda, int const* ipiv, 
-                  float* b, int const ldb, int* info) 
+                  float const* a, int const lda, int const* ipiv,
+                  float* b, int const ldb, int* info)
       {
         LAPACK_SGETRS (&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void getrs (char const trans, int const n, int const nrhs,
-                  double const* a, int const lda, int const* ipiv, 
-                  double* b, int const ldb, int* info) 
+                  double const* a, int const lda, int const* ipiv,
+                  double* b, int const ldb, int* info)
       {
         LAPACK_DGETRS (&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void getrs (char const trans, int const n, int const nrhs,
-                  traits::complex_f const* a, int const lda, 
-                  int const* ipiv, 
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* a, int const lda,
+                  int const* ipiv,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CGETRS (&trans, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CGETRS (&trans, &n, &nrhs,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void getrs (char const trans, int const n, int const nrhs,
-                  traits::complex_d const* a, int const lda, 
-                  int const* ipiv, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* a, int const lda,
+                  int const* ipiv,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZGETRS (&trans, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZGETRS (&trans, &n, &nrhs,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
     } // namespace detail
 
     template <typename MatrA, typename MatrB, typename IVec>
-    int getrs (char const trans, MatrA const& a, IVec const& ipiv, MatrB& b) 
+    int getrs (char const trans, MatrA const& a, IVec const& ipiv, MatrB& b)
     {
-      assert (trans == 'N' || trans == 'T' || trans == 'C'); 
+      assert (trans == 'N' || trans == 'T' || trans == 'C');
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::matrix_size1 (b)); 
-      assert (n == traits::vector_size (ipiv)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::matrix_size1 (b));
+      assert (n == traits::vector_size (ipiv));
 
-      int info; 
-      detail::getrs (trans, n, traits::matrix_size2 (b), 
+      int info;
+      detail::getrs (trans, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
 #else
-                     traits::matrix_storage_const (a), 
-#endif 
+                     traits::matrix_storage_const (a),
+#endif
                      traits::leading_dimension (a),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::vector_storage (ipiv),  
+                     traits::vector_storage (ipiv),
 #else
-                     traits::vector_storage_const (ipiv),  
+                     traits::vector_storage_const (ipiv),
 #endif
                      traits::matrix_storage (b),
                      traits::leading_dimension (b),
                      &info);
-      return info; 
+      return info;
     }
 
     template <typename MatrA, typename MatrB, typename IVec>
     inline
     int getrs (MatrA const& a, IVec const& ipiv, MatrB& b) {
-      char const no_transpose = 'N'; 
-      return getrs (no_transpose, a, ipiv, b); 
+      char const no_transpose = 'N';
+      return getrs (no_transpose, a, ipiv, b);
     }
 
     /*
-     * getri() computes the inverse of a matrix using  
+     * getri() computes the inverse of a matrix using
      * the LU factorization computed by getrf().
      */
 
     namespace detail {
 
-      inline 
-      void getri (int const n, float* a, int const lda, int const* ipiv, 
-                  float* work, int const lwork, int* info) 
+      inline
+      void getri (int const n, float* a, int const lda, int const* ipiv,
+                  float* work, int const lwork, int* info)
       {
         LAPACK_SGETRI (&n, a, &lda, ipiv, work, &lwork, info);
       }
 
-      inline 
-      void getri (int const n, double* a, int const lda, int const* ipiv, 
-                  double* work, int const lwork, int* info) 
+      inline
+      void getri (int const n, double* a, int const lda, int const* ipiv,
+                  double* work, int const lwork, int* info)
       {
         LAPACK_DGETRI (&n, a, &lda, ipiv, work, &lwork, info);
       }
 
-      inline 
-      void getri (int const n, traits::complex_f* a, int const lda, 
-          int const* ipiv, traits::complex_f* work, int const lwork, 
-          int* info) 
+      inline
+      void getri (int const n, traits::complex_f* a, int const lda,
+          int const* ipiv, traits::complex_f* work, int const lwork,
+          int* info)
       {
-        LAPACK_CGETRI (&n, traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CGETRI (&n, traits::complex_ptr (a), &lda, ipiv,
             traits::complex_ptr (work), &lwork, info);
       }
 
-      inline 
-      void getri (int const n, traits::complex_d* a, int const lda, 
-          int const* ipiv, traits::complex_d* work, int const lwork, 
-          int* info) 
+      inline
+      void getri (int const n, traits::complex_d* a, int const lda,
+          int const* ipiv, traits::complex_d* work, int const lwork,
+          int* info)
       {
-        LAPACK_ZGETRI (&n, traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZGETRI (&n, traits::complex_ptr (a), &lda, ipiv,
             traits::complex_ptr (work), &lwork, info);
       }
 
-			
-			
+
+
       template <typename MatrA, typename IVec, typename Work>
-      int getri (MatrA& a, IVec const& ipiv, Work& work) 
+      int getri (MatrA& a, IVec const& ipiv, Work& work)
       {
-	#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+        #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
         BOOST_STATIC_ASSERT((boost::is_same<
-              typename traits::matrix_traits<MatrA>::matrix_structure, 
+              typename traits::matrix_traits<MatrA>::matrix_structure,
               traits::general_t
-              >::value)); 
-	#endif 
+              >::value));
+        #endif
 
         int const n = traits::matrix_size1 (a);
         assert (n > 0);
-        assert (n <= traits::leading_dimension (a)); 
+        assert (n <= traits::leading_dimension (a));
         assert (n == traits::matrix_size2 (a));
-        assert (n == traits::vector_size (ipiv)); 
+        assert (n == traits::vector_size (ipiv));
         assert (n <= traits::vector_size (work)); //Minimal workspace size
 
         int info;
         //double* dummy = traits::matrix_storage (a);
-        detail::getri (n, traits::matrix_storage (a), 
+        detail::getri (n, traits::matrix_storage (a),
             traits::leading_dimension (a),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-            traits::vector_storage (ipiv),  
+            traits::vector_storage (ipiv),
 #else
-            traits::vector_storage_const (ipiv), 
+            traits::vector_storage_const (ipiv),
 #endif
             traits::vector_storage (work),
             traits::vector_size (work),
             &info);
         return info;
       }
-		
-			
+
+
       inline
       int getri_block(float)
       {
@@ -401,7 +401,7 @@
 
     } // namespace detail
 
-		
+
     template <typename MatrA, typename IVec>
     int getri(MatrA& a, IVec& ipiv, minimal_workspace)
     {
@@ -412,7 +412,7 @@
 
       return detail::getri(a, ipiv, work);
 
-    } 
+    }
 
 
     // optimal workspace allocation
@@ -442,7 +442,7 @@
     int getri(MatrA& a, IVec& ipiv, Work& work)
     {
       return detail::getri(a, ipiv, work);
-    } 
+    }
 
   } // namespace lapack
 
@@ -451,4 +451,4 @@
 
 
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/gesvd.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/gesvd.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/gesvd.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -20,245 +20,245 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // singular value decomposition 
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
-     * (simple driver) 
-     * gesvd() computes the singular value decomposition (SVD) of 
-     * M-by-N matrix A, optionally computing the left and/or right 
+    /*
+     * (simple driver)
+     * gesvd() computes the singular value decomposition (SVD) of
+     * M-by-N matrix A, optionally computing the left and/or right
      * singular vectors. The SVD is written
      *
      *     A = U * S * V^T    or    A = U * S * V^H
      *
      * where S is an M-by-N matrix which is zero except for its min(m,n)
-     * diagonal elements, U is an M-by-M orthogonal/unitary matrix, and V 
+     * diagonal elements, U is an M-by-M orthogonal/unitary matrix, and V
      * is an N-by-N orthogonal/unitary matrix. The diagonal elements of S
-     * are the singular values of A; they are real and non-negative, and 
-     * are returned in descending  order. The first min(m,n) columns of 
-     * U and V are the left and right singular vectors of A. (Note that 
+     * are the singular values of A; they are real and non-negative, and
+     * are returned in descending  order. The first min(m,n) columns of
+     * U and V are the left and right singular vectors of A. (Note that
      * the routine returns V^T or V^H, not V.
-     */ 
+     */
 
     namespace detail {
 
-      inline 
-      void gesvd (char const jobu, char const jobvt, 
-                  int const m, int const n, float* a, int const lda, 
-                  float* s, float* u, int const ldu, 
+      inline
+      void gesvd (char const jobu, char const jobvt,
+                  int const m, int const n, float* a, int const lda,
+                  float* s, float* u, int const ldu,
                   float* vt, int const ldvt,
-                  float* work, int const lwork, float* /* dummy */, 
+                  float* work, int const lwork, float* /* dummy */,
                   int* info)
       {
-        LAPACK_SGESVD (&jobu, &jobvt, &m, &n, a, &lda, 
-                       s, u, &ldu, vt, &ldvt, work, &lwork, info); 
+        LAPACK_SGESVD (&jobu, &jobvt, &m, &n, a, &lda,
+                       s, u, &ldu, vt, &ldvt, work, &lwork, info);
       }
 
-      inline 
-      void gesvd (char const jobu, char const jobvt, 
-                  int const m, int const n, double* a, int const lda, 
-                  double* s, double* u, int const ldu, 
+      inline
+      void gesvd (char const jobu, char const jobvt,
+                  int const m, int const n, double* a, int const lda,
+                  double* s, double* u, int const ldu,
                   double* vt, int const ldvt,
-                  double* work, int const lwork, double* /* dummy */, 
+                  double* work, int const lwork, double* /* dummy */,
                   int* info)
       {
-        LAPACK_DGESVD (&jobu, &jobvt, &m, &n, a, &lda, 
-                       s, u, &ldu, vt, &ldvt, work, &lwork, info); 
+        LAPACK_DGESVD (&jobu, &jobvt, &m, &n, a, &lda,
+                       s, u, &ldu, vt, &ldvt, work, &lwork, info);
       }
 
-      inline 
-      void gesvd (char const jobu, char const jobvt, 
-                  int const m, int const n, 
-                  traits::complex_f* a, int const lda, 
-                  float* s, traits::complex_f* u, int const ldu, 
+      inline
+      void gesvd (char const jobu, char const jobvt,
+                  int const m, int const n,
+                  traits::complex_f* a, int const lda,
+                  float* s, traits::complex_f* u, int const ldu,
                   traits::complex_f* vt, int const ldvt,
-                  traits::complex_f* work, int const lwork, 
+                  traits::complex_f* work, int const lwork,
                   float* rwork, int* info)
       {
-        LAPACK_CGESVD (&jobu, &jobvt, &m, &n, 
-                       traits::complex_ptr (a), &lda, s, 
-                       traits::complex_ptr (u), &ldu, 
-                       traits::complex_ptr (vt), &ldvt, 
-                       traits::complex_ptr (work), &lwork, rwork, info); 
+        LAPACK_CGESVD (&jobu, &jobvt, &m, &n,
+                       traits::complex_ptr (a), &lda, s,
+                       traits::complex_ptr (u), &ldu,
+                       traits::complex_ptr (vt), &ldvt,
+                       traits::complex_ptr (work), &lwork, rwork, info);
       }
 
-      inline 
-      void gesvd (char const jobu, char const jobvt, 
-                  int const m, int const n, 
-                  traits::complex_d* a, int const lda, 
-                  double* s, traits::complex_d* u, int const ldu, 
+      inline
+      void gesvd (char const jobu, char const jobvt,
+                  int const m, int const n,
+                  traits::complex_d* a, int const lda,
+                  double* s, traits::complex_d* u, int const ldu,
                   traits::complex_d* vt, int const ldvt,
-                  traits::complex_d* work, int const lwork, 
+                  traits::complex_d* work, int const lwork,
                   double* rwork, int* info)
       {
-        LAPACK_ZGESVD (&jobu, &jobvt, &m, &n, 
-                       traits::complex_ptr (a), &lda, s, 
-                       traits::complex_ptr (u), &ldu, 
-                       traits::complex_ptr (vt), &ldvt, 
-                       traits::complex_ptr (work), &lwork, rwork, info); 
+        LAPACK_ZGESVD (&jobu, &jobvt, &m, &n,
+                       traits::complex_ptr (a), &lda, s,
+                       traits::complex_ptr (u), &ldu,
+                       traits::complex_ptr (vt), &ldvt,
+                       traits::complex_ptr (work), &lwork, rwork, info);
       }
 
-      inline 
+      inline
       int gesvd_min_work (float, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
-        int m3x = 3 * minmn + maxmn; 
-        int m5 = 5 * minmn; 
-        return m3x < m5 ? m5 : m3x; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
+        int m3x = 3 * minmn + maxmn;
+        int m5 = 5 * minmn;
+        return m3x < m5 ? m5 : m3x;
       }
-      inline 
+      inline
       int gesvd_min_work (double, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
-        int m3x = 3 * minmn + maxmn; 
-        int m5 = 5 * minmn; 
-        return m3x < m5 ? m5 : m3x; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
+        int m3x = 3 * minmn + maxmn;
+        int m5 = 5 * minmn;
+        return m3x < m5 ? m5 : m3x;
       }
-      inline 
+      inline
       int gesvd_min_work (traits::complex_f, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
-        return 2 * minmn + maxmn; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
+        return 2 * minmn + maxmn;
       }
-      inline 
+      inline
       int gesvd_min_work (traits::complex_d, int m, int n) {
-        int minmn = m < n ? m : n; 
-        int maxmn = m < n ? n : m; 
-        return 2 * minmn + maxmn; 
+        int minmn = m < n ? m : n;
+        int maxmn = m < n ? n : m;
+        return 2 * minmn + maxmn;
       }
 
-      inline 
+      inline
       int gesvd_rwork (float, int, int) { return 1; }
-      inline 
+      inline
       int gesvd_rwork (double, int, int) { return 1; }
-      inline 
+      inline
       int gesvd_rwork (traits::complex_f, int m, int n) {
         return 5 * (m < n ? m : n);
       }
-      inline 
+      inline
       int gesvd_rwork (traits::complex_d, int m, int n) {
         return 5 * (m < n ? m : n);
       }
 
-    } // detail 
+    } // detail
 
 
-    template <typename MatrA> 
-    int gesvd_work (char const q, 
-                    char const jobu, char const jobvt, MatrA const& a) 
+    template <typename MatrA>
+    int gesvd_work (char const q,
+                    char const jobu, char const jobvt, MatrA const& a)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
 #ifdef BOOST_NUMERIC_BINDINGS_LAPACK_2
-      assert (q == 'M'); 
+      assert (q == 'M');
 #else
-      assert (q == 'M' || q == 'O'); 
-#endif 
-      assert (jobu == 'N' || jobu == 'O' || jobu == 'A' || jobu == 'S'); 
-      assert (jobvt == 'N' || jobvt == 'O' || jobvt == 'A' || jobvt == 'S'); 
-      assert (!(jobu == 'O' && jobvt == 'O')); 
+      assert (q == 'M' || q == 'O');
+#endif
+      assert (jobu == 'N' || jobu == 'O' || jobu == 'A' || jobu == 'S');
+      assert (jobvt == 'N' || jobvt == 'O' || jobvt == 'A' || jobvt == 'S');
+      assert (!(jobu == 'O' && jobvt == 'O'));
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
-      int lw = -13; 
+      int lw = -13;
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
 
-      if (q == 'M') 
+      if (q == 'M')
         lw = detail::gesvd_min_work (val_t(), m, n);
 
 #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_2
-      MatrA& a2 = const_cast<MatrA&> (a); 
+      MatrA& a2 = const_cast<MatrA&> (a);
       if (q == 'O') {
-        // traits::detail::array<val_t> w (0); 
-        val_t w; 
-        int info; 
-        detail::gesvd (jobu, jobvt, m, n, 
-                       traits::matrix_storage (a2), 
+        // traits::detail::array<val_t> w (0);
+        val_t w;
+        int info;
+        detail::gesvd (jobu, jobvt, m, n,
+                       traits::matrix_storage (a2),
                        traits::leading_dimension (a2),
-                       0, // traits::vector_storage (s),  
+                       0, // traits::vector_storage (s),
                        0, // traits::matrix_storage (u),
                        m, // traits::leading_dimension (u),
                        0, // traits::matrix_storage (vt),
                        n, // traits::leading_dimension (vt),
-                       &w, // traits::vector_storage (w),  
-                       -1, // traits::vector_size (w),  
-                       0, // traits::vector_storage (rw),  
+                       &w, // traits::vector_storage (w),
+                       -1, // traits::vector_size (w),
+                       0, // traits::vector_storage (rw),
                        &info);
-        assert (info == 0); 
-        lw = traits::detail::to_int (w);  // (w[0]); 
+        assert (info == 0);
+        lw = traits::detail::to_int (w);  // (w[0]);
       }
-#endif 
-      
-      return lw; 
+#endif
+
+      return lw;
     }
 
 
-    template <typename MatrA> 
+    template <typename MatrA>
     int gesvd_rwork (MatrA const& a) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
 #else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
+      typedef typename MatrA::value_type val_t;
+#endif
 
-      return detail::gesvd_rwork (val_t(), 
+      return detail::gesvd_rwork (val_t(),
                                   traits::matrix_size1 (a),
                                   traits::matrix_size2 (a));
     }
 
 
-    template <typename MatrA, typename VecS, 
+    template <typename MatrA, typename VecS,
               typename MatrU, typename MatrV, typename VecW>
-    int gesvd (char const jobu, char const jobvt, 
-               MatrA& a, VecS& s, MatrU& u, MatrV& vt, VecW& w) 
+    int gesvd (char const jobu, char const jobvt,
+               MatrA& a, VecS& s, MatrU& u, MatrV& vt, VecW& w)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrU>::matrix_structure, 
+        typename traits::matrix_traits<MatrU>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrV>::matrix_structure, 
+        typename traits::matrix_traits<MatrV>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
 
       BOOST_STATIC_ASSERT(
         (boost::is_same<
@@ -268,152 +268,152 @@
         boost::is_same<
           typename traits::matrix_traits<MatrA>::value_type, double
         >::value));
-#endif 
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
 #ifndef NDEBUG /* this variable is only used in assertions below */
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 #endif
 
-      assert (minmn == traits::vector_size (s)); 
-      assert (!(jobu == 'O' && jobvt == 'O')); 
+      assert (minmn == traits::vector_size (s));
+      assert (!(jobu == 'O' && jobvt == 'O'));
       assert ((jobu == 'N')
               || (jobu == 'O')
               || (jobu == 'A' && m == traits::matrix_size2 (u))
-              || (jobu == 'S' && minmn == traits::matrix_size2 (u))); 
+              || (jobu == 'S' && minmn == traits::matrix_size2 (u)));
       assert ((jobu == 'N' && traits::leading_dimension (u) >= 1)
               || (jobu == 'O' && traits::leading_dimension (u) >= 1)
               || (jobu == 'A' && traits::leading_dimension (u) >= m)
               || (jobu == 'S' && traits::leading_dimension (u) >= m));
-      assert (n == traits::matrix_size2 (vt)); 
+      assert (n == traits::matrix_size2 (vt));
       assert ((jobvt == 'N' && traits::leading_dimension (vt) >= 1)
               || (jobvt == 'O' && traits::leading_dimension (vt) >= 1)
               || (jobvt == 'A' && traits::leading_dimension (vt) >= n)
               || (jobvt == 'S' && traits::leading_dimension (vt) >= minmn));
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
 #endif 
-      assert (traits::vector_size(w) >= detail::gesvd_min_work(val_t(),m,n)); 
+      assert (traits::vector_size(w) >= detail::gesvd_min_work(val_t(),m,n));
 
-      int info; 
-      detail::gesvd (jobu, jobvt, m, n, 
-                     traits::matrix_storage (a), 
+      int info;
+      detail::gesvd (jobu, jobvt, m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      traits::matrix_storage (u),
                      traits::leading_dimension (u),
                      traits::matrix_storage (vt),
                      traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     0, // dummy argument 
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     0, // dummy argument
                      &info);
-      return info; 
+      return info;
     }
 
 
-    template <typename MatrA, typename VecS, 
+    template <typename MatrA, typename VecS,
               typename MatrU, typename MatrV, typename VecW, typename VecRW>
-    int gesvd (char const jobu, char const jobvt, 
-               MatrA& a, VecS& s, MatrU& u, MatrV& vt, VecW& w, VecRW& rw) 
+    int gesvd (char const jobu, char const jobvt,
+               MatrA& a, VecS& s, MatrU& u, MatrV& vt, VecW& w, VecRW& rw)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrU>::matrix_structure, 
+        typename traits::matrix_traits<MatrU>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrV>::matrix_structure, 
+        typename traits::matrix_traits<MatrV>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
 #ifndef NDEBUG /* this variable is only used in assertions below */
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 #endif
 
-      assert (minmn == traits::vector_size (s)); 
-      assert (!(jobu == 'O' && jobvt == 'O')); 
+      assert (minmn == traits::vector_size (s));
+      assert (!(jobu == 'O' && jobvt == 'O'));
       assert ((jobu == 'N')
               || (jobu == 'O')
               || (jobu == 'A' && m == traits::matrix_size2 (u))
-              || (jobu == 'S' && minmn == traits::matrix_size2 (u))); 
+              || (jobu == 'S' && minmn == traits::matrix_size2 (u)));
       assert ((jobu == 'N' && traits::leading_dimension (u) >= 1)
               || (jobu == 'O' && traits::leading_dimension (u) >= 1)
               || (jobu == 'A' && traits::leading_dimension (u) >= m)
               || (jobu == 'S' && traits::leading_dimension (u) >= m));
-      assert (n == traits::matrix_size2 (vt)); 
+      assert (n == traits::matrix_size2 (vt));
       assert ((jobvt == 'N' && traits::leading_dimension (vt) >= 1)
               || (jobvt == 'O' && traits::leading_dimension (vt) >= 1)
               || (jobvt == 'A' && traits::leading_dimension (vt) >= n)
               || (jobvt == 'S' && traits::leading_dimension (vt) >= minmn));
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
-      assert (traits::vector_size(w) >= detail::gesvd_min_work(val_t(),m,n)); 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
+      assert (traits::vector_size(w) >= detail::gesvd_min_work(val_t(),m,n));
       assert (traits::vector_size(rw) >= detail::gesvd_rwork(val_t(),m,n));
 
-      int info; 
-      detail::gesvd (jobu, jobvt, m, n, 
-                     traits::matrix_storage (a), 
+      int info;
+      detail::gesvd (jobu, jobvt, m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      traits::matrix_storage (u),
                      traits::leading_dimension (u),
                      traits::matrix_storage (vt),
                      traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     traits::vector_storage (rw),  
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     traits::vector_storage (rw),
                      &info);
-      return info; 
+      return info;
     }
 
 
     template <typename MatrA, typename VecS, typename MatrU, typename MatrV>
-    int gesvd (char const opt, char const jobu, char const jobvt, 
-               MatrA& a, VecS& s, MatrU& u, MatrV& vt) 
+    int gesvd (char const opt, char const jobu, char const jobvt,
+               MatrA& a, VecS& s, MatrU& u, MatrV& vt)
     {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrU>::matrix_structure, 
+        typename traits::matrix_traits<MatrU>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrV>::matrix_structure, 
+        typename traits::matrix_traits<MatrV>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
 #ifndef NDEBUG /* this variable is only used in assertions below */
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 #endif
 
-      assert (minmn == traits::vector_size (s)); 
-      assert (!(jobu == 'O' && jobvt == 'O')); 
+      assert (minmn == traits::vector_size (s));
+      assert (!(jobu == 'O' && jobvt == 'O'));
       assert ((jobu == 'N')
               || (jobu == 'O')
               || (jobu == 'A' && m == traits::matrix_size2 (u))
-              || (jobu == 'S' && minmn == traits::matrix_size2 (u))); 
+              || (jobu == 'S' && minmn == traits::matrix_size2 (u)));
       assert ((jobu == 'N' && traits::leading_dimension (u) >= 1)
               || (jobu == 'O' && traits::leading_dimension (u) >= 1)
               || (jobu == 'A' && traits::leading_dimension (u) >= m)
@@ -425,40 +425,40 @@
               || (jobvt == 'S' && traits::leading_dimension (vt) >= minmn));
 
 #ifdef BOOST_NUMERIC_BINDINGS_LAPACK_2
-      assert (opt == 'M'); 
+      assert (opt == 'M');
 #else
-      assert (opt == 'M' || opt == 'O'); 
-#endif 
+      assert (opt == 'M' || opt == 'O');
+#endif
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
       typedef typename traits::type_traits<val_t>::real_type real_t;
 
-      int const lw = gesvd_work (opt, jobu, jobvt, a); 
-      traits::detail::array<val_t> w (lw); 
-      if (!w.valid()) return -101; 
-
-      int const lrw = gesvd_rwork (a); 
-      traits::detail::array<real_t> rw (lrw); 
-      if (!rw.valid()) return -102; 
-
-      int info; 
-      detail::gesvd (jobu, jobvt, m, n, 
-                     traits::matrix_storage (a), 
+      int const lw = gesvd_work (opt, jobu, jobvt, a);
+      traits::detail::array<val_t> w (lw);
+      if (!w.valid()) return -101;
+
+      int const lrw = gesvd_rwork (a);
+      traits::detail::array<real_t> rw (lrw);
+      if (!rw.valid()) return -102;
+
+      int info;
+      detail::gesvd (jobu, jobvt, m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      traits::matrix_storage (u),
                      traits::leading_dimension (u),
                      traits::matrix_storage (vt),
                      traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     traits::vector_storage (rw),  
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     traits::vector_storage (rw),
                      &info);
-      return info; 
+      return info;
     }
 
 
@@ -466,16 +466,16 @@
 
     template <typename MatrA, typename VecS, typename MatrU, typename MatrV>
     inline
-    int gesvd (char const jobu, char const jobvt, 
-               MatrA& a, VecS& s, MatrU& u, MatrV& vt) 
+    int gesvd (char const jobu, char const jobvt,
+               MatrA& a, VecS& s, MatrU& u, MatrV& vt)
     {
-      return gesvd ('O', jobu, jobvt, a, s, u, vt); 
+      return gesvd ('O', jobu, jobvt, a, s, u, vt);
     }
 
     template <typename MatrA, typename VecS, typename MatrU, typename MatrV>
     inline
     int gesvd (MatrA& a, VecS& s, MatrU& u, MatrV& vt) {
-      return gesvd ('O', 'S', 'S', a, s, u, vt); 
+      return gesvd ('O', 'S', 'S', a, s, u, vt);
     }
 
     template <typename MatrA, typename VecS> 
@@ -483,54 +483,54 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrA>::matrix_structure, 
+        typename traits::matrix_traits<MatrA>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const m = traits::matrix_size1 (a);
       int const n = traits::matrix_size2 (a);
 #ifndef NDEBUG /* this variable is only used in assertions below */
-      int const minmn = m < n ? m : n; 
+      int const minmn = m < n ? m : n;
 #endif
 
-      assert (minmn == traits::vector_size (s)); 
+      assert (minmn == traits::vector_size (s));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<MatrA>::value_type val_t; 
-#else 
-      typedef typename MatrA::value_type val_t; 
-#endif 
+      typedef typename traits::matrix_traits<MatrA>::value_type val_t;
+#else
+      typedef typename MatrA::value_type val_t;
+#endif
       typedef typename traits::type_traits<val_t>::real_type real_t;
 
-      int const lw = gesvd_work ('O', 'N', 'N', a); 
-      traits::detail::array<val_t> w (lw); 
-      if (!w.valid()) return -101; 
-
-      int const lrw = gesvd_rwork (a); 
-      traits::detail::array<real_t> rw (lrw); 
-      if (!rw.valid()) return -102; 
-
-      int info; 
-      detail::gesvd ('N', 'N', m, n, 
-                     traits::matrix_storage (a), 
+      int const lw = gesvd_work ('O', 'N', 'N', a);
+      traits::detail::array<val_t> w (lw);
+      if (!w.valid()) return -101;
+
+      int const lrw = gesvd_rwork (a);
+      traits::detail::array<real_t> rw (lrw);
+      if (!rw.valid()) return -102;
+
+      int info;
+      detail::gesvd ('N', 'N', m, n,
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (s),  
+                     traits::vector_storage (s),
                      0, // traits::matrix_storage (u),
                      1, // traits::leading_dimension (u),
                      0, // traits::matrix_storage (vt),
                      1, // traits::leading_dimension (vt),
-                     traits::vector_storage (w),  
-                     traits::vector_size (w),  
-                     traits::vector_storage (rw),  
+                     traits::vector_storage (w),
+                     traits::vector_size (w),
+                     traits::vector_storage (rw),
                      &info);
-      return info; 
+      return info;
     }
 
-#endif 
+#endif
 
   } // namespace lapack
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/hbev.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/hbev.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/hbev.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -20,23 +20,23 @@
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Eigendecomposition of a banded Hermitian matrix.
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * hbev() computes the eigenvalues and optionally the associated
      * eigenvectors of a banded Hermitian matrix A. A matrix is Hermitian
      * when herm( A ) == A. When A is real, a Hermitian matrix is also
@@ -70,51 +70,51 @@
      * When uplo=='L', the (i,j) element with j>=i is in position  (i-j) + j * (KD+1).
      *
      * The matrix A is thus a rectangular matrix with KD+1 rows and N columns.
-     */ 
+     */
 
     namespace detail {
-      inline 
+      inline
       void hbev (char const jobz, char const uplo, int const n, int const kd,
                  float* ab, int const ldab, float* w, float* z, int const ldz,
-                 float* work, int& info) 
+                 float* work, int& info)
       {
-	      //for (int i=0; i<n*kd; ++i) std::cout << *(ab+i) << " " ;
-	      //std::cout << "\n" ;
+              //for (int i=0; i<n*kd; ++i) std::cout << *(ab+i) << " " ;
+              //std::cout << "\n" ;
         LAPACK_SSBEV (&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz,
                       work, &info);
       }
 
-      inline 
+      inline
       void hbev (char const jobz, char const uplo, int const n, int const kd,
                  double* ab, int const ldab, double* w, double* z, int const ldz,
-                 double* work, int& info) 
+                 double* work, int& info)
       {
         LAPACK_DSBEV (&jobz, &uplo, &n, &kd, ab, &ldab, w, z, &ldz,
                       work, &info);
       }
 
-      inline 
+      inline
       void hbev (char const jobz, char const uplo, int const n, int const kd,
                  traits::complex_f* ab, int const ldab, float* w,
                  traits::complex_f* z, int const ldz,
-                 traits::complex_f* work, float* rwork, int& info) 
+                 traits::complex_f* work, float* rwork, int& info)
       {
         LAPACK_CHBEV (&jobz, &uplo, &n, &kd, traits::complex_ptr(ab), &ldab,
                       w, traits::complex_ptr(z), &ldz,
                       traits::complex_ptr(work), rwork, &info);
       }
 
-      inline 
+      inline
       void hbev (char const jobz, char const uplo, int const n, int const kd,
                  traits::complex_d* ab, int const ldab, double* w,
                  traits::complex_d* z, int const ldz,
-                 traits::complex_d* work, double* rwork, int& info) 
+                 traits::complex_d* work, double* rwork, int& info)
       {
         LAPACK_ZHBEV (&jobz, &uplo, &n, &kd, traits::complex_ptr(ab), &ldab,
                       w, traits::complex_ptr(z), &ldz,
                       traits::complex_ptr(work), rwork, &info);
       }
-    } 
+    }
 
 
     namespace detail {
@@ -203,7 +203,7 @@
                    info );
           }
        }; // Hbev< 2 >
-    
+
 
 
        /// Compute eigendecomposition of the banded Hermitian matrix ab.
@@ -222,12 +222,12 @@
        ///                           vector_size( rwork ) >= 3*matrix_size1( a )-2.
        template <typename AB, typename Z, typename W, typename Work>
        int hbev( char const jobz, AB& ab, W& w, Z& z, Work work ) {
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
          BOOST_STATIC_ASSERT((boost::is_same<
-           typename traits::matrix_traits<AB>::matrix_structure, 
+           typename traits::matrix_traits<AB>::matrix_structure,
            traits::hermitian_t
-         >::value)); 
-#endif 
+         >::value));
+#endif
 
          typedef typename AB::value_type                            value_type ;
 
@@ -236,7 +236,7 @@
          assert (n == traits::vector_size (w));
          assert ( jobz=='N' || jobz=='V' );
 
-         int info ; 
+         int info ;
          detail::Hbev< n_workspace_args<value_type>::value >() (jobz,
                        traits::matrix_uplo_tag( ab ), n,
                        traits::matrix_upper_bandwidth(ab),
@@ -246,7 +246,7 @@
                        traits::matrix_storage (z),
                        traits::leading_dimension (z),
                        work, info);
-	 return info ;
+         return info ;
        } // hbev()
        
        } // namespace detail
@@ -265,12 +265,12 @@
        inline
        int hbev (AB& ab, W& w, Z& z, Work work) {
          BOOST_STATIC_ASSERT((boost::is_same<
-           typename traits::matrix_traits<Z>::matrix_structure, 
+           typename traits::matrix_traits<Z>::matrix_structure,
            traits::general_t
-         >::value)); 
+         >::value));
          int const n = traits::matrix_size2 (ab);
-          assert (n == traits::matrix_size1 (z)); 
-          assert (n == traits::matrix_size2 (z)); 
+          assert (n == traits::matrix_size1 (z));
+          assert (n == traits::matrix_size2 (z));
           return detail::hbev( 'V', ab, w, z, work );
        } // hbev()
 
@@ -278,4 +278,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/hbevx.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/hbevx.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/hbevx.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  * Copyright Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  * Copyright Thomas Klimpel 2008
  *
@@ -7,7 +7,7 @@
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -21,13 +21,13 @@
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -37,7 +37,7 @@
     // 
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * hbevx() computes the eigenvalues and optionally the associated
      * eigenvectors of a banded Hermitian matrix A. A matrix is Hermitian
      * when herm( A ) == A. When A is real, a Hermitian matrix is also
@@ -60,17 +60,17 @@
      * When uplo=='L', the (i,j) element with j>=i is in position  (i-j) + j * (KD+1).
      *
      * The matrix A is thus a rectangular matrix with KD+1 rows and N columns.
-     */ 
+     */
 
     namespace detail {
-      inline 
+      inline
       void hbevx (
         char const jobz, char const range, char const uplo, int const n, int const kd,
         float* ab, int const ldab, float* q, int const ldq,
         float const vl, float const vu, int const il, int const iu,
         float const abstol, int& m,
         float* w, float* z, int const ldz,
-        float* work, int* iwork, int* ifail, int& info) 
+        float* work, int* iwork, int* ifail, int& info)
       {
         LAPACK_SSBEVX (
           &jobz, &range, &uplo, &n, &kd, ab, &ldab, q, &ldq,
@@ -79,14 +79,14 @@
           work, iwork, ifail, &info);
       }
 
-      inline 
+      inline
       void hbevx (
         char const jobz, char const range, char const uplo, int const n, int const kd,
         double* ab, int const ldab, double* q, int const ldq,
         double const vl, double const vu, int const il, int const iu,
         double const abstol, int& m,
         double* w, double* z, int const ldz,
-        double* work, int* iwork, int* ifail, int& info) 
+        double* work, int* iwork, int* ifail, int& info)
       {
         LAPACK_DSBEVX (
           &jobz, &range, &uplo, &n, &kd, ab, &ldab, q, &ldq,
@@ -95,14 +95,14 @@
           work, iwork, ifail, &info);
       }
 
-      inline 
+      inline
       void hbevx (
         char const jobz, char const range, char const uplo, int const n, int const kd,
         traits::complex_f* ab, int const ldab, traits::complex_f* q, int const ldq,
         float const vl, float const vu, int const il, int const iu,
         float const abstol, int& m,
         float* w, traits::complex_f* z, int const ldz,
-        traits::complex_f* work, float* rwork, int* iwork, int* ifail, int& info) 
+        traits::complex_f* work, float* rwork, int* iwork, int* ifail, int& info)
       {
         LAPACK_CHBEVX (
           &jobz, &range, &uplo, &n, &kd, traits::complex_ptr(ab), &ldab,
@@ -112,14 +112,14 @@
           traits::complex_ptr(work), rwork, iwork, ifail, &info);
       }
 
-      inline 
+      inline
       void hbevx (
         char const jobz, char const range, char const uplo, int const n, int const kd,
         traits::complex_d* ab, int const ldab, traits::complex_d* q, int const ldq,
         double const vl, double const vu, int const il, int const iu,
         double const abstol, int& m,
         double* w, traits::complex_d* z, int const ldz,
-        traits::complex_d* work, double* rwork, int* iwork, int* ifail, int& info) 
+        traits::complex_d* work, double* rwork, int* iwork, int* ifail, int& info)
       {
         LAPACK_ZHBEVX (
           &jobz, &range, &uplo, &n, &kd, traits::complex_ptr(ab), &ldab,
@@ -128,7 +128,7 @@
           w, traits::complex_ptr(z), &ldz,
           traits::complex_ptr(work), rwork, iwork, ifail, &info);
       }
-    } 
+    }
 
 
     namespace detail {
@@ -259,28 +259,28 @@
     template <typename AB, typename Q, typename R, typename Z, typename W, typename IFail, typename Work>
     int hbevx( char const jobz, char const range, AB& ab, Q& q, R vl, R vu, int il, int iu, R abstol, int& m,
       W& w, Z& z, IFail& ifail, Work work ) {
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<AB>::matrix_structure, 
+        typename traits::matrix_traits<AB>::matrix_structure,
         traits::hermitian_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       typedef typename AB::value_type                            value_type ;
 
       int const n = traits::matrix_size2 (ab);
-      assert (n == traits::matrix_size1 (z)); 
+      assert (n == traits::matrix_size1 (z));
       assert (n == traits::vector_size (w));
       assert (n == traits::vector_size (ifail));
       assert ( jobz=='N' || jobz=='V' );
 
-      int info ; 
+      int info ;
       detail::Hbevx< n_workspace_args<value_type>::value >() (jobz, range,
         traits::matrix_uplo_tag( ab ), n,
         traits::matrix_upper_bandwidth(ab),
-        traits::matrix_storage (ab), 
+        traits::matrix_storage (ab),
         traits::leading_dimension (ab),
-        traits::matrix_storage (q), 
+        traits::matrix_storage (q),
         traits::leading_dimension (q),
         vl, vu, il, iu, abstol, m,
         traits::vector_storage (w),
Modified: sandbox/boost/numeric/bindings/lapack/heev.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/heev.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/heev.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -21,23 +21,23 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Eigendecomposition of a complex Hermitian matrix A = Q * D * Q'
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * heev() computes the eigendecomposition of a N x N matrix
      * A = Q * D * Q',  where Q is a N x N unitary matrix and
      * D is a diagonal matrix. The diagonal element D(i,i) is an
@@ -52,63 +52,63 @@
      *           'N' : do not compute eigenvectors
      *    uplo : 'U' : only the upper triangular part of A is used on input.
      *           'L' : only the lower triangular part of A is used on input.
-     */ 
+     */
 
     namespace detail {
 
-      inline 
+      inline
       void heev (char const jobz, char const uplo, int const n,
-		 traits::complex_f* a, int const lda,
+                 traits::complex_f* a, int const lda,
                  float* w, traits::complex_f* work, int const lwork,
-                 float* rwork, int& info) 
+                 float* rwork, int& info)
       {
         LAPACK_CHEEV (&jobz, &uplo, &n,
-		      traits::complex_ptr(a), &lda, w,
-		      traits::complex_ptr(work), &lwork,
-		      rwork, &info);
+                      traits::complex_ptr(a), &lda, w,
+                      traits::complex_ptr(work), &lwork,
+                      rwork, &info);
       }
 
-      inline 
+      inline
       void heev (char const jobz, char const uplo, int const n,
-		 traits::complex_d* a, int const lda,
+                 traits::complex_d* a, int const lda,
                  double* w, traits::complex_d* work, int const lwork,
-                 double* rwork, int& info) 
+                 double* rwork, int& info)
       {
         LAPACK_ZHEEV (&jobz, &uplo, &n,
-		      traits::complex_ptr(a), &lda, w,
-		      traits::complex_ptr(work), &lwork,
-		      rwork, &info);
+                      traits::complex_ptr(a), &lda, w,
+                      traits::complex_ptr(work), &lwork,
+                      rwork, &info);
       }
 
 
       template <typename A, typename W, typename Work, typename RWork>
       int heev (char jobz, char uplo, A& a, W& w, Work& work, RWork& rwork) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<A>::matrix_structure, 
+          typename traits::matrix_traits<A>::matrix_structure,
           traits::general_t
-        >::value)); 
-#endif 
+        >::value));
+#endif
 
         int const n = traits::matrix_size1 (a);
-        assert (traits::matrix_size2 (a)==n); 
-        assert (traits::vector_size (w)==n); 
-        assert (2*n-1 <= traits::vector_size (work)); 
-        assert (3*n-2 <= traits::vector_size (rwork)); 
+        assert (traits::matrix_size2 (a)==n);
+        assert (traits::vector_size (w)==n);
+        assert (2*n-1 <= traits::vector_size (work));
+        assert (3*n-2 <= traits::vector_size (rwork));
         assert ( uplo=='U' || uplo=='L' );
         assert ( jobz=='N' || jobz=='V' );
 
-        int info; 
+        int info;
         detail::heev (jobz, uplo, n,
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (w),  
+                     traits::vector_storage (w),
                      traits::vector_storage (work),
                      traits::vector_size (work),
                      traits::vector_storage (rwork),
                      info);
-        return info; 
+        return info;
       }
     } // namespace detail
 
@@ -156,4 +156,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/heevd.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/heevd.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/heevd.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  * Copyright Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  * Copyright Thomas Klimpel 2008
  *
@@ -250,7 +250,7 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<A>::matrix_structure, 
+        typename traits::matrix_traits<A>::matrix_structure,
         traits::general_t
       >::value));
 #endif
@@ -261,7 +261,7 @@
       assert ( uplo=='U' || uplo=='L' );
       assert ( jobz=='N' || jobz=='V' );
 
-      int info; 
+      int info;
       detail::Heevd< n_workspace_args<typename A::value_type>::value >() (
         jobz, uplo, n,
         traits::matrix_storage (a),
Modified: sandbox/boost/numeric/bindings/lapack/heevx.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/heevx.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/heevx.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  * Copyright Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  * Copyright Thomas Klimpel 2008
  *
@@ -283,7 +283,7 @@
       typedef typename A::value_type                               value_type ;
       typedef typename traits::type_traits< value_type >::real_type real_type ;
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<A>::matrix_structure, 
+        typename traits::matrix_traits<A>::matrix_structure,
         traits::hermitian_t
       >::value || (boost::is_same<
         typename traits::matrix_traits<A>::matrix_structure,
@@ -300,7 +300,7 @@
       assert ( uplo=='U' || uplo=='L' );
       assert ( jobz=='N' || jobz=='V' );
 
-      int info; 
+      int info;
       detail::Heevx< n_workspace_args<typename A::value_type>::value >() (
         jobz, range, uplo, n,
         traits::matrix_storage (a),
Modified: sandbox/boost/numeric/bindings/lapack/hegv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/hegv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/hegv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -15,25 +15,25 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // hegv
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      *  hegv() computes all the eigenvalues, and optionally, the eigenvectors
      *  of a real generalized symmetric-definite eigenproblem, of the form
      *  A*x=(lambda)*B*x,  A*Bx=(lambda)*x,  or B*A*x=(lambda)*x.
@@ -117,38 +117,38 @@
      *                    The factorization of B could not be completed and
      *                    no eigenvalues or eigenvectors were computed.
      *
-     */ 
+     */
 
     namespace detail {
 
-      inline 
-      void hegv (int const itype, char const jobz, char const uplo, int const n, 
-                 float *a, int const lda, float *b, int const ldb, 
+      inline
+      void hegv (int const itype, char const jobz, char const uplo, int const n,
+                 float *a, int const lda, float *b, int const ldb,
                  float *w, float *work, int const lwork, int& info)
       {
         LAPACK_SSYGV (&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info);
       }
 
-      inline 
-      void hegv (int const itype, char const jobz, char const uplo, int const n, 
-                 double *a, int const lda, double *b, int const ldb, 
+      inline
+      void hegv (int const itype, char const jobz, char const uplo, int const n,
+                 double *a, int const lda, double *b, int const ldb,
                  double *w, double *work, int const lwork, int& info)
       {
         LAPACK_DSYGV (&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info);
       }
 
-      inline 
-      void hegv (int const itype, char const jobz, char const uplo, int const n, 
-                 traits::complex_f *a, int const lda, traits::complex_f *b, int const ldb, 
+      inline
+      void hegv (int const itype, char const jobz, char const uplo, int const n,
+                 traits::complex_f *a, int const lda, traits::complex_f *b, int const ldb,
                  float *w, traits::complex_f *work, int const lwork, float *rwork, int& info)
       {
         LAPACK_CHEGV (&itype, &jobz, &uplo, &n, traits::complex_ptr(a), &lda,
           traits::complex_ptr(b), &ldb, w, traits::complex_ptr(work), &lwork, rwork, &info);
       }
 
-      inline 
-      void hegv (int const itype, char const jobz, char const uplo, int const n, 
-                 traits::complex_d *a, int const lda, traits::complex_d *b, int const ldb, 
+      inline
+      void hegv (int const itype, char const jobz, char const uplo, int const n,
+                 traits::complex_d *a, int const lda, traits::complex_d *b, int const ldb,
                  double *w, traits::complex_d *work, int const lwork, double *rwork, int& info)
       {
         LAPACK_ZHEGV (&itype, &jobz, &uplo, &n, traits::complex_ptr(a), &lda,
@@ -167,8 +167,8 @@
         // Function that allocates work arrays
         template <typename T, typename R>
         void operator() (
-                 int const itype, char const jobz, char const uplo, int const n, 
-                 T *a, int const lda, T *b, int const ldb, 
+                 int const itype, char const jobz, char const uplo, int const n,
+                 T *a, int const lda, T *b, int const ldb,
                  R *w, optimal_workspace, int& info ) {
 
            traits::detail::array<T> work( std::max<int>(1,34*n) );
@@ -179,8 +179,8 @@
         // Function that allocates work arrays
         template <typename T, typename R>
         void operator() (
-                 int const itype, char const jobz, char const uplo, int const n, 
-                 T *a, int const lda, T *b, int const ldb, 
+                 int const itype, char const jobz, char const uplo, int const n,
+                 T *a, int const lda, T *b, int const ldb,
                  R *w, minimal_workspace, int& info ) {
 
            traits::detail::array<T> work( std::max<int>(1,3*n-1) );
@@ -191,8 +191,8 @@
         // Function that uses given workarrays
         template <typename T, typename R, typename W>
         void operator() (
-                 int const itype, char const jobz, char const uplo, int const n, 
-                 T *a, int const lda, T *b, int const ldb, 
+                 int const itype, char const jobz, char const uplo, int const n,
+                 T *a, int const lda, T *b, int const ldb,
                  R *w, detail::workspace1<W> work, int& info ) {
 
            assert (traits::vector_size (work.w_) >= 3*n-1);
@@ -208,8 +208,8 @@
         // Function that allocates work arrays
         template <typename T, typename R>
         void operator() (
-                 int const itype, char const jobz, char const uplo, int const n, 
-                 T *a, int const lda, T *b, int const ldb, 
+                 int const itype, char const jobz, char const uplo, int const n,
+                 T *a, int const lda, T *b, int const ldb,
                  R *w, optimal_workspace, int& info ) {
 
            traits::detail::array<T> work( std::max<int>(1,34*n) );
@@ -222,8 +222,8 @@
         // Function that allocates work arrays
         template <typename T, typename R>
         void operator() (
-                 int const itype, char const jobz, char const uplo, int const n, 
-                 T *a, int const lda, T *b, int const ldb, 
+                 int const itype, char const jobz, char const uplo, int const n,
+                 T *a, int const lda, T *b, int const ldb,
                  R *w, minimal_workspace, int& info ) {
 
            traits::detail::array<T> work( std::max<int>(1,2*n-1) );
@@ -236,8 +236,8 @@
         // Function that uses given workarrays
         template <typename T, typename R, typename WC, typename WR>
         void operator() (
-                 int const itype, char const jobz, char const uplo, int const n, 
-                 T *a, int const lda, T *b, int const ldb, 
+                 int const itype, char const jobz, char const uplo, int const n,
+                 T *a, int const lda, T *b, int const ldb,
                  R *w, detail::workspace2<WC,WR> work, int& info ) {
 
            assert (traits::vector_size (work.w_) >= 2*n-1);
@@ -252,23 +252,23 @@
     template <typename A, typename B, typename W, typename Work>
     int hegv (int itype, char jobz, char uplo, A& a, B& b, W& w, Work work = optimal_workspace()) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<A>::matrix_structure, 
+        typename traits::matrix_traits<A>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
 #endif 
 
       int const n = traits::matrix_size1 (a);
       assert ( n>0 );
-      assert (traits::matrix_size2 (a)==n); 
-      assert (traits::leading_dimension (a)>=n); 
-      assert (traits::vector_size (w)==n); 
+      assert (traits::matrix_size2 (a)==n);
+      assert (traits::leading_dimension (a)>=n);
+      assert (traits::vector_size (w)==n);
 
       int const nb = traits::matrix_size1 (b);
       assert ( nb>0 );
-      assert (traits::matrix_size2 (b)==nb); 
-      assert (traits::leading_dimension (b)>=nb); 
+      assert (traits::matrix_size2 (b)==nb);
+      assert (traits::leading_dimension (b)>=nb);
       assert ( n== nb);
 
       assert ( uplo=='U' || uplo=='L' );
@@ -280,14 +280,14 @@
       int info;
       detail::Hegv< n_workspace_args<typename A::value_type>::value >() (
                    itype, jobz, uplo, n,
-                   traits::matrix_storage (a), 
+                   traits::matrix_storage (a),
                    traits::leading_dimension (a),
-                   traits::matrix_storage (b), 
+                   traits::matrix_storage (b),
                    traits::leading_dimension (b),
-                   traits::vector_storage (w),  
+                   traits::vector_storage (w),
                    work,
                    info);
-      return info; 
+      return info;
     }
   }
 
Modified: sandbox/boost/numeric/bindings/lapack/hesv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/hesv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/hesv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -20,15 +20,15 @@
 #include <boost/numeric/bindings/lapack/ilaenv.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -41,19 +41,19 @@
 
     namespace detail {
 
-      inline 
-      int hetrf_block (traits::complex_f, 
-                       int const ispec, char const ul, int const n) 
+      inline
+      int hetrf_block (traits::complex_f,
+                       int const ispec, char const ul, int const n)
       {
-        char ul2[2] = "x"; ul2[0] = ul; 
-        return ilaenv (ispec, "CHETRF", ul2, n); 
+        char ul2[2] = "x"; ul2[0] = ul;
+        return ilaenv (ispec, "CHETRF", ul2, n);
       }
-      inline 
-      int hetrf_block (traits::complex_d, 
-                       int const ispec, char const ul, int const n) 
+      inline
+      int hetrf_block (traits::complex_d,
+                       int const ispec, char const ul, int const n)
       {
-        char ul2[2] = "x"; ul2[0] = ul; 
-        return ilaenv (ispec, "ZHETRF", ul2, n); 
+        char ul2[2] = "x"; ul2[0] = ul;
+        return ilaenv (ispec, "ZHETRF", ul2, n);
       }
 
     }
@@ -64,23 +64,23 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (q == 'O' || q == 'M');
+      assert (ul == 'U' || ul == 'L');
 
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-      typedef typename HermA::value_type val_t; 
-#endif 
-      int ispec = (q == 'O' ? 1 : 2); 
-      return detail::hetrf_block (val_t(), ispec, ul, n); 
+      typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+      typedef typename HermA::value_type val_t;
+#endif
+      int ispec = (q == 'O' ? 1 : 2);
+      return detail::hetrf_block (val_t(), ispec, ul, n);
     }
 
     template <typename HermA>
@@ -88,23 +88,23 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
+      assert (q == 'O' || q == 'M');
 
       char ul = traits::matrix_uplo_tag (a);
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-      typedef typename HermA::value_type val_t; 
-#endif 
-      int ispec = (q == 'O' ? 1 : 2); 
-      return detail::hetrf_block (val_t(), ispec, ul, n); 
+      typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+      typedef typename HermA::value_type val_t;
+#endif
+      int ispec = (q == 'O' ? 1 : 2);
+      return detail::hetrf_block (val_t(), ispec, ul, n);
     }
 
     template <typename HermA>
@@ -112,27 +112,27 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (q == 'O' || q == 'M');
+      assert (ul == 'U' || ul == 'L');
 
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-      typedef typename HermA::value_type val_t; 
-#endif 
-      int lw = -13; 
-      if (q == 'M') 
+      typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+      typedef typename HermA::value_type val_t;
+#endif
+      int lw = -13;
+      if (q == 'M')
         lw = 1;
-      if (q == 'O') 
-        lw = n * detail::hetrf_block (val_t(), 1, ul, n); 
-      return lw; 
+      if (q == 'O')
+        lw = n * detail::hetrf_block (val_t(), 1, ul, n);
+      return lw;
     }
 
     template <typename HermA>
@@ -140,34 +140,34 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
+      assert (q == 'O' || q == 'M');
 
       char ul = traits::matrix_uplo_tag (a);
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-      typedef typename HermA::value_type val_t; 
-#endif 
-      int lw = -13; 
-      if (q == 'M') 
+      typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+      typedef typename HermA::value_type val_t;
+#endif
+      int lw = -13;
+      if (q == 'M')
         lw = 1;
-      if (q == 'O') 
-        lw = n * detail::hetrf_block (val_t(), 1, ul, n); 
-      return lw; 
+      if (q == 'O')
+        lw = n * detail::hetrf_block (val_t(), 1, ul, n);
+      return lw;
     }
 
 
     template <typename HermA>
     inline
     int hesv_work (char const q, char const ul, HermA const& a) {
-      return hetrf_work (q, ul, a); 
+      return hetrf_work (q, ul, a);
     }
 
     template <typename HermA>
@@ -176,42 +176,42 @@
 
 
     /*
-     * hesv() computes the solution to a system of linear equations 
-     * A * X = B, where A is an N-by-N Hermitian matrix and X and B 
+     * hesv() computes the solution to a system of linear equations
+     * A * X = B, where A is an N-by-N Hermitian matrix and X and B
      * are N-by-NRHS matrices.
      *
      * The diagonal pivoting method is used to factor A as
-     *   A = U * D * U^H,  if UPLO = 'U', 
+     *   A = U * D * U^H,  if UPLO = 'U',
      *   A = L * D * L^H,  if UPLO = 'L',
-     * where  U (or L) is a product of permutation and unit upper 
-     * (lower) triangular matrices, and D is Hermitian and block 
-     * diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored 
+     * where  U (or L) is a product of permutation and unit upper
+     * (lower) triangular matrices, and D is Hermitian and block
+     * diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored
      * form of A is then used to solve the system of equations A * X = B.
      */
 
     namespace detail {
 
-      inline 
+      inline
       void hesv (char const uplo, int const n, int const nrhs,
-                 traits::complex_f* a, int const lda, int* ipiv,  
-                 traits::complex_f* b, int const ldb, 
-                 traits::complex_f* w, int const lw, int* info) 
+                 traits::complex_f* a, int const lda, int* ipiv,
+                 traits::complex_f* b, int const ldb,
+                 traits::complex_f* w, int const lw, int* info)
       {
-        LAPACK_CHESV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
-                      traits::complex_ptr (b), &ldb, 
+        LAPACK_CHESV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
+                      traits::complex_ptr (b), &ldb,
                       traits::complex_ptr (w), &lw, info);
       }
 
-      inline 
+      inline
       void hesv (char const uplo, int const n, int const nrhs,
-                 traits::complex_d* a, int const lda, int* ipiv, 
-                 traits::complex_d* b, int const ldb, 
-                 traits::complex_d* w, int const lw, int* info) 
+                 traits::complex_d* a, int const lda, int* ipiv,
+                 traits::complex_d* b, int const ldb,
+                 traits::complex_d* w, int const lw, int* info)
       {
-        LAPACK_ZHESV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
-                      traits::complex_ptr (b), &ldb, 
+        LAPACK_ZHESV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
+                      traits::complex_ptr (b), &ldb,
                       traits::complex_ptr (w), &lw, info);
       }
 
@@ -219,21 +219,21 @@
       int hesv (char const ul, HermA& a, IVec& i, MatrB& b, Work& w) {
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::matrix_size1 (b)); 
-        assert (n == traits::vector_size (i)); 
-
-        int info; 
-        hesv (ul, n, traits::matrix_size2 (b), 
-              traits::matrix_storage (a), 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::matrix_size1 (b));
+        assert (n == traits::vector_size (i));
+
+        int info;
+        hesv (ul, n, traits::matrix_size2 (b),
+              traits::matrix_storage (a),
               traits::leading_dimension (a),
-              traits::vector_storage (i),  
+              traits::vector_storage (i),
               traits::matrix_storage (b),
               traits::leading_dimension (b),
-              traits::vector_storage (w), 
-              traits::vector_size (w), 
+              traits::vector_storage (w),
+              traits::vector_size (w),
               &info);
-        return info; 
+        return info;
       }
 
     }
@@ -241,22 +241,22 @@
     template <typename HermA, typename MatrB, typename IVec, typename Work>
     int hesv (char const ul, HermA& a, IVec& i, MatrB& b, Work& w) {
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const lw = traits::vector_size (w); 
-      assert (lw >= 1); 
-      return detail::hesv (ul, a, i, b, w); 
+      int const lw = traits::vector_size (w);
+      assert (lw >= 1);
+      return detail::hesv (ul, a, i, b, w);
     }
 
     template <typename HermA, typename MatrB, typename IVec, typename Work>
@@ -264,125 +264,125 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const lw = traits::vector_size (w); 
-      assert (lw >= 1); 
+      int const lw = traits::vector_size (w);
+      assert (lw >= 1);
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::hesv (uplo, a, i, b, w); 
+      return detail::hesv (uplo, a, i, b, w);
     }
 
     template <typename HermA, typename MatrB>
     int hesv (char const ul, HermA& a, MatrB& b) {
-      // with 'internal' pivot and work vectors 
+      // with 'internal' pivot and work vectors
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const n = traits::matrix_size1 (a); 
-      int info = -101; 
-      traits::detail::array<int> i (n); 
+      int const n = traits::matrix_size1 (a);
+      int info = -101;
+      traits::detail::array<int> i (n);
 
       if (i.valid()) {
-        info = -102; 
-        int lw = hetrf_work ('O', ul, a); 
-        assert (lw >= 1); // paranoia ? 
+        info = -102;
+        int lw = hetrf_work ('O', ul, a);
+        assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-        typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-        typedef typename HermA::value_type val_t; 
-#endif 
-        traits::detail::array<val_t> w (lw); 
-        if (w.valid()) 
-          info = detail::hesv (ul, a, i, b, w); 
+        typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+        typedef typename HermA::value_type val_t;
+#endif
+        traits::detail::array<val_t> w (lw);
+        if (w.valid())
+          info = detail::hesv (ul, a, i, b, w);
       }
-      return info; 
+      return info;
     }
 
     template <typename HermA, typename MatrB>
     int hesv (HermA& a, MatrB& b) {
-      // with 'internal' pivot and work vectors 
+      // with 'internal' pivot and work vectors
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const n = traits::matrix_size1 (a); 
+      int const n = traits::matrix_size1 (a);
       char uplo = traits::matrix_uplo_tag (a);
-      int info = -101; 
-      traits::detail::array<int> i (n); 
+      int info = -101;
+      traits::detail::array<int> i (n);
 
       if (i.valid()) {
-        info = -102; 
-        int lw = hetrf_work ('O', a); 
-        assert (lw >= 1); // paranoia ? 
+        info = -102;
+        int lw = hetrf_work ('O', a);
+        assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-        typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-        typedef typename HermA::value_type val_t; 
-#endif 
-        traits::detail::array<val_t> w (lw); 
-        w.resize (lw); 
-        if (w.valid()) 
-          info = detail::hesv (uplo, a, i, b, w); 
+        typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+        typedef typename HermA::value_type val_t;
+#endif
+        traits::detail::array<val_t> w (lw);
+        w.resize (lw);
+        if (w.valid())
+          info = detail::hesv (uplo, a, i, b, w);
       }
-      return info; 
+      return info;
     }
 
 
     /*
      * hetrf() computes the factorization of a Hermitian matrix A using
-     * the  Bunch-Kaufman diagonal pivoting method. The form of the 
+     * the  Bunch-Kaufman diagonal pivoting method. The form of the
      * factorization is
      *    A = U * D * U^H  or  A = L * D * L^H
-     * where U (or L) is a product of permutation and unit upper (lower)  
-     * triangular matrices, and D is Hermitian and block diagonal with 
+     * where U (or L) is a product of permutation and unit upper (lower)
+     * triangular matrices, and D is Hermitian and block diagonal with
      * 1-by-1 and 2-by-2 diagonal blocks.
      */
 
     namespace detail {
 
-      inline 
-      void hetrf (char const uplo, int const n, 
-                  traits::complex_f* a, int const lda, int* ipiv,  
-                  traits::complex_f* w, int const lw, int* info) 
+      inline
+      void hetrf (char const uplo, int const n,
+                  traits::complex_f* a, int const lda, int* ipiv,
+                  traits::complex_f* w, int const lw, int* info)
       {
-        LAPACK_CHETRF (&uplo, &n, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CHETRF (&uplo, &n,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (w), &lw, info);
       }
 
-      inline 
-      void hetrf (char const uplo, int const n, 
-                  traits::complex_d* a, int const lda, int* ipiv, 
-                  traits::complex_d* w, int const lw, int* info) 
+      inline
+      void hetrf (char const uplo, int const n,
+                  traits::complex_d* a, int const lda, int* ipiv,
+                  traits::complex_d* w, int const lw, int* info)
       {
-        LAPACK_ZHETRF (&uplo, &n, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZHETRF (&uplo, &n,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (w), &lw, info);
       }
 
@@ -390,17 +390,17 @@
       int hetrf (char const ul, HermA& a, IVec& i, Work& w) {
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::vector_size (i)); 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::vector_size (i));
 
-        int info; 
-        hetrf (ul, n, traits::matrix_storage (a), 
+        int info;
+        hetrf (ul, n, traits::matrix_storage (a),
                traits::leading_dimension (a),
-               traits::vector_storage (i),  
-               traits::vector_storage (w), 
-               traits::vector_size (w), 
+               traits::vector_storage (i),
+               traits::vector_storage (w),
+               traits::vector_size (w),
                &info);
-        return info; 
+        return info;
       }
 
     }
@@ -408,18 +408,18 @@
     template <typename HermA, typename IVec, typename Work>
     int hetrf (char const ul, HermA& a, IVec& i, Work& w) {
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const lw = traits::vector_size (w); 
-      assert (lw >= 1); 
-      return detail::hetrf (ul, a, i, w); 
+      int const lw = traits::vector_size (w);
+      assert (lw >= 1);
+      return detail::hetrf (ul, a, i, w);
     }
 
     template <typename HermA, typename IVec, typename Work>
@@ -427,99 +427,99 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
 #endif
 
-      int const lw = traits::vector_size (w); 
-      assert (lw >= 1); 
+      int const lw = traits::vector_size (w);
+      assert (lw >= 1);
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::hetrf (uplo, a, i, w); 
+      return detail::hetrf (uplo, a, i, w);
     }
 
     template <typename HermA, typename Ivec>
     int hetrf (char const ul, HermA& a, Ivec& i) {
       // with 'internal' work vector
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int info = -101; 
-      int lw = hetrf_work ('O', ul, a); 
-      assert (lw >= 1); // paranoia ? 
+      int info = -101;
+      int lw = hetrf_work ('O', ul, a);
+      assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-      typedef typename HermA::value_type val_t; 
-#endif 
-      traits::detail::array<val_t> w (lw); 
-      if (w.valid()) 
-        info = detail::hetrf (ul, a, i, w); 
-      return info; 
+      typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+      typedef typename HermA::value_type val_t;
+#endif
+      traits::detail::array<val_t> w (lw);
+      if (w.valid())
+        info = detail::hetrf (ul, a, i, w);
+      return info;
     }
 
     template <typename HermA, typename Ivec>
     int hetrf (HermA& a, Ivec& i) {
-      // with 'internal' work vector 
+      // with 'internal' work vector
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
 #endif
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info = -101; 
-      int lw = hetrf_work ('O', a); 
-      assert (lw >= 1); // paranoia ? 
+      int info = -101;
+      int lw = hetrf_work ('O', a);
+      assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<HermA>::value_type val_t; 
-#else 
-      typedef typename HermA::value_type val_t; 
-#endif 
-      traits::detail::array<val_t> w (lw); 
-      if (w.valid()) 
-        info = detail::hetrf (uplo, a, i, w); 
-      return info; 
+      typedef typename traits::matrix_traits<HermA>::value_type val_t;
+#else
+      typedef typename HermA::value_type val_t;
+#endif
+      traits::detail::array<val_t> w (lw);
+      if (w.valid())
+        info = detail::hetrf (uplo, a, i, w);
+      return info;
     }
 
 
     /*
-     * hetrs() solves a system of linear equations A*X = B with 
-     * a Hermitian matrix A using the factorization 
+     * hetrs() solves a system of linear equations A*X = B with
+     * a Hermitian matrix A using the factorization
      *    A = U * D * U^H   or  A = L * D * L^H
      * computed by hetrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void hetrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_f const* a, int const lda, 
-                  int const* ipiv,  
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* a, int const lda,
+                  int const* ipiv,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CHETRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CHETRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void hetrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_d const* a, int const lda, 
-                  int const* ipiv, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* a, int const lda,
+                  int const* ipiv,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZHETRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZHETRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -527,26 +527,26 @@
       int hetrs (char const ul, HermA const& a, IVec const& i, MatrB& b) {
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::matrix_size1 (b)); 
-        assert (n == traits::vector_size (i)); 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::matrix_size1 (b));
+        assert (n == traits::vector_size (i));
 
-        int info; 
-        hetrs (ul, n, traits::matrix_size2 (b), 
+        int info;
+        hetrs (ul, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-               traits::matrix_storage (a), 
+               traits::matrix_storage (a),
 #else
-               traits::matrix_storage_const (a), 
-#endif 
+               traits::matrix_storage_const (a),
+#endif
                traits::leading_dimension (a),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-               traits::vector_storage (i),  
+               traits::vector_storage (i),
 #else
-               traits::vector_storage_const (i),  
+               traits::vector_storage_const (i),
 #endif
                traits::matrix_storage (b),
                traits::leading_dimension (b), &info);
-        return info; 
+        return info;
       }
 
     }
@@ -555,20 +555,20 @@
     inline
     int hetrs (char const ul, HermA const& a, IVec const& i, MatrB& b) {
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      return detail::hetrs (ul, a, i, b); 
+      return detail::hetrs (ul, a, i, b);
     }
 
     template <typename HermA, typename MatrB, typename IVec>
@@ -577,17 +577,17 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::hetrs (uplo, a, i, b); 
+      return detail::hetrs (uplo, a, i, b);
     }
 
 
@@ -597,4 +597,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/hpsv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/hpsv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/hpsv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -19,57 +19,57 @@
 #include <boost/numeric/bindings/lapack/lapack.h>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     /////////////////////////////////////////////////////////////////////
     //
     // system of linear equations A * X = B
-    // with A Hermitian indefinite matrix stored in packed format 
+    // with A Hermitian indefinite matrix stored in packed format
     //
     /////////////////////////////////////////////////////////////////////
 
     /*
-     * hpsv() computes the solution to a system of linear equations 
+     * hpsv() computes the solution to a system of linear equations
      * A * X = B, where A is an N-by-N Hermitian matrix in packed
      * storage and X and B are N-by-NRHS matrices.
      *
      * The diagonal pivoting method is used to factor A as
-     *   A = U * D * U^H,  if UPLO = 'U', 
+     *   A = U * D * U^H,  if UPLO = 'U',
      *   A = L * D * L^H,  if UPLO = 'L',
-     * where  U (or L) is a product of permutation and unit upper 
-     * (lower) triangular matrices, and D is Hermitian and block 
-     * diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored 
+     * where  U (or L) is a product of permutation and unit upper
+     * (lower) triangular matrices, and D is Hermitian and block
+     * diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored
      * form of A is then used to solve the system of equations A * X = B.
      */
 
     namespace detail {
 
-      inline 
+      inline
       void hpsv (char const uplo, int const n, int const nrhs,
-                 traits::complex_f* ap, int* ipiv,  
-                 traits::complex_f* b, int const ldb, int* info) 
+                 traits::complex_f* ap, int* ipiv,
+                 traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CHPSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (ap), ipiv, 
+        LAPACK_CHPSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (ap), ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void hpsv (char const uplo, int const n, int const nrhs,
-                 traits::complex_d* ap, int* ipiv, 
-                 traits::complex_d* b, int const ldb, int* info) 
+                 traits::complex_d* ap, int* ipiv,
+                 traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZHPSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (ap), ipiv, 
+        LAPACK_ZHPSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (ap), ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
@@ -78,74 +78,74 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<HermA>::matrix_structure, 
+          typename traits::matrix_traits<HermA>::matrix_structure,
           traits::hermitian_packed_t
         >::value));
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<MatrB>::matrix_structure, 
+          typename traits::matrix_traits<MatrB>::matrix_structure,
           traits::general_t
         >::value));
 #endif
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::matrix_size1 (b)); 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::matrix_size1 (b));
 
         char uplo = traits::matrix_uplo_tag (a);
         int info; 
-        hpsv (uplo, n, traits::matrix_size2 (b), 
-              traits::matrix_storage (a), 
-              traits::vector_storage (i),  
+        hpsv (uplo, n, traits::matrix_size2 (b),
+              traits::matrix_storage (a),
+              traits::vector_storage (i),
               traits::matrix_storage (b),
               traits::leading_dimension (b),
               &info);
-        return info; 
+        return info;
       }
 
     }
 
-    template <typename HermA, typename MatrB, typename IVec> 
+    template <typename HermA, typename MatrB, typename IVec>
     inline
     int hpsv (HermA& a, IVec& i, MatrB& b) {
-      assert (traits::matrix_size1 (a) == traits::vector_size (i)); 
-      return detail::hpsv (a, i, b); 
+      assert (traits::matrix_size1 (a) == traits::vector_size (i));
+      return detail::hpsv (a, i, b);
     }
 
     template <typename HermA, typename MatrB>
     int hpsv (HermA& a, MatrB& b) {
       // with 'internal' pivot vector
 
-      int info = -101; 
-      traits::detail::array<int> i (traits::matrix_size1 (a)); 
+      int info = -101;
+      traits::detail::array<int> i (traits::matrix_size1 (a));
 
-      if (i.valid()) 
-        info = detail::hpsv (a, i, b); 
-      return info; 
+      if (i.valid())
+        info = detail::hpsv (a, i, b);
+      return info;
     }
 
 
     /*
-     * hptrf() computes the factorization of a Hermitian matrix A 
-     * in packed storage using the  Bunch-Kaufman diagonal pivoting 
+     * hptrf() computes the factorization of a Hermitian matrix A
+     * in packed storage using the  Bunch-Kaufman diagonal pivoting
      * method. The form of the factorization is
      *    A = U * D * U^H  or  A = L * D * L^H
-     * where U (or L) is a product of permutation and unit upper (lower)  
-     * triangular matrices, and D is Hermitian and block diagonal with 
+     * where U (or L) is a product of permutation and unit upper (lower)
+     * triangular matrices, and D is Hermitian and block diagonal with
      * 1-by-1 and 2-by-2 diagonal blocks.
      */
 
     namespace detail {
 
-      inline 
-      void hptrf (char const uplo, int const n, 
-                  traits::complex_f* ap, int* ipiv, int* info) 
+      inline
+      void hptrf (char const uplo, int const n,
+                  traits::complex_f* ap, int* ipiv, int* info)
       {
         LAPACK_CHPTRF (&uplo, &n, traits::complex_ptr (ap), ipiv, info);
       }
 
-      inline 
-      void hptrf (char const uplo, int const n, 
-                  traits::complex_d* ap, int* ipiv, int* info) 
+      inline
+      void hptrf (char const uplo, int const n,
+                  traits::complex_d* ap, int* ipiv, int* info)
       {
         LAPACK_ZHPTRF (&uplo, &n, traits::complex_ptr (ap), ipiv, info);
       }
@@ -158,54 +158,54 @@
 
     }
 
-    template <typename HermA, typename IVec> 
+    template <typename HermA, typename IVec>
     int hptrf (HermA& a, IVec& i) {
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_packed_t
       >::value));
 #endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::vector_size (i)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::vector_size (i));
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
-      detail::hptrf (uplo, n, traits::matrix_storage (a), 
+      int info;
+      detail::hptrf (uplo, n, traits::matrix_storage (a),
                      traits::vector_storage (i), &info);
-      return info; 
+      return info;
     }
 
 
     /*
-     * hptrs() solves a system of linear equations A*X = B with 
-     * a Hermitian matrix A in packed storage using the factorization 
+     * hptrs() solves a system of linear equations A*X = B with
+     * a Hermitian matrix A in packed storage using the factorization
      *    A = U * D * U^H   or  A = L * D * L^H
      * computed by hptrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void hptrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_f const* ap, int const* ipiv, 
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* ap, int const* ipiv,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CHPTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (ap), ipiv, 
+        LAPACK_CHPTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (ap), ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void hptrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_d const* ap, int const* ipiv, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* ap, int const* ipiv,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZHPTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (ap), ipiv, 
+        LAPACK_ZHPTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (ap), ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -216,34 +216,34 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<HermA>::matrix_structure, 
+        typename traits::matrix_traits<HermA>::matrix_structure,
         traits::hermitian_packed_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::matrix_size1 (b)); 
-      assert (n == traits::vector_size (i)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::matrix_size1 (b));
+      assert (n == traits::vector_size (i));
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
-      detail::hptrs (uplo, n, traits::matrix_size2 (b), 
+      int info;
+      detail::hptrs (uplo, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::matrix_storage (a), 
-                     traits::vector_storage (i),  
+                     traits::matrix_storage (a),
+                     traits::vector_storage (i),
 #else
-                     traits::matrix_storage_const (a), 
-                     traits::vector_storage_const (i),  
-#endif 
+                     traits::matrix_storage_const (a),
+                     traits::vector_storage_const (i),
+#endif
                      traits::matrix_storage (b),
-                     traits::leading_dimension (b), 
+                     traits::leading_dimension (b),
                      &info);
-        return info; 
+        return info;
     }
 
 
@@ -253,4 +253,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/hseqr.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/hseqr.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/hseqr.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  * Copyright Jeremy Conlin 2008
  *
  * Distributed under the Boost Software License, Version 1.0.
@@ -20,23 +20,23 @@
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Compute eigenvalues of an Hessenberg matrix, H.
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * hseqr() computes the eigenvalues of a Hessenberg matrix H
      * and, optionally, the matrices T and Z from the Schur decomposition
      * H = Z U Z**T, where U is an upper quasi-triangular matrix (the
@@ -46,7 +46,7 @@
      * matrix Q so that this routine can give the Schur factorization
      * of a matrix A which has been reduced to the Hessenberg form H
      * by the orthogonal matrix Q:  A = Q*H*Q**T = (QZ)*U*(QZ)**T.
-     * 
+     *
      * There are two forms of the hseqr function:
      *
      * int hseqr( const char job, A& H, W& w)
@@ -67,18 +67,18 @@
      *           of Schur vectors of H is returned;
      *   = 'V':  Z must contain an orthogonal matrix Q on entry, and
      *           the product Q*Z is returned.
-     * 
-     * H is the Hessenberg matrix whose eigenpairs you're interested 
-     * in. (input/output) On exit, if computation is successful and 
+     *
+     * H is the Hessenberg matrix whose eigenpairs you're interested
+     * in. (input/output) On exit, if computation is successful and
      * job = 'S', then H contains the
      * upper quasi-triangular matrix U from the Schur decomposition
      * (the Schur form); 2-by-2 diagonal blocks (corresponding to
      * complex conjugate pairs of eigenvalues) are returned in
      * standard form, with H(i,i) = H(i+1,i+1) and
-     * H(i+1,i)*H(i,i+1) < 0. If computation is successful and 
-     * job = 'E', the contents of H are unspecified on exit.  
+     * H(i+1,i)*H(i,i+1) < 0. If computation is successful and
+     * job = 'E', the contents of H are unspecified on exit.
      *
-     * w (output) contains the computed eigenvalues of H which is the diagonal 
+     * w (output) contains the computed eigenvalues of H which is the diagonal
      * of U. Must be a complex object.
      *
      * Z. (input/output)
@@ -89,67 +89,67 @@
      * N-by-N matrix Q, which is assumed to be equal to the unit
      * matrix . On exit, if computation is successful, Z contains Q*Z.
      *
-     */ 
+     */
 
     namespace detail {
         // float
         inline
-        int hseqr_backend(const char* job, const char* compz, const int* n, 
-                const int ilo, const int ihi, float* H, const int ldH, 
+        int hseqr_backend(const char* job, const char* compz, const int* n,
+                const int ilo, const int ihi, float* H, const int ldH,
                 float* wr, float* wi, float* Z, const int ldz, float* work,
                 const int* lwork){
             int info;
-//          std::cout << "I'm inside lapack::detail::hseqr_backend for floats" 
+//          std::cout << "I'm inside lapack::detail::hseqr_backend for floats"
 //              << std::endl;
-            LAPACK_SHSEQR(job, compz, n, &ilo, &ihi, H, &ldH, wr, wi, 
+            LAPACK_SHSEQR(job, compz, n, &ilo, &ihi, H, &ldH, wr, wi,
                     Z, &ldz, work, lwork, &info);
             return info;
         }
 
         // double
         inline
-        int hseqr_backend(const char* job, const char* compz, const int* n, 
-                const int ilo, const int ihi, double* H, const int ldH, 
+        int hseqr_backend(const char* job, const char* compz, const int* n,
+                const int ilo, const int ihi, double* H, const int ldH,
                 double* wr, double* wi, double* Z, const int ldz, double* work,
                 const int* lwork){
             int info;
-//          std::cout << "I'm inside lapack::detail::hseqr_backend for doubles" 
+//          std::cout << "I'm inside lapack::detail::hseqr_backend for doubles"
 //              << std::endl;
-            LAPACK_DHSEQR(job, compz, n, &ilo, &ihi, H, &ldH, wr, wi, 
+            LAPACK_DHSEQR(job, compz, n, &ilo, &ihi, H, &ldH, wr, wi,
                     Z, &ldz, work, lwork, &info);
             return info;
         }
 
         // complex<float>
         inline
-        int hseqr_backend(const char* job, const char* compz, int* n, 
-                const int ilo, const int ihi, traits::complex_f* H, const int ldH, 
-                traits::complex_f* w, traits::complex_f* Z, int ldz, 
+        int hseqr_backend(const char* job, const char* compz, int* n,
+                const int ilo, const int ihi, traits::complex_f* H, const int ldH,
+                traits::complex_f* w, traits::complex_f* Z, int ldz,
                 traits::complex_f* work, const int* lwork){
             int info;
-//          std::cout << "I'm inside lapack::detail::hseqr_backend for complex<float>" 
+//          std::cout << "I'm inside lapack::detail::hseqr_backend for complex<float>"
 //              << std::endl;
-            LAPACK_CHSEQR(job, compz, n, &ilo, &ihi, 
-                    traits::complex_ptr(H), &ldH, 
-                    traits::complex_ptr(w), 
-                    traits::complex_ptr(Z), &ldz, 
+            LAPACK_CHSEQR(job, compz, n, &ilo, &ihi,
+                    traits::complex_ptr(H), &ldH,
+                    traits::complex_ptr(w),
+                    traits::complex_ptr(Z), &ldz,
                     traits::complex_ptr(work), lwork, &info);
             return info;
         }
 
         // complex<double>
         inline
-        int hseqr_backend(const char* job, const char* compz, int* n, 
-                const int ilo, const int ihi, traits::complex_d* H, const int ldH, 
-                traits::complex_d* w, traits::complex_d* Z, int ldz, 
+        int hseqr_backend(const char* job, const char* compz, int* n,
+                const int ilo, const int ihi, traits::complex_d* H, const int ldH,
+                traits::complex_d* w, traits::complex_d* Z, int ldz,
                 traits::complex_d* work, const int* lwork){
             int info;
-//          std::cout << "I'm inside lapack::detail::hseqr_backend for complex<double>" 
+//          std::cout << "I'm inside lapack::detail::hseqr_backend for complex<double>"
 //              << std::endl;
-            LAPACK_ZHSEQR(job, compz, n, &ilo, &ihi, 
-                    traits::complex_ptr(H), &ldH, 
-                    traits::complex_ptr(w), 
-                    traits::complex_ptr(Z), &ldz, 
+            LAPACK_ZHSEQR(job, compz, n, &ilo, &ihi,
+                    traits::complex_ptr(H), &ldH,
+                    traits::complex_ptr(w),
+                    traits::complex_ptr(Z), &ldz,
                     traits::complex_ptr(work), lwork, &info);
             return info;
         }
@@ -172,7 +172,7 @@
                 int lwork = -1;
                 value_type work_temp;
                 int result = detail::hseqr_backend(&job, &compz, &n, 1, n,
-                                            traits::matrix_storage(H), 
+                                            traits::matrix_storage(H),
                                             traits::leading_dimension(H),
                                             wr.storage(), wi.storage(),
                                             traits::matrix_storage(Z),
@@ -184,7 +184,7 @@
                 lwork = (int) work_temp;
                 traits::detail::array<value_type> work(lwork);
                 result = detail::hseqr_backend(&job, &compz, &n, 1, n,
-                                            traits::matrix_storage(H), 
+                                            traits::matrix_storage(H),
                                             traits::leading_dimension(H),
                                             wr.storage(), wi.storage(),
                                             traits::matrix_storage(Z),
@@ -212,7 +212,7 @@
                 value_type work_temp;
                 int result = detail::hseqr_backend(&job, &compz, &n, 1, n,
                         traits::matrix_storage(H),
-                        traits::leading_dimension(H), 
+                        traits::leading_dimension(H),
                         traits::vector_storage(w),
                         traits::matrix_storage(Z), traits::leading_dimension(Z),
                         &work_temp, &lwork);
@@ -223,7 +223,7 @@
                 traits::detail::array<value_type> work(lwork);
                 result = detail::hseqr_backend(&job, &compz, &n, 1, n,
                         traits::matrix_storage(H),
-                        traits::leading_dimension(H), 
+                        traits::leading_dimension(H),
                         traits::vector_storage(w),
                         traits::matrix_storage(Z), traits::leading_dimension(Z),
                         work.storage(), &lwork);
@@ -231,7 +231,7 @@
                 return result;
             }
         };
-        
+
         template < typename A, typename W, typename V>
         int hseqr( const char job, const char compz, A& H, W& w, V& Z ){
 //          std::cout << "I'm inside lapack::detail::hseqr." << std::endl;
@@ -246,18 +246,18 @@
 
             return result;
         }
-    }   // namespace detail 
+    }   // namespace detail
 
     // Compute eigenvalues without the Schur vectors
     template < typename A, typename W>
     int hseqr( const char job, A& H, W& w){
       // input checking
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-			   typename traits::matrix_traits<A>::matrix_structure, 
-			   traits::general_t
-			   >::value)); 
-#endif 
+                           typename traits::matrix_traits<A>::matrix_structure,
+                           traits::general_t
+                           >::value));
+#endif
 
 #ifndef NDEBUG
         int const n = traits::matrix_size1(H);
@@ -267,7 +267,7 @@
         typedef typename W::value_type complex_value_type;
 
         assert(traits::matrix_size2(H) == n); // Square matrix
-        assert(traits::vector_size(w) == n);  
+        assert(traits::vector_size(w) == n);
 
         ublas::matrix<value_type, ublas::column_major> Z(1,1);
         return detail::hseqr( job, 'N', H, w, Z );
@@ -277,12 +277,12 @@
     template < typename A, typename W, typename Z>
     int hseqr( const char job, const char compz, A& H, W& w, Z& z){
       // input checking
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-			   typename traits::matrix_traits<A>::matrix_structure, 
-			   traits::general_t
-			   >::value)); 
-#endif 
+                           typename traits::matrix_traits<A>::matrix_structure,
+                           traits::general_t
+                           >::value));
+#endif
 
 #ifndef NDEBUG
         int const n = traits::matrix_size1(H);
@@ -290,7 +290,7 @@
 
         typedef typename A::value_type value_type;
         assert(traits::matrix_size2(H) == n); // Square matrix
-        assert(traits::vector_size(w) == n);  
+        assert(traits::vector_size(w) == n);
         assert(traits::matrix_size2(z) == n);
 
         return detail::hseqr( job, compz, H, w, z );
Modified: sandbox/boost/numeric/bindings/lapack/ilaenv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/ilaenv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/ilaenv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -14,20 +14,20 @@
 #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_ILAENV_HPP
 #define BOOST_NUMERIC_BINDINGS_LAPACK_ILAENV_HPP
 
-#include <cstring> 
+#include <cstring>
 #include <boost/numeric/bindings/lapack/lapack.h>
 
 namespace boost { namespace numeric { namespace bindings { namespace lapack {
 
   /*
-   * ilaenv() is called from the LAPACK routines to choose  
-   * problem-dependent parameters such as the block sizes 
+   * ilaenv() is called from the LAPACK routines to choose
+   * problem-dependent parameters such as the block sizes
    * for the local environment.
    */
   
   inline
   int ilaenv (int const ispec, const char* name, const char* opts,
-              int const n1 = -1, int const n2 = -1, 
+              int const n1 = -1, int const n2 = -1,
               int const n3 = -1, int const n4 = -1)
   {
     return ::LAPACK_ILAENV (&ispec, name, opts, &n1, &n2, &n3, &n4,
@@ -38,4 +38,3 @@
 }}}}
 
 #endif
-
Modified: sandbox/boost/numeric/bindings/lapack/lapack.h
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/lapack.h	(original)
+++ sandbox/boost/numeric/bindings/lapack/lapack.h	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -17,9 +17,9 @@
 #include <boost/numeric/bindings/traits/type.h>
 #include <boost/numeric/bindings/lapack/lapack_names.h>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  define BOOST_NUMERIC_BINDINGS_FORTRAN
-#endif 
+#endif
 
 extern "C" {
 
@@ -29,22 +29,22 @@
 
   /* general */
 
-  void LAPACK_SGESV (int const* n, int const* nrhs, 
-                     float* a, int const* lda, int* ipiv, 
+  void LAPACK_SGESV (int const* n, int const* nrhs,
+                     float* a, int const* lda, int* ipiv,
                      float* b, int const* ldb, int* info);
-  void LAPACK_DGESV (int const* n, int const* nrhs, 
-                     double* a, int const* lda, int* ipiv, 
+  void LAPACK_DGESV (int const* n, int const* nrhs,
+                     double* a, int const* lda, int* ipiv,
                      double* b, int const* ldb, int* info);
   void LAPACK_CGESV (int const* n, int const* nrhs,
-                     fcomplex_t* a, int const* lda, int* ipiv, 
+                     fcomplex_t* a, int const* lda, int* ipiv,
                      fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZGESV (int const* n, int const* nrhs,
-                     dcomplex_t* a, int const* lda, int* ipiv, 
+                     dcomplex_t* a, int const* lda, int* ipiv,
                      dcomplex_t* b, int const* ldb, int* info);
 
-  void LAPACK_SGETRF (int const* n, int const* nrhs, 
+  void LAPACK_SGETRF (int const* n, int const* nrhs,
                       float* a, int const* lda, int* ipiv, int* info);
-  void LAPACK_DGETRF (int const* n, int const* nrhs, 
+  void LAPACK_DGETRF (int const* n, int const* nrhs,
                       double* a, int const* lda, int* ipiv, int* info);
   void LAPACK_CGETRF (int const* n, int const* nrhs,
                       fcomplex_t* a, int const* lda,
@@ -53,35 +53,35 @@
                       dcomplex_t* a, int const* lda,
                       int* ipiv, int* info);
 
-  void LAPACK_SGETRS (char const* trans, int const* n, int const* nrhs, 
-                      float const* a, int const* lda, int const* ipiv, 
+  void LAPACK_SGETRS (char const* trans, int const* n, int const* nrhs,
+                      float const* a, int const* lda, int const* ipiv,
                       float* b, int const* ldb, int* info);
-  void LAPACK_DGETRS (char const* trans, int const* n, int const* nrhs, 
-                      double const* a, int const* lda, int const* ipiv, 
+  void LAPACK_DGETRS (char const* trans, int const* n, int const* nrhs,
+                      double const* a, int const* lda, int const* ipiv,
                       double* b, int const* ldb, int* info);
   void LAPACK_CGETRS (char const* trans, int const* n, int const* nrhs,
-                      fcomplex_t const* a, int const* lda, int const* ipiv, 
+                      fcomplex_t const* a, int const* lda, int const* ipiv,
                       fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZGETRS (char const* trans, int const* n, int const* nrhs,
-                      dcomplex_t const* a, int const* lda, int const* ipiv, 
+                      dcomplex_t const* a, int const* lda, int const* ipiv,
                       dcomplex_t* b, int const* ldb, int* info);
 
-  void LAPACK_SGETRI (int const* n, float* a, int const* lda,	int const* ipiv, 
-		      float* work, int const* lwork, int* info);
-  void LAPACK_DGETRI (int const* n, double* a, int const* lda,	int const* ipiv, 
-		      double* work, int const* lwork, int* info);
-  void LAPACK_CGETRI (int const* n, fcomplex_t* a, int const* lda,	int const* ipiv, 
-		      fcomplex_t* work, int const* lwork, int* info);
-  void LAPACK_ZGETRI (int const* n, dcomplex_t* a, int const* lda,	int const* ipiv, 
-		      dcomplex_t* work, int const* lwork, int* info);
+  void LAPACK_SGETRI (int const* n, float* a, int const* lda, int const* ipiv,
+                      float* work, int const* lwork, int* info);
+  void LAPACK_DGETRI (int const* n, double* a, int const* lda, int const* ipiv,
+                      double* work, int const* lwork, int* info);
+  void LAPACK_CGETRI (int const* n, fcomplex_t* a, int const* lda, int const* ipiv,
+                      fcomplex_t* work, int const* lwork, int* info);
+  void LAPACK_ZGETRI (int const* n, dcomplex_t* a, int const* lda, int const* ipiv,
+                      dcomplex_t* work, int const* lwork, int* info);
 
   /* symmetric/Hermitian positive definite */
 
-  void LAPACK_SPOSV (char const* uplo, int const* n, int const* nrhs, 
-                     float* a, int const* lda, 
+  void LAPACK_SPOSV (char const* uplo, int const* n, int const* nrhs,
+                     float* a, int const* lda,
                      float* b, int const* ldb, int* info);
-  void LAPACK_DPOSV (char const* uplo, int const* n, int const* nrhs, 
-                     double* a, int const* lda, 
+  void LAPACK_DPOSV (char const* uplo, int const* n, int const* nrhs,
+                     double* a, int const* lda,
                      double* b, int const* ldb, int* info);
   void LAPACK_CPOSV (char const* uplo, int const* n, int const* nrhs,
                      fcomplex_t* a, int const* lda,
@@ -90,20 +90,20 @@
                      dcomplex_t* a, int const* lda,
                      dcomplex_t* b, int const* ldb, int* info);
 
-  void LAPACK_SPOTRF (char const* uplo, int const* n, 
+  void LAPACK_SPOTRF (char const* uplo, int const* n,
                       float* a, int const* lda, int* info);
-  void LAPACK_DPOTRF (char const* uplo, int const* n, 
+  void LAPACK_DPOTRF (char const* uplo, int const* n,
                       double* a, int const* lda, int* info);
-  void LAPACK_CPOTRF (char const* uplo, int const* n, 
+  void LAPACK_CPOTRF (char const* uplo, int const* n,
                       fcomplex_t* a, int const* lda, int* info);
-  void LAPACK_ZPOTRF (char const* uplo, int const* n, 
+  void LAPACK_ZPOTRF (char const* uplo, int const* n,
                       dcomplex_t* a, int const* lda, int* info);
 
-  void LAPACK_SPOTRS (char const* uplo, int const* n, int const* nrhs, 
-                      float const* a, int const* lda, 
+  void LAPACK_SPOTRS (char const* uplo, int const* n, int const* nrhs,
+                      float const* a, int const* lda,
                       float* b, int const* ldb, int* info);
-  void LAPACK_DPOTRS (char const* uplo, int const* n, int const* nrhs, 
-                      double const* a, int const* lda, 
+  void LAPACK_DPOTRS (char const* uplo, int const* n, int const* nrhs,
+                      double const* a, int const* lda,
                       double* b, int const* ldb, int* info);
   void LAPACK_CPOTRS (char const* uplo, int const* n, int const* nrhs,
                       fcomplex_t const* a, int const* lda,
@@ -115,9 +115,9 @@
 
   /* symmetric/Hermitian positive definite in packed storage */
 
-  void LAPACK_SPPSV (char const* uplo, int const* n, int const* nrhs, 
+  void LAPACK_SPPSV (char const* uplo, int const* n, int const* nrhs,
                      float* ap, float* b, int const* ldb, int* info);
-  void LAPACK_DPPSV (char const* uplo, int const* n, int const* nrhs, 
+  void LAPACK_DPPSV (char const* uplo, int const* n, int const* nrhs,
                      double* ap, double* b, int const* ldb, int* info);
   void LAPACK_CPPSV (char const* uplo, int const* n, int const* nrhs,
                      fcomplex_t* ap, fcomplex_t* b, int const* ldb, int* info);
@@ -126,27 +126,27 @@
 
   void LAPACK_SPPTRF (char const* uplo, int const* n, float* ap, int* info);
   void LAPACK_DPPTRF (char const* uplo, int const* n, double* ap, int* info);
-  void LAPACK_CPPTRF (char const* uplo, int const* n, 
+  void LAPACK_CPPTRF (char const* uplo, int const* n,
                       fcomplex_t* ap, int* info);
-  void LAPACK_ZPPTRF (char const* uplo, int const* n, 
+  void LAPACK_ZPPTRF (char const* uplo, int const* n,
                       dcomplex_t* ap, int* info);
 
-  void LAPACK_SPPTRS (char const* uplo, int const* n, int const* nrhs, 
+  void LAPACK_SPPTRS (char const* uplo, int const* n, int const* nrhs,
                       float const* ap, float* b, int const* ldb, int* info);
-  void LAPACK_DPPTRS (char const* uplo, int const* n, int const* nrhs, 
+  void LAPACK_DPPTRS (char const* uplo, int const* n, int const* nrhs,
                       double const* ap, double* b, int const* ldb, int* info);
   void LAPACK_CPPTRS (char const* uplo, int const* n, int const* nrhs,
-                      fcomplex_t const* ap, 
+                      fcomplex_t const* ap,
                       fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZPPTRS (char const* uplo, int const* n, int const* nrhs,
-                      dcomplex_t const* ap, 
+                      dcomplex_t const* ap,
                       dcomplex_t* b, int const* ldb, int* info);
 
   void LAPACK_SPPTRI (char const* uplo, int const* n, float* ap, int* info);
   void LAPACK_DPPTRI (char const* uplo, int const* n, double* ap, int* info);
-  void LAPACK_CPPTRI (char const* uplo, int const* n, 
+  void LAPACK_CPPTRI (char const* uplo, int const* n,
                       fcomplex_t* ap, int* info);
-  void LAPACK_ZPPTRI (char const* uplo, int const* n, 
+  void LAPACK_ZPPTRI (char const* uplo, int const* n,
                       dcomplex_t* ap, int* info);
 
   /* symmetric/Hermitian positive definite tridiagonal */
@@ -169,10 +169,10 @@
   void LAPACK_CPTTRF ( int const* n, float* d, fcomplex_t* e, int* info);
   void LAPACK_ZPTTRF ( int const* n, double* d, dcomplex_t* e, int* info);
 
-  void LAPACK_SPTTRS ( int const* n, int const* nrhs, 
+  void LAPACK_SPTTRS ( int const* n, int const* nrhs,
                       float const* d, float const* e,
                       float* b, int const* ldb, int* info);
-  void LAPACK_DPTTRS ( int const* n, int const* nrhs, 
+  void LAPACK_DPTTRS ( int const* n, int const* nrhs,
                       double const* d, double const* e,
                       double* b, int const* ldb, int* info);
   void LAPACK_CPTTRS (char const* uplo, int const* n, int const* nrhs,
@@ -186,80 +186,80 @@
 
   /* symmetric/Hermitian indefinite and complex symmetric */
 
-  void LAPACK_SSYSV (char const* uplo, int const* n, int const* nrhs, 
-                     float* a, int const* lda, int* ipiv, 
-                     float* b, int const* ldb, 
+  void LAPACK_SSYSV (char const* uplo, int const* n, int const* nrhs,
+                     float* a, int const* lda, int* ipiv,
+                     float* b, int const* ldb,
                      float* w, int const* lw, int* info);
-  void LAPACK_DSYSV (char const* uplo, int const* n, int const* nrhs, 
-                     double* a, int const* lda, int* ipiv, 
-                     double* b, int const* ldb, 
+  void LAPACK_DSYSV (char const* uplo, int const* n, int const* nrhs,
+                     double* a, int const* lda, int* ipiv,
+                     double* b, int const* ldb,
                      double* w, int const* lw, int* info);
   void LAPACK_CSYSV (char const* uplo, int const* n, int const* nrhs,
-                     fcomplex_t* a, int const* lda, int* ipiv, 
-                     fcomplex_t* b, int const* ldb, 
+                     fcomplex_t* a, int const* lda, int* ipiv,
+                     fcomplex_t* b, int const* ldb,
                      fcomplex_t* w, int const* lw, int* info);
   void LAPACK_ZSYSV (char const* uplo, int const* n, int const* nrhs,
-                     dcomplex_t* a, int const* lda, int* ipiv, 
-                     dcomplex_t* b, int const* ldb, 
+                     dcomplex_t* a, int const* lda, int* ipiv,
+                     dcomplex_t* b, int const* ldb,
                      dcomplex_t* w, int const* lw, int* info);
 
   void LAPACK_CHESV (char const* uplo, int const* n, int const* nrhs,
-                     fcomplex_t* a, int const* lda, int* ipiv, 
-                     fcomplex_t* b, int const* ldb, 
+                     fcomplex_t* a, int const* lda, int* ipiv,
+                     fcomplex_t* b, int const* ldb,
                      fcomplex_t* w, int const* lw, int* info);
   void LAPACK_ZHESV (char const* uplo, int const* n, int const* nrhs,
-                     dcomplex_t* a, int const* lda, int* ipiv, 
-                     dcomplex_t* b, int const* ldb, 
+                     dcomplex_t* a, int const* lda, int* ipiv,
+                     dcomplex_t* b, int const* ldb,
                      dcomplex_t* w, int const* lw, int* info);
 
-  void LAPACK_SSYTRF (char const* uplo, int const* n, 
-                      float* a, int const* lda, int* ipiv, 
+  void LAPACK_SSYTRF (char const* uplo, int const* n,
+                      float* a, int const* lda, int* ipiv,
                       float* w, int const* lw, int* info);
-  void LAPACK_DSYTRF (char const* uplo, int const* n, 
-                      double* a, int const* lda, int* ipiv, 
+  void LAPACK_DSYTRF (char const* uplo, int const* n,
+                      double* a, int const* lda, int* ipiv,
                       double* w, int const* lw, int* info);
-  void LAPACK_CSYTRF (char const* uplo, int const* n, 
-                      fcomplex_t* a, int const* lda, int* ipiv, 
+  void LAPACK_CSYTRF (char const* uplo, int const* n,
+                      fcomplex_t* a, int const* lda, int* ipiv,
                       fcomplex_t* w, int const* lw, int* info);
-  void LAPACK_ZSYTRF (char const* uplo, int const* n, 
-                      dcomplex_t* a, int const* lda, int* ipiv, 
+  void LAPACK_ZSYTRF (char const* uplo, int const* n,
+                      dcomplex_t* a, int const* lda, int* ipiv,
                       dcomplex_t* w, int const* lw, int* info);
 
-  void LAPACK_CHETRF (char const* uplo, int const* n, 
-                      fcomplex_t* a, int const* lda, int* ipiv, 
+  void LAPACK_CHETRF (char const* uplo, int const* n,
+                      fcomplex_t* a, int const* lda, int* ipiv,
                       fcomplex_t* w, int const* lw, int* info);
-  void LAPACK_ZHETRF (char const* uplo, int const* n, 
-                      dcomplex_t* a, int const* lda, int* ipiv, 
+  void LAPACK_ZHETRF (char const* uplo, int const* n,
+                      dcomplex_t* a, int const* lda, int* ipiv,
                       dcomplex_t* w, int const* lw, int* info);
 
-  void LAPACK_SSYTRS (char const* uplo, int const* n, int const* nrhs, 
-                      float const* a, int const* lda, int const* ipiv, 
+  void LAPACK_SSYTRS (char const* uplo, int const* n, int const* nrhs,
+                      float const* a, int const* lda, int const* ipiv,
                       float* b, int const* ldb, int* info);
-  void LAPACK_DSYTRS (char const* uplo, int const* n, int const* nrhs, 
-                      double const* a, int const* lda, int const* ipiv, 
+  void LAPACK_DSYTRS (char const* uplo, int const* n, int const* nrhs,
+                      double const* a, int const* lda, int const* ipiv,
                       double* b, int const* ldb, int* info);
   void LAPACK_CSYTRS (char const* uplo, int const* n, int const* nrhs,
-                      fcomplex_t const* a, int const* lda, int const* ipiv, 
+                      fcomplex_t const* a, int const* lda, int const* ipiv,
                       fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZSYTRS (char const* uplo, int const* n, int const* nrhs,
-                      dcomplex_t const* a, int const* lda, int const* ipiv, 
+                      dcomplex_t const* a, int const* lda, int const* ipiv,
                       dcomplex_t* b, int const* ldb, int* info);
 
-  void LAPACK_SSYTRI (char const* uplo, int const* n, float* a, 
-		      int const* lda, int const* ipiv, float* work, 
-		      int* info);
-  void LAPACK_DSYTRI (char const* uplo, int const* n, double* a, 
-		      int const* lda, int const* ipiv, double* work, 
-		      int* info);
-  void LAPACK_CSYTRI (char const* uplo, int const* n, fcomplex_t* a, 
-		      int const* lda, int const* ipiv, fcomplex_t* work, 
-		      int* info);
-  void LAPACK_ZSYTRI (char const* uplo, int const* n, dcomplex_t* a, 
-		      int const* lda, int const* ipiv, dcomplex_t* work, 
-		      int* info);
+  void LAPACK_SSYTRI (char const* uplo, int const* n, float* a,
+                      int const* lda, int const* ipiv, float* work,
+                      int* info);
+  void LAPACK_DSYTRI (char const* uplo, int const* n, double* a,
+                      int const* lda, int const* ipiv, double* work,
+                      int* info);
+  void LAPACK_CSYTRI (char const* uplo, int const* n, fcomplex_t* a,
+                      int const* lda, int const* ipiv, fcomplex_t* work,
+                      int* info);
+  void LAPACK_ZSYTRI (char const* uplo, int const* n, dcomplex_t* a,
+                      int const* lda, int const* ipiv, dcomplex_t* work,
+                      int* info);
  
   void LAPACK_CHETRS (char const* uplo, int const* n, int const* nrhs,
-                      fcomplex_t const* a, int const* lda, int const* ipiv, 
+                      fcomplex_t const* a, int const* lda, int const* ipiv,
                       fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZHETRS (char const* uplo, int const* n, int const* nrhs,
                       dcomplex_t const* a, int const* lda, int const* ipiv, 
@@ -268,67 +268,67 @@
 
   /* symmetric/Hermitian indefinite and complex symmetric in packed storage */
 
-  void LAPACK_SSPSV (char const* uplo, int const* n, int const* nrhs, 
-                     float* ap, int* ipiv, 
+  void LAPACK_SSPSV (char const* uplo, int const* n, int const* nrhs,
+                     float* ap, int* ipiv,
                      float* b, int const* ldb, int* info);
-  void LAPACK_DSPSV (char const* uplo, int const* n, int const* nrhs, 
-                     double* ap, int* ipiv, 
+  void LAPACK_DSPSV (char const* uplo, int const* n, int const* nrhs,
+                     double* ap, int* ipiv,
                      double* b, int const* ldb, int* info);
   void LAPACK_CSPSV (char const* uplo, int const* n, int const* nrhs,
-                     fcomplex_t* ap, int* ipiv, 
+                     fcomplex_t* ap, int* ipiv,
                      fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZSPSV (char const* uplo, int const* n, int const* nrhs,
-                     dcomplex_t* ap, int* ipiv, 
+                     dcomplex_t* ap, int* ipiv,
                      dcomplex_t* b, int const* ldb, int* info);
 
   void LAPACK_CHPSV (char const* uplo, int const* n, int const* nrhs,
-                     fcomplex_t* ap, int* ipiv, 
+                     fcomplex_t* ap, int* ipiv,
                      fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZHPSV (char const* uplo, int const* n, int const* nrhs,
-                     dcomplex_t* ap, int* ipiv, 
+                     dcomplex_t* ap, int* ipiv,
                      dcomplex_t* b, int const* ldb, int* info);
 
-  void LAPACK_SSPTRF (char const* uplo, int const* n, 
+  void LAPACK_SSPTRF (char const* uplo, int const* n,
                       float* ap, int* ipiv, int* info);
-  void LAPACK_DSPTRF (char const* uplo, int const* n, 
+  void LAPACK_DSPTRF (char const* uplo, int const* n,
                       double* ap, int* ipiv, int* info);
-  void LAPACK_CSPTRF (char const* uplo, int const* n, 
+  void LAPACK_CSPTRF (char const* uplo, int const* n,
                       fcomplex_t* ap, int* ipiv, int* info);
-  void LAPACK_ZSPTRF (char const* uplo, int const* n, 
+  void LAPACK_ZSPTRF (char const* uplo, int const* n,
                       dcomplex_t* ap, int* ipiv, int* info);
 
-  void LAPACK_CHPTRF (char const* uplo, int const* n, 
+  void LAPACK_CHPTRF (char const* uplo, int const* n,
                       fcomplex_t* ap, int* ipiv, int* info);
-  void LAPACK_ZHPTRF (char const* uplo, int const* n, 
+  void LAPACK_ZHPTRF (char const* uplo, int const* n,
                       dcomplex_t* ap, int* ipiv, int* info);
 
-  void LAPACK_SSPTRS (char const* uplo, int const* n, int const* nrhs, 
-                      float const* ap, int const* ipiv, 
+  void LAPACK_SSPTRS (char const* uplo, int const* n, int const* nrhs,
+                      float const* ap, int const* ipiv,
                       float* b, int const* ldb, int* info);
-  void LAPACK_DSPTRS (char const* uplo, int const* n, int const* nrhs, 
-                      double const* ap, int const* ipiv, 
+  void LAPACK_DSPTRS (char const* uplo, int const* n, int const* nrhs,
+                      double const* ap, int const* ipiv,
                       double* b, int const* ldb, int* info);
   void LAPACK_CSPTRS (char const* uplo, int const* n, int const* nrhs,
-                      fcomplex_t const* ap, int const* ipiv, 
+                      fcomplex_t const* ap, int const* ipiv,
                       fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZSPTRS (char const* uplo, int const* n, int const* nrhs,
-                      dcomplex_t const* ap, int const* ipiv, 
+                      dcomplex_t const* ap, int const* ipiv,
                       dcomplex_t* b, int const* ldb, int* info);
 
-  void LAPACK_SSPTRI (char const* uplo, int const* n, float const* ap, 
-		      int const* ipiv, float* work, int* info);
-  void LAPACK_DSPTRI (char const* uplo, int const* n, double const* ap, 
-		      int const* ipiv, double* work, int* info);
-  void LAPACK_CSPTRI (char const* uplo, int const* n, fcomplex_t const* ap, 
-		      int const* ipiv, fcomplex_t* work, int* info);
-  void LAPACK_ZSPTRI (char const* uplo, int const* n, dcomplex_t const* ap, 
-		      int const* ipiv, dcomplex_t* work, int* info);
+  void LAPACK_SSPTRI (char const* uplo, int const* n, float const* ap,
+                      int const* ipiv, float* work, int* info);
+  void LAPACK_DSPTRI (char const* uplo, int const* n, double const* ap,
+                      int const* ipiv, double* work, int* info);
+  void LAPACK_CSPTRI (char const* uplo, int const* n, fcomplex_t const* ap,
+                      int const* ipiv, fcomplex_t* work, int* info);
+  void LAPACK_ZSPTRI (char const* uplo, int const* n, dcomplex_t const* ap,
+                      int const* ipiv, dcomplex_t* work, int* info);
 
   void LAPACK_CHPTRS (char const* uplo, int const* n, int const* nrhs,
-                      fcomplex_t const* ap, int const* ipiv, 
+                      fcomplex_t const* ap, int const* ipiv,
                       fcomplex_t* b, int const* ldb, int* info);
   void LAPACK_ZHPTRS (char const* uplo, int const* n, int const* nrhs,
-                      dcomplex_t const* ap, int const* ipiv, 
+                      dcomplex_t const* ap, int const* ipiv,
                       dcomplex_t* b, int const* ldb, int* info);
 
   /* banded */
@@ -342,17 +342,17 @@
   void LAPACK_ZGBTRF (int const* n, int const* m, int const* kl, int const* ku,
                       dcomplex_t* ab, int const* ldab, int* ipiv, int* info);
 
-  void LAPACK_SGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs, 
-                      float const* ab, int const* ldab, int const* ipiv, 
+  void LAPACK_SGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs,
+                      float const* ab, int const* ldab, int const* ipiv,
                       float* b, int const* ldb, int* info);
-  void LAPACK_DGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs, 
-                      double const* ab, int const* ldab, int const* ipiv, 
+  void LAPACK_DGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs,
+                      double const* ab, int const* ldab, int const* ipiv,
                       double* b, int const* ldb, int* info);
-  void LAPACK_CGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs, 
-                      fcomplex_t const* ab, int const* ldab, int const* ipiv, 
+  void LAPACK_CGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs,
+                      fcomplex_t const* ab, int const* ldab, int const* ipiv,
                       fcomplex_t* b, int const* ldb, int* info);
-  void LAPACK_ZGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs, 
-                      dcomplex_t const* ab, int const* ldab, int const* ipiv, 
+  void LAPACK_ZGBTRS (char const* trans, int const* n, int const* kl, int const* ku, int const* nrhs,
+                      dcomplex_t const* ab, int const* ldab, int const* ipiv,
                       dcomplex_t* b, int const* ldb, int* info);
 
 
@@ -467,57 +467,57 @@
 
   void LAPACK_CTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
                      fcomplex_t* t, const int * ldt, fcomplex_t* vl, const int* ldvl,
-		     fcomplex_t* vr, const int * ldvr, const int * nm, int* m, fcomplex_t* work,
+                     fcomplex_t* vr, const int * ldvr, const int * nm, int* m, fcomplex_t* work,
                      float* rwork, int* info );
 
   void LAPACK_ZTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
                      dcomplex_t* t, const int * ldt, dcomplex_t* vl, const int* ldvl,
-		     dcomplex_t* vr, const int * ldvr, const int * nm, int* m, dcomplex_t* work,
+                     dcomplex_t* vr, const int * ldvr, const int * nm, int* m, dcomplex_t* work,
                      double* rwork, int* info );
 
   void LAPACK_STREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
                      float* t, const int * ldt, float* vl, const int* ldvl,
-		     float* vr, const int * ldvr, const int * nm, int* m, float* work,
+                     float* vr, const int * ldvr, const int * nm, int* m, float* work,
                      int* info );
 
   void LAPACK_DTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
                      double* t, const int * ldt, double* vl, const int* ldvl,
-		     double* vr, const int * ldvr, const int * nm, int* m, double* work,
+                     double* vr, const int * ldvr, const int * nm, int* m, double* work,
                      int* info );
 
 
   void LAPACK_STREXC( const char* compq, const int *n,
                      float* t, const int * ldt, float* q, const int* ldq,
-		     int* ifst, const int * ilst, float* work, int* info );
+                     int* ifst, const int * ilst, float* work, int* info );
 
   void LAPACK_DTREXC( const char* compq, const int *n,
                      double* t, const int * ldt, double* q, const int* ldq,
-		     int* ifst, const int * ilst, double* work, int* info );
+                     int* ifst, const int * ilst, double* work, int* info );
 
   void LAPACK_CTREXC( const char* compq, const int *n,
                      fcomplex_t* t, const int * ldt, fcomplex_t* q, const int* ldq,
-		     int* ifst, const int * ilst, int* info );
+                     int* ifst, const int * ilst, int* info );
 
   void LAPACK_ZTREXC( const char* compq, const int *n,
                      dcomplex_t* t, const int * ldt, dcomplex_t* q, const int* ldq,
-		     int* ifst, const int * ilst, int* info );
+                     int* ifst, const int * ilst, int* info );
 
 
   /* Hessenberg matrices */
 
-  void LAPACK_SHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, float* H, 
+  void LAPACK_SHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, float* H,
                       const int* LDH, float* WR, float* WI, float* Z, int const* LDZ,
                       float* WORK, const int* LWORK, int* INFO ) ;
 
-  void LAPACK_CHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, fcomplex_t* H, 
+  void LAPACK_CHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, fcomplex_t* H,
                       const int* LDH, fcomplex_t* W, fcomplex_t* Z, int const* LDZ,
                       fcomplex_t* WORK, const int* LWORK, int* INFO ) ;
 
-  void LAPACK_DHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, double* H, 
+  void LAPACK_DHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, double* H,
                       const int* LDH, double* WR, double* WI, double* Z, int const* LDZ,
                       double* WORK, const int* LWORK, int* INFO ) ;
 
-  void LAPACK_ZHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, dcomplex_t* H, 
+  void LAPACK_ZHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, dcomplex_t* H,
                       const int* LDH, dcomplex_t* W, dcomplex_t* Z, int const* LDZ,
                       dcomplex_t* WORK, const int* LWORK, int* INFO ) ;
 
@@ -612,53 +612,53 @@
   /*                             SVD                                   */
   /*********************************************************************/
 
-  void LAPACK_SGESVD (char const* jobu, char const* jobvt, 
-                      int const* m, int const* n, float* a, int const* lda, 
-                      float* s, float* u, int const* ldu, 
+  void LAPACK_SGESVD (char const* jobu, char const* jobvt,
+                      int const* m, int const* n, float* a, int const* lda,
+                      float* s, float* u, int const* ldu,
                       float* vt, int const* ldvt,
-                      float* work, int const* lwork, int* info); 
-  void LAPACK_DGESVD (char const* jobu, char const* jobvt, 
-                      int const* m, int const* n, double* a, int const* lda, 
-                      double* s, double* u, int const* ldu, 
+                      float* work, int const* lwork, int* info);
+  void LAPACK_DGESVD (char const* jobu, char const* jobvt,
+                      int const* m, int const* n, double* a, int const* lda,
+                      double* s, double* u, int const* ldu,
                       double* vt, int const* ldvt,
-                      double* work, int const* lwork, int* info); 
-  void LAPACK_CGESVD (char const* jobu, char const* jobvt, 
-                      int const* m, int const* n, 
-                      fcomplex_t* a, int const* lda, 
-                      float* s, fcomplex_t* u, int const* ldu, 
+                      double* work, int const* lwork, int* info);
+  void LAPACK_CGESVD (char const* jobu, char const* jobvt,
+                      int const* m, int const* n,
+                      fcomplex_t* a, int const* lda,
+                      float* s, fcomplex_t* u, int const* ldu,
                       fcomplex_t* vt, int const* ldvt,
-                      fcomplex_t* work, int const* lwork, 
-                      float* rwork, int* info); 
-  void LAPACK_ZGESVD (char const* jobu, char const* jobvt, 
-                      int const* m, int const* n, 
-                      dcomplex_t* a, int const* lda, 
-                      double* s, dcomplex_t* u, int const* ldu, 
+                      fcomplex_t* work, int const* lwork,
+                      float* rwork, int* info);
+  void LAPACK_ZGESVD (char const* jobu, char const* jobvt,
+                      int const* m, int const* n,
+                      dcomplex_t* a, int const* lda,
+                      double* s, dcomplex_t* u, int const* ldu,
                       dcomplex_t* vt, int const* ldvt,
-                      dcomplex_t* work, int const* lwork, 
-                      double* rwork, int* info); 
+                      dcomplex_t* work, int const* lwork,
+                      double* rwork, int* info);
 
-  void LAPACK_SGESDD (char const* jobz, int const* m, int const* n, 
-                      float* a, int const* lda, 
-                      float* s, float* u, int const* ldu, 
+  void LAPACK_SGESDD (char const* jobz, int const* m, int const* n,
+                      float* a, int const* lda,
+                      float* s, float* u, int const* ldu,
                       float* vt, int const* ldvt,
-                      float* work, int const* lwork, int* iwork, int* info); 
-  void LAPACK_DGESDD (char const* jobz, int const* m, int const* n, 
-                      double* a, int const* lda, 
-                      double* s, double* u, int const* ldu, 
+                      float* work, int const* lwork, int* iwork, int* info);
+  void LAPACK_DGESDD (char const* jobz, int const* m, int const* n,
+                      double* a, int const* lda,
+                      double* s, double* u, int const* ldu,
                       double* vt, int const* ldvt,
-                      double* work, int const* lwork, int* iwork, int* info); 
-  void LAPACK_CGESDD (char const* jobz, int const* m, int const* n, 
-                      fcomplex_t* a, int const* lda, 
-                      float* s, fcomplex_t* u, int const* ldu, 
+                      double* work, int const* lwork, int* iwork, int* info);
+  void LAPACK_CGESDD (char const* jobz, int const* m, int const* n,
+                      fcomplex_t* a, int const* lda,
+                      float* s, fcomplex_t* u, int const* ldu,
                       fcomplex_t* vt, int const* ldvt,
-                      fcomplex_t* work, int const* lwork, 
-                      float* rwork, int* iwork, int* info); 
-  void LAPACK_ZGESDD (char const* jobz, int const* m, int const* n, 
-                      dcomplex_t* a, int const* lda, 
-                      double* s, dcomplex_t* u, int const* ldu, 
+                      fcomplex_t* work, int const* lwork,
+                      float* rwork, int* iwork, int* info);
+  void LAPACK_ZGESDD (char const* jobz, int const* m, int const* n,
+                      dcomplex_t* a, int const* lda,
+                      double* s, dcomplex_t* u, int const* ldu,
                       dcomplex_t* vt, int const* ldvt,
-                      dcomplex_t* work, int const* lwork, 
-                      double* rwork, int* iwork, int* info); 
+                      dcomplex_t* work, int const* lwork,
+                      double* rwork, int* iwork, int* info);
 
 
   /*********************************************************************/
@@ -715,58 +715,58 @@
   /*                          Least Squares                           */
   /********************************************************************/
 
-  void LAPACK_SGELS(const char* trans, const int* m, const int* n, 
-					const int *nrhs, float* a, const int* lda,
-					float* b, const int* ldb, float* work,
-					const int* lwork, int* info);
-  void LAPACK_DGELS(const char* trans, const int* m, const int* n, 
-					const int *nrhs, double* a, const int* lda,
-					double* b, const int* ldb, double* work,
-					const int* lwork, int* info);
-  void LAPACK_CGELS(const char* trans, const int* m, const int* n, 
-					const int *nrhs, fcomplex_t* a, const int* lda,
-					fcomplex_t* b, const int* ldb, fcomplex_t* work,
-					const int* lwork, int* info);
-  void LAPACK_ZGELS(const char* trans, const int* m, const int* n, 
-					const int *nrhs, dcomplex_t* a, const int* lda,
-					dcomplex_t* b, const int* ldb, dcomplex_t* work,
-					const int* lwork, int* info);
+  void LAPACK_SGELS(const char* trans, const int* m, const int* n,
+                    const int *nrhs, float* a, const int* lda,
+                    float* b, const int* ldb, float* work,
+                    const int* lwork, int* info);
+  void LAPACK_DGELS(const char* trans, const int* m, const int* n,
+                    const int *nrhs, double* a, const int* lda,
+                    double* b, const int* ldb, double* work,
+                    const int* lwork, int* info);
+  void LAPACK_CGELS(const char* trans, const int* m, const int* n,
+                    const int *nrhs, fcomplex_t* a, const int* lda,
+                    fcomplex_t* b, const int* ldb, fcomplex_t* work,
+                    const int* lwork, int* info);
+  void LAPACK_ZGELS(const char* trans, const int* m, const int* n,
+                    const int *nrhs, dcomplex_t* a, const int* lda,
+                    dcomplex_t* b, const int* ldb, dcomplex_t* work,
+                    const int* lwork, int* info);
 
 
   void LAPACK_SGELSS(const int *m, const int *n, const int *nrhs,
-					 float *a, const int *lda, float *b, const int *ldb,
-					 float *s, const float *rcond, int *rank, float *work,
-					 const int *lwork, int *info);
+                     float *a, const int *lda, float *b, const int *ldb,
+                     float *s, const float *rcond, int *rank, float *work,
+                     const int *lwork, int *info);
   void LAPACK_DGELSS(const int *m, const int *n, const int *nrhs,
-					 double *a, const int *lda, double *b, const int *ldb,
-					 double *s, const double *rcond, int *rank, double *work,
-					 const int *lwork, int *info);
+                     double *a, const int *lda, double *b, const int *ldb,
+                     double *s, const double *rcond, int *rank, double *work,
+                     const int *lwork, int *info);
   void LAPACK_CGELSS(const int *m, const int *n, const int *nrhs,
-					 fcomplex_t *a, const int *lda, fcomplex_t *b, const int *ldb,
-					 float *s, const float *rcond, int *rank, fcomplex_t *work,
-					 const int *lwork, float *rwork, int *info);
+                     fcomplex_t *a, const int *lda, fcomplex_t *b, const int *ldb,
+                     float *s, const float *rcond, int *rank, fcomplex_t *work,
+                     const int *lwork, float *rwork, int *info);
   void LAPACK_ZGELSS(const int *m, const int *n, const int *nrhs,
-					 dcomplex_t *a, const int *lda, dcomplex_t *b, const int *ldb,
-					 double *s, const double *rcond, int *rank, dcomplex_t *work,
-					 const int *lwork, double *rwork, int *info);
+                     dcomplex_t *a, const int *lda, dcomplex_t *b, const int *ldb,
+                     double *s, const double *rcond, int *rank, dcomplex_t *work,
+                     const int *lwork, double *rwork, int *info);
 
 
   void LAPACK_SGELSD(const int *m, const int *n, const int *nrhs,
-					 float *a, const int *lda, float *b, const int *ldb,
-					 float *s, const float *rcond, int *rank, float *work,
-					 const int *lwork, int *iwork, int *info);
+                     float *a, const int *lda, float *b, const int *ldb,
+                     float *s, const float *rcond, int *rank, float *work,
+                     const int *lwork, int *iwork, int *info);
   void LAPACK_DGELSD(const int *m, const int *n, const int *nrhs,
-					 double *a, const int *lda, double *b, const int *ldb,
-					 double *s, const double *rcond, int *rank, double *work,
-					 const int *lwork, int *iwork, int *info);
+                     double *a, const int *lda, double *b, const int *ldb,
+                     double *s, const double *rcond, int *rank, double *work,
+                     const int *lwork, int *iwork, int *info);
   void LAPACK_CGELSD(const int *m, const int *n, const int *nrhs,
-					 fcomplex_t *a, const int *lda, fcomplex_t *b, const int *ldb,
-					 float *s, const float *rcond, int *rank, fcomplex_t *work,
-					 const int *lwork, float *rwork, int *iwork, int *info);
+                     fcomplex_t *a, const int *lda, fcomplex_t *b, const int *ldb,
+                     float *s, const float *rcond, int *rank, fcomplex_t *work,
+                     const int *lwork, float *rwork, int *iwork, int *info);
   void LAPACK_ZGELSD(const int *m, const int *n, const int *nrhs,
-					 dcomplex_t *a, const int *lda, dcomplex_t *b, const int *ldb,
-					 double *s, const double *rcond, int *rank, dcomplex_t *work,
-					 const int *lwork, double *rwork, int *iwork, int *info);
+                     dcomplex_t *a, const int *lda, dcomplex_t *b, const int *ldb,
+                     double *s, const double *rcond, int *rank, dcomplex_t *work,
+                     const int *lwork, double *rwork, int *iwork, int *info);
 
 
 
@@ -776,8 +776,8 @@
 
   int LAPACK_ILAENV (int const* ispec, const char* name, const char* opt,
                      int const* n1, int const* n2, int const* n3, 
-                     int const* n4, int, int); 
+                     int const* n4, int, int);
 
 }
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/lapack.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/lapack.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/lapack.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,15 +1,15 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
- * Permission to copy, modify, use and distribute this software 
- * for any non-commercial or commercial purpose is granted provided 
+ * Permission to copy, modify, use and distribute this software
+ * for any non-commercial or commercial purpose is granted provided
  * that this license appear on all copies of the software source code.
  *
- * Authors assume no responsibility whatsoever for its use and makes 
+ * Authors assume no responsibility whatsoever for its use and makes
  * no guarantees about its quality, correctness or reliability.
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -27,7 +27,7 @@
 #include <boost/numeric/bindings/lapack/hesv.hpp>
 #include <boost/numeric/bindings/lapack/hpsv.hpp>
 
-// eigenproblems 
+// eigenproblems
 
 #include <boost/numeric/bindings/lapack/gees.hpp>
 #include <boost/numeric/bindings/lapack/trevc.hpp>
@@ -50,4 +50,3 @@
 
 
 #endif // BOOST_NUMERIC_BINDINGS_LAPACK_LAPACK_HPP
-
Modified: sandbox/boost/numeric/bindings/lapack/lapack_names.h
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/lapack_names.h	(original)
+++ sandbox/boost/numeric/bindings/lapack/lapack_names.h	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -219,7 +219,7 @@
 #define LAPACK_ZTREXC FORTRAN_ID( ztrexc )
 
 /********************************************/
-/* eigenproblems for Hessenberg matrices */ 
+/* eigenproblems for Hessenberg matrices */
 
 #define LAPACK_SHSEQR FORTRAN_ID( shseqr )
 #define LAPACK_DHSEQR FORTRAN_ID( dhseqr )
@@ -227,7 +227,7 @@
 #define LAPACK_ZHSEQR FORTRAN_ID( zhseqr )
 
 /********************************************/
-/* eigenproblems for banded matrices */ 
+/* eigenproblems for banded matrices */
 
 #define LAPACK_SSBEV FORTRAN_ID( ssbev )
 #define LAPACK_DSBEV FORTRAN_ID( dsbev )
@@ -240,7 +240,7 @@
 #define LAPACK_ZHBEVX FORTRAN_ID( zhbevx )
 
 /********************************************/
-/* eigenproblems for tridiagonal matrices */ 
+/* eigenproblems for tridiagonal matrices */
 
 #define LAPACK_SSTEQR FORTRAN_ID( ssteqr )
 #define LAPACK_DSTEQR FORTRAN_ID( dsteqr )
@@ -248,9 +248,9 @@
 /********************************************/
 /* generalized eigenvalue/eigenvector */
 
-#define LAPACK_SSYGV FORTRAN_ID( ssygv ) 
+#define LAPACK_SSYGV FORTRAN_ID( ssygv )
 #define LAPACK_DSYGV FORTRAN_ID( dsygv )
-#define LAPACK_CHEGV FORTRAN_ID( chegv ) 
+#define LAPACK_CHEGV FORTRAN_ID( chegv )
 #define LAPACK_ZHEGV FORTRAN_ID( zhegv )
 
 
@@ -293,7 +293,7 @@
 
 
 /********************************************/
-/* Least Squares */ 
+/* Least Squares */
 
 #define LAPACK_SGELS FORTRAN_ID( sgels )
 #define LAPACK_DGELS FORTRAN_ID( dgels )
@@ -311,10 +311,9 @@
 #define LAPACK_ZGELSD FORTRAN_ID( zgelsd )
 
 /********************************************/
-/* auxiliary */ 
+/* auxiliary */
 
 #define LAPACK_ILAENV FORTRAN_ID( ilaenv )
 
 
-#endif 
-
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/orgqr.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/orgqr.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/orgqr.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -10,13 +10,13 @@
  *
  * \brief Generates an M-by-N real matrix Q with orthonormal columns,
  * which is defined as the first N columns of a product of K elementary
- *	  reflectors of order M
+ *  reflectors of order M
  *        Q  =  H(1) H(2) . . . H(k)
  *
- * \warning 
- * \todo 
+ * \warning
+ * \todo
  * \date 2005
- * \author CEA/DRT/DTSI/SARC 
+ * \author CEA/DRT/DTSI/SARC
  * \author Q.C. PHAM
  *
  **/
@@ -32,59 +32,59 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
-   
+
     ///////////////////////////////////////////////////////////////////
-    /* 
+    /*
      * Generates an M-by-N real matrix Q with orthonormal columns,
-	 * which is defined as the first N columns of a product of K elementary
-	 *	  reflectors of order M
-	 *        Q  =  H(1) H(2) . . . H(k)
-	 * as returned by geqrf().
-	 * The init value of matrix Q is the matrix A returned by geqrf()
-     */ 
-	 ///////////////////////////////////////////////////////////////////
+     * which is defined as the first N columns of a product of K elementary
+     *      reflectors of order M
+     *        Q  =  H(1) H(2) . . . H(k)
+     * as returned by geqrf().
+     * The init value of matrix Q is the matrix A returned by geqrf()
+     */
+     ///////////////////////////////////////////////////////////////////
     namespace detail {
 
 
-      inline 
+      inline
       void orgqr(int const m, int const n, int const k,
                  float* a, int const lda,
-                 float* tau, float* work, int const lwork, int& info) 
+                 float* tau, float* work, int const lwork, int& info)
       {
         LAPACK_SORGQR (&m, &n, &k, a, &lda, tau, work, &lwork, &info);
       }
 
-      inline 
+      inline
       void orgqr(int const m, int const n, int const k,
                  double* a, int const lda,
-                 double* tau, double* work, int const lwork, int& info) 
+                 double* tau, double* work, int const lwork, int& info)
       {
         LAPACK_DORGQR (&m, &n, &k, a, &lda, tau, work, &lwork, &info);
       }
 
-      inline 
+      inline
       void orgqr(int const m, int const n, int const k,
                  traits::complex_f* a, int const lda,
-                 traits::complex_f* tau, traits::complex_f* work, int const lwork, int& info) 
+                 traits::complex_f* tau, traits::complex_f* work, int const lwork, int& info)
       {
         LAPACK_CUNGQR (&m, &n, &k, traits::complex_ptr(a), &lda, traits::complex_ptr(tau),
                        traits::complex_ptr(work), &lwork, &info);
       }
 
-      inline 
+      inline
       void orgqr(int const m, int const n, int const k,
                  traits::complex_d* a, int const lda,
-                 traits::complex_d* tau, traits::complex_d* work, int const lwork, int& info) 
+                 traits::complex_d* tau, traits::complex_d* work, int const lwork, int& info)
       {
         LAPACK_ZUNGQR (&m, &n, &k, traits::complex_ptr(a), &lda, traits::complex_ptr(tau),
                        traits::complex_ptr(work), &lwork, &info);
@@ -93,30 +93,30 @@
     } // fin namespace detail
 
 
-	//--------------------------------------------
+    //--------------------------------------------
 
    template <typename A, typename Tau, typename Work>
    int orgqr(A& a, Tau& tau, Work &work) {
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<A>::matrix_structure, 
+        typename traits::matrix_traits<A>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
+
+      const int m = traits::matrix_size1 (a);
+      const int n = traits::matrix_size2 (a);
+      const int k = n;
 
-	  const int m = traits::matrix_size1 (a);
-	  const int n = traits::matrix_size2 (a);
-	  const int k = n;
-
-	  assert (std::min<int>(m,n) <= traits::vector_size (tau)); 
-      assert (n <= traits::vector_size (work)); 
-	 
-	  int info; 
+      assert (std::min<int>(m,n) <= traits::vector_size (tau));
+      assert (n <= traits::vector_size (work));
+
+      int info;
       detail::orgqr (m, n, k,
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (tau),  
+                     traits::vector_storage (tau),
                      traits::vector_storage (work),
                      traits::vector_size (work),
                      info);
@@ -129,10 +129,10 @@
     template <typename A, typename Tau>
     int orgqr (A& a, Tau& tau, optimal_workspace ) {
        typedef typename A::value_type value_type ;
-	   const int n = traits::matrix_size2 (a);
+       const int n = traits::matrix_size2 (a);
        traits::detail::array<value_type> work(std::max<int>(1, n*32));
        return orgqr( a, tau, work );
-	   
+
     }
 
     // Computation of Q
@@ -141,18 +141,18 @@
     template <typename A, typename Tau>
     int orgqr (A& a, Tau& tau, minimal_workspace ) {
        typedef typename A::value_type value_type ;
-	   const int n = traits::matrix_size2 (a);
+       const int n = traits::matrix_size2 (a);
        traits::detail::array<value_type> work(std::max<int>(1, n));
        return orgqr( a, tau, work );
     }
 
     // Computation of the Q
     // Workspace is taken from the array in workspace.
-   
+
     template <typename A, typename Tau, typename Work>
     int orgqr (A& a, Tau& tau, detail::workspace1<Work> workspace ) {
        typedef typename A::value_type value_type ;
-	   const int n = traits::matrix_size2 (a);
+       const int n = traits::matrix_size2 (a);
        traits::detail::array<value_type> work(std::max<int>(1, n));
        return orgqr( a, tau, workspace.w_ );
     }
@@ -168,4 +168,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/ormqr.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/ormqr.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/ormqr.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -21,13 +21,13 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -35,10 +35,10 @@
     //
     // Apply the orthogonal transformation abtained by geqrf() to
     // a general matrix.
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * ormqr() overwrites the general M by N matrix C with
      *
      *                         SIDE = 'L'     SIDE = 'R'
@@ -61,72 +61,72 @@
      *                     as C.
      *                     We must have that vector_size( work ) >= matrix_size2( c )
      *                     if SIDE=='L' otherwise  vector_size( work ) >= matrix_size1( c )
-     */ 
+     */
 
     namespace detail {
 
-      inline 
+      inline
       void ormqr (char const side, char const trans, int const m, int const n,
-		 int const k, const float* a, int const lda,
-		 const float* tau, float* c,
-		 int const ldc, float* work, int const lwork,
-                 int& info) 
+                 int const k, const float* a, int const lda,
+                 const float* tau, float* c,
+                 int const ldc, float* work, int const lwork,
+                 int& info)
       {
         assert ( trans=='N' || trans=='T' );
         LAPACK_SORMQR (&side, &trans, &m, &n, &k,
-		      a, &lda,
-		      tau,
-		      c, &ldc,
-		      work, &lwork,
-		      &info);
+                      a, &lda,
+                      tau,
+                      c, &ldc,
+                      work, &lwork,
+                      &info);
       }
 
-      inline 
+      inline
       void ormqr (char const side, char const trans, int const m, int const n,
-		 int const k, const double* a, int const lda,
-		 const double* tau, double* c,
-		 int const ldc, double* work, int const lwork,
-                 int& info) 
+                 int const k, const double* a, int const lda,
+                 const double* tau, double* c,
+                 int const ldc, double* work, int const lwork,
+                 int& info)
       {
         assert ( trans=='N' || trans=='T' );
         LAPACK_DORMQR (&side, &trans, &m, &n, &k,
-		      a, &lda,
-		      tau,
-		      c, &ldc,
-		      work, &lwork,
-		      &info);
+                      a, &lda,
+                      tau,
+                      c, &ldc,
+                      work, &lwork,
+                      &info);
       }
 
-      inline 
+      inline
       void ormqr (char const side, char const trans, int const m, int const n,
-		 int const k, const traits::complex_f* a, int const lda,
-		 const traits::complex_f* tau, traits::complex_f* c,
-		 int const ldc, traits::complex_f* work, int const lwork,
-                 int& info) 
+                 int const k, const traits::complex_f* a, int const lda,
+                 const traits::complex_f* tau, traits::complex_f* c,
+                 int const ldc, traits::complex_f* work, int const lwork,
+                 int& info)
       {
         assert ( trans=='N' || trans=='C' );
         LAPACK_CUNMQR (&side, &trans, &m, &n, &k,
-		      traits::complex_ptr(a), &lda,
-		      traits::complex_ptr(tau),
-		      traits::complex_ptr(c), &ldc,
-		      traits::complex_ptr(work), &lwork,
-		      &info);
+                      traits::complex_ptr(a), &lda,
+                      traits::complex_ptr(tau),
+                      traits::complex_ptr(c), &ldc,
+                      traits::complex_ptr(work), &lwork,
+                      &info);
       }
 
-      inline 
+      inline
       void ormqr (char const side, char const trans, int const m, int const n,
-		 int const k, const traits::complex_d* a, int const lda,
-		 const traits::complex_d* tau, traits::complex_d* c,
-		 int const ldc, traits::complex_d* work, int const lwork,
-                 int& info) 
+                 int const k, const traits::complex_d* a, int const lda,
+                 const traits::complex_d* tau, traits::complex_d* c,
+                 int const ldc, traits::complex_d* work, int const lwork,
+                 int& info)
       {
         assert ( trans=='N' || trans=='C' );
         LAPACK_ZUNMQR (&side, &trans, &m, &n, &k,
-		      traits::complex_ptr(a), &lda,
-		      traits::complex_ptr(tau),
-		      traits::complex_ptr(c), &ldc,
-		      traits::complex_ptr(work), &lwork,
-		      &info);
+                      traits::complex_ptr(a), &lda,
+                      traits::complex_ptr(tau),
+                      traits::complex_ptr(c), &ldc,
+                      traits::complex_ptr(work), &lwork,
+                      &info);
       }
 
 
@@ -134,16 +134,16 @@
       int ormqr (char side, char trans, const A& a, const Tau& tau, C& c,
                  Work& work) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<A>::matrix_structure, 
+          typename traits::matrix_traits<A>::matrix_structure,
           traits::general_t
-        >::value)); 
+        >::value));
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<C>::matrix_structure, 
+          typename traits::matrix_traits<C>::matrix_structure,
           traits::general_t
-        >::value)); 
-#endif 
+        >::value));
+#endif
 
         int const m = traits::matrix_size1 (c);
         int const n = traits::matrix_size2 (c);
@@ -156,22 +156,22 @@
         assert ( (side=='L' ?
                   m == traits::matrix_size1 (a) :
                   n == traits::matrix_size1 (a) ) );
-        assert (traits::matrix_size2 (a)==k); 
+        assert (traits::matrix_size2 (a)==k);
 
         assert ( (side=='L' ?
                   lwork >= n : lwork >= m ) );
 
-        int info; 
+        int info;
         ormqr (side, trans, m, n, k,
-                       traits::matrix_storage (a), 
+                       traits::matrix_storage (a),
                        traits::leading_dimension (a),
-                       traits::vector_storage (tau),  
-                       traits::matrix_storage (c), 
+                       traits::vector_storage (tau),
+                       traits::matrix_storage (c),
                        traits::leading_dimension (c),
                        traits::vector_storage (work),
                        lwork,
                        info);
-        return info; 
+        return info;
       }
     } // namespace detail
 
@@ -218,4 +218,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/posv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/posv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/posv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -18,15 +18,15 @@
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/lapack/lapack.h>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/numeric/bindings/traits/detail/symm_herm_traits.hpp>
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -38,60 +38,60 @@
     /////////////////////////////////////////////////////////////////////
 
     /*
-     * posv() computes the solution to a system of linear equations 
-     * A * X = B, where A is an N-by-N symmetric or Hermitian positive 
+     * posv() computes the solution to a system of linear equations
+     * A * X = B, where A is an N-by-N symmetric or Hermitian positive
      * definite matrix and X and B are N-by-NRHS matrices.
      *
      * The Cholesky decomposition is used to factor A as
-     *   A = U^T * U or A = U^H * U,  if UPLO = 'U', 
+     *   A = U^T * U or A = U^H * U,  if UPLO = 'U',
      *   A = L * L^T or A = L * L^H,  if UPLO = 'L',
      * where U is an upper triangular matrix and L is a lower triangular
      * matrix. The factored form of A is then used to solve the system of
      * equations A * X = B.
      * 
-     * If UPLO = 'U', the leading N-by-N upper triangular part of A 
-     * contains the upper triangular part of the matrix A, and the 
-     * strictly lower triangular part of A is not referenced. 
-     * If UPLO = 'L', the leading N-by-N lower triangular part of A 
-     * contains the lower triangular part of the matrix A, and the 
+     * If UPLO = 'U', the leading N-by-N upper triangular part of A
+     * contains the upper triangular part of the matrix A, and the
+     * strictly lower triangular part of A is not referenced.
+     * If UPLO = 'L', the leading N-by-N lower triangular part of A
+     * contains the lower triangular part of the matrix A, and the
      * strictly upper triangular part of A is not referenced.
      */
 
     namespace detail {
 
-      inline 
+      inline
       void posv (char const uplo, int const n, int const nrhs,
-                 float* a, int const lda, 
-                 float* b, int const ldb, int* info) 
+                 float* a, int const lda,
+                 float* b, int const ldb, int* info)
       {
         LAPACK_SPOSV (&uplo, &n, &nrhs, a, &lda, b, &ldb, info);
       }
 
-      inline 
+      inline
       void posv (char const uplo, int const n, int const nrhs,
-                 double* a, int const lda, 
-                 double* b, int const ldb, int* info) 
+                 double* a, int const lda,
+                 double* b, int const ldb, int* info)
       {
         LAPACK_DPOSV (&uplo, &n, &nrhs, a, &lda, b, &ldb, info);
       }
 
-      inline 
+      inline
       void posv (char const uplo, int const n, int const nrhs,
-                 traits::complex_f* a, int const lda, 
-                 traits::complex_f* b, int const ldb, int* info) 
+                 traits::complex_f* a, int const lda,
+                 traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CPOSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, 
+        LAPACK_CPOSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda,
                       traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void posv (char const uplo, int const n, int const nrhs,
-                 traits::complex_d* a, int const lda, 
-                 traits::complex_d* b, int const ldb, int* info) 
+                 traits::complex_d* a, int const lda,
+                 traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZPOSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, 
+        LAPACK_ZPOSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda,
                       traits::complex_ptr (b), &ldb, info);
       }
 
@@ -100,14 +100,14 @@
         int const n = traits::matrix_size1 (a);
         assert (n == traits::matrix_size2 (a));
         assert (n == traits::matrix_size1 (b));
-        int info; 
+        int info;
         posv (uplo, n, traits::matrix_size2 (b),
-              traits::matrix_storage (a), 
+              traits::matrix_storage (a),
               traits::leading_dimension (a),
-              traits::matrix_storage (b), 
-              traits::leading_dimension (b), 
+              traits::matrix_storage (b),
+              traits::leading_dimension (b),
               &info);
-        return info; 
+        return info;
       }
 
     }
@@ -116,20 +116,20 @@
     inline
     int posv (char const uplo, SymmMatrA& a, MatrB& b) {
 
-      assert (uplo == 'U' || uplo == 'L'); 
+      assert (uplo == 'U' || uplo == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmMatrA>::matrix_structure, 
+        typename traits::matrix_traits<SymmMatrA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      return detail::posv (uplo, a, b); 
+      return detail::posv (uplo, a, b);
     }
 
     template <typename SymmMatrA, typename MatrB>
@@ -141,81 +141,81 @@
       typedef typename matraits::value_type val_t;
       BOOST_STATIC_ASSERT( (traits::detail::symm_herm_compatible< val_t, typename matraits::matrix_structure >::value ) ) ;
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::posv (uplo, a, b); 
+      return detail::posv (uplo, a, b);
     }
 
 
     /*
      * potrf() computes the Cholesky factorization of a symmetric
-     * or Hermitian positive definite matrix A. The factorization has 
+     * or Hermitian positive definite matrix A. The factorization has
      * the form
-     *   A = U^T * U or A = U^H * U,  if UPLO = 'U', 
+     *   A = U^T * U or A = U^H * U,  if UPLO = 'U',
      *   A = L * L^T or A = L * L^H,  if UPLO = 'L',
      * where U is an upper triangular matrix and L is lower triangular.
      */
 
     namespace detail {
 
-      inline 
-      void potrf (char const uplo, int const n, 
-                  float* a, int const lda, int* info) 
+      inline
+      void potrf (char const uplo, int const n,
+                  float* a, int const lda, int* info)
       {
         LAPACK_SPOTRF (&uplo, &n, a, &lda, info);
       }
 
-      inline 
-      void potrf (char const uplo, int const n, 
-                  double* a, int const lda, int* info) 
+      inline
+      void potrf (char const uplo, int const n,
+                  double* a, int const lda, int* info)
       {
         LAPACK_DPOTRF (&uplo, &n, a, &lda, info);
       }
 
-      inline 
-      void potrf (char const uplo, int const n, 
-                  traits::complex_f* a, int const lda, int* info) 
+      inline
+      void potrf (char const uplo, int const n,
+                  traits::complex_f* a, int const lda, int* info)
       {
         LAPACK_CPOTRF (&uplo, &n, traits::complex_ptr (a), &lda, info);
       }
 
-      inline 
-      void potrf (char const uplo, int const n, 
-                  traits::complex_d* a, int const lda, int* info) 
+      inline
+      void potrf (char const uplo, int const n,
+                  traits::complex_d* a, int const lda, int* info)
       {
         LAPACK_ZPOTRF (&uplo, &n, traits::complex_ptr (a), &lda, info);
       }
 
-      template <typename SymmMatrA> 
+      template <typename SymmMatrA>
       int potrf (char const uplo, SymmMatrA& a) {
         int const n = traits::matrix_size1 (a);
         assert (n == traits::matrix_size2 (a));
-        int info; 
-        potrf (uplo, n, traits::matrix_storage (a), 
+        int info;
+        potrf (uplo, n, traits::matrix_storage (a),
                traits::leading_dimension (a), &info);
-        return info; 
+        return info;
       }
 
     }
 
-    template <typename SymmMatrA> 
+    template <typename SymmMatrA>
     inline
     int potrf (char const uplo, SymmMatrA& a) {
 
-      assert (uplo == 'U' || uplo == 'L'); 
+      assert (uplo == 'U' || uplo == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmMatrA>::matrix_structure, 
+        typename traits::matrix_traits<SymmMatrA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      return detail::potrf (uplo, a); 
+      return detail::potrf (uplo, a);
     }
 
     template <typename SymmMatrA>
@@ -230,53 +230,53 @@
         typename traits::detail::symm_herm_t<val_t>::type
       >::value));
 #endif
-      
+
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::potrf (uplo, a); 
+      return detail::potrf (uplo, a);
     }
 
 
     /*
-     * potrs() solves a system of linear equations A*X = B with 
-     * a symmetric or Hermitian positive definite matrix A using 
+     * potrs() solves a system of linear equations A*X = B with
+     * a symmetric or Hermitian positive definite matrix A using
      * the Cholesky factorization computed by potrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void potrs (char const uplo, int const n, int const nrhs,
-                  float const* a, int const lda, 
-                  float* b, int const ldb, int* info) 
+                  float const* a, int const lda,
+                  float* b, int const ldb, int* info)
       {
         LAPACK_SPOTRS (&uplo, &n, &nrhs, a, &lda, b, &ldb, info);
       }
 
-      inline 
+      inline
       void potrs (char const uplo, int const n, int const nrhs,
-                  double const* a, int const lda, 
-                  double* b, int const ldb, int* info) 
+                  double const* a, int const lda,
+                  double* b, int const ldb, int* info)
       {
         LAPACK_DPOTRS (&uplo, &n, &nrhs, a, &lda, b, &ldb, info);
       }
 
-      inline 
+      inline
       void potrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_f const* a, int const lda, 
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* a, int const lda,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CPOTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, 
+        LAPACK_CPOTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (a), &lda,
                        traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void potrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_d const* a, int const lda, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* a, int const lda,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZPOTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, 
+        LAPACK_ZPOTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (a), &lda,
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -285,18 +285,18 @@
         int const n = traits::matrix_size1 (a);
         assert (n == traits::matrix_size2 (a));
         assert (n == traits::matrix_size1 (b));
-        int info; 
+        int info;
         potrs (uplo, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-               traits::matrix_storage (a), 
+               traits::matrix_storage (a),
 #else
-               traits::matrix_storage_const (a), 
-#endif 
+               traits::matrix_storage_const (a),
+#endif
                traits::leading_dimension (a),
-               traits::matrix_storage (b), 
-               traits::leading_dimension (b), 
+               traits::matrix_storage (b),
+               traits::leading_dimension (b),
                &info);
-        return info; 
+        return info;
       }
 
     }
@@ -305,20 +305,20 @@
     inline
     int potrs (char const uplo, SymmMatrA const& a, MatrB& b) {
 
-      assert (uplo == 'U' || uplo == 'L'); 
+      assert (uplo == 'U' || uplo == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmMatrA>::matrix_structure, 
+        typename traits::matrix_traits<SymmMatrA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      return detail::potrs (uplo, a, b); 
+      return detail::potrs (uplo, a, b);
     }
 
     template <typename SymmMatrA, typename MatrB>
@@ -339,13 +339,13 @@
 #endif
 
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::potrs (uplo, a, b); 
+      return detail::potrs (uplo, a, b);
     }
 
-    // TO DO: potri() 
+    // TO DO: potri()
 
   }
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/ppsv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/ppsv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/ppsv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Kresimir Fresl Toon Knapen 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -19,15 +19,15 @@
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/lapack/lapack.h>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/numeric/bindings/traits/detail/symm_herm_traits.hpp>
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -35,60 +35,60 @@
     //
     // system of linear equations A * X = B
     // with A symmetric or Hermitian positive definite matrix
-    // stored in packed format 
+    // stored in packed format
     //
     /////////////////////////////////////////////////////////////////////
 
     /*
-     * ppsv() computes the solution to a system of linear equations 
-     * A * X = B, where A is an N-by-N symmetric or Hermitian positive 
-     * definite matrix stored in packed format and X and B are N-by-NRHS 
+     * ppsv() computes the solution to a system of linear equations
+     * A * X = B, where A is an N-by-N symmetric or Hermitian positive
+     * definite matrix stored in packed format and X and B are N-by-NRHS
      * matrices.
      *
      * The Cholesky decomposition is used to factor A as
-     *   A = U^T * U or A = U^H * U,  if UPLO = 'U', 
+     *   A = U^T * U or A = U^H * U,  if UPLO = 'U',
      *   A = L * L^T or A = L * L^H,  if UPLO = 'L',
      * where U is an upper triangular matrix and L is a lower triangular
      * matrix. The factored form of A is then used to solve the system of
      * equations A * X = B.
-     * 
-     * Only upper or lower triangle of the symmetric matrix A is stored,  
-     * packed columnwise in a linear array AP. 
+     *
+     * Only upper or lower triangle of the symmetric matrix A is stored,
+     * packed columnwise in a linear array AP.
      */
 
     namespace detail {
 
-      inline 
+      inline
       void ppsv (char const uplo, int const n, int const nrhs,
-                 float* ap, float* b, int const ldb, int* info) 
+                 float* ap, float* b, int const ldb, int* info)
       {
         LAPACK_SPPSV (&uplo, &n, &nrhs, ap, b, &ldb, info);
       }
 
-      inline 
+      inline
       void ppsv (char const uplo, int const n, int const nrhs,
-                 double* ap, double* b, int const ldb, int* info) 
+                 double* ap, double* b, int const ldb, int* info)
       {
         LAPACK_DPPSV (&uplo, &n, &nrhs, ap, b, &ldb, info);
       }
 
-      inline 
+      inline
       void ppsv (char const uplo, int const n, int const nrhs,
-                 traits::complex_f* ap, traits::complex_f* b, int const ldb, 
-                 int* info) 
+                 traits::complex_f* ap, traits::complex_f* b, int const ldb,
+                 int* info)
       {
-        LAPACK_CPPSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (ap), 
+        LAPACK_CPPSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (ap),
                       traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void ppsv (char const uplo, int const n, int const nrhs,
-                 traits::complex_d* ap, traits::complex_d* b, int const ldb, 
-                 int* info) 
+                 traits::complex_d* ap, traits::complex_d* b, int const ldb,
+                 int* info)
       {
-        LAPACK_ZPPSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (ap), 
+        LAPACK_ZPPSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (ap),
                       traits::complex_ptr (b), &ldb, info);
       }
 
@@ -105,7 +105,7 @@
         >::type
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
@@ -115,47 +115,47 @@
       assert (n == traits::matrix_size1 (b));
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
+      int info;
       detail::ppsv (uplo, n, traits::matrix_size2 (b),
-                    traits::matrix_storage (a), 
-                    traits::matrix_storage (b), 
-                    traits::leading_dimension (b), 
+                    traits::matrix_storage (a),
+                    traits::matrix_storage (b),
+                    traits::leading_dimension (b),
                     &info);
-      return info; 
+      return info;
     }
 
 
     /*
      * pptrf() computes the Cholesky factorization of a symmetric
-     * or Hermitian positive definite matrix A in packed storage. 
+     * or Hermitian positive definite matrix A in packed storage.
      * The factorization has the form
-     *   A = U^T * U or A = U^H * U,  if UPLO = 'U', 
+     *   A = U^T * U or A = U^H * U,  if UPLO = 'U',
      *   A = L * L^T or A = L * L^H,  if UPLO = 'L',
      * where U is an upper triangular matrix and L is lower triangular.
      */
 
     namespace detail {
 
-      inline 
+      inline
       void pptrf (char const uplo, int const n, float* ap, int* info) {
         LAPACK_SPPTRF (&uplo, &n, ap, info);
       }
 
-      inline 
+      inline
       void pptrf (char const uplo, int const n, double* ap, int* info) {
         LAPACK_DPPTRF (&uplo, &n, ap, info);
       }
 
-      inline 
-      void pptrf (char const uplo, int const n, 
-                  traits::complex_f* ap, int* info) 
+      inline
+      void pptrf (char const uplo, int const n,
+                  traits::complex_f* ap, int* info)
       {
         LAPACK_CPPTRF (&uplo, &n, traits::complex_ptr (ap), info);
       }
 
-      inline 
-      void pptrf (char const uplo, int const n, 
-                  traits::complex_d* ap, int* info) 
+      inline
+      void pptrf (char const uplo, int const n,
+                  traits::complex_d* ap, int* info)
       {
         LAPACK_ZPPTRF (&uplo, &n, traits::complex_ptr (ap), info);
       }
@@ -177,51 +177,51 @@
       int const n = traits::matrix_size1 (a);
       assert (n == traits::matrix_size2 (a));
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
+      int info;
       detail::pptrf (uplo, n, traits::matrix_storage (a), &info);
-      return info; 
+      return info;
     }
 
 
     /*
-     * pptrs() solves a system of linear equations A*X = B with 
-     * a symmetric or Hermitian positive definite matrix A in packed 
+     * pptrs() solves a system of linear equations A*X = B with
+     * a symmetric or Hermitian positive definite matrix A in packed
      * storage using the Cholesky factorization computed by pptrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void pptrs (char const uplo, int const n, int const nrhs,
-                  float const* ap, float* b, int const ldb, int* info) 
+                  float const* ap, float* b, int const ldb, int* info)
       {
         LAPACK_SPPTRS (&uplo, &n, &nrhs, ap, b, &ldb, info);
       }
 
-      inline 
+      inline
       void pptrs (char const uplo, int const n, int const nrhs,
-                  double const* ap, double* b, int const ldb, int* info) 
+                  double const* ap, double* b, int const ldb, int* info)
       {
         LAPACK_DPPTRS (&uplo, &n, &nrhs, ap, b, &ldb, info);
       }
 
-      inline 
+      inline
       void pptrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_f const* ap, 
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* ap,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CPPTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (ap), 
+        LAPACK_CPPTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (ap),
                        traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void pptrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_d const* ap, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* ap,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZPPTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (ap), 
+        LAPACK_ZPPTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (ap),
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -238,7 +238,7 @@
         >::type
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
@@ -248,17 +248,17 @@
       assert (n == traits::matrix_size1 (b));
       
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
+      int info;
       detail::pptrs (uplo, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
 #else
-                     traits::matrix_storage_const (a), 
+                     traits::matrix_storage_const (a),
 #endif 
-                     traits::matrix_storage (b), 
-                     traits::leading_dimension (b), 
+                     traits::matrix_storage (b),
+                     traits::leading_dimension (b),
                      &info);
-      return info; 
+      return info;
     }
 
 
@@ -270,26 +270,26 @@
     
     namespace detail {
 
-      inline 
+      inline
       void pptri (char const uplo, int const n, float* ap, int* info) {
         LAPACK_SPPTRI (&uplo, &n, ap, info);
       }
 
-      inline 
+      inline
       void pptri (char const uplo, int const n, double* ap, int* info) {
         LAPACK_DPPTRI (&uplo, &n, ap, info);
       }
 
-      inline 
-      void pptri (char const uplo, int const n, 
-                  traits::complex_f* ap, int* info) 
+      inline
+      void pptri (char const uplo, int const n,
+                  traits::complex_f* ap, int* info)
       {
         LAPACK_CPPTRI (&uplo, &n, traits::complex_ptr (ap), info);
       }
 
-      inline 
-      void pptri (char const uplo, int const n, 
-                  traits::complex_d* ap, int* info) 
+      inline
+      void pptri (char const uplo, int const n,
+                  traits::complex_d* ap, int* info)
       {
         LAPACK_ZPPTRI(&uplo, &n, traits::complex_ptr (ap), info);
       }
@@ -311,9 +311,9 @@
       int const n = traits::matrix_size1 (a);
       assert (n == traits::matrix_size2 (a));
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
+      int info;
       detail::pptri (uplo, n, traits::matrix_storage (a), &info);
-      return info; 
+      return info;
     }
 
 
@@ -321,4 +321,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/ptsv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/ptsv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/ptsv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,5 +1,5 @@
 /*
- * 
+ *
  * Copyright (c) Karl Meerbergen 2008
  *
  * Distributed under the Boost Software License, Version 1.0.
@@ -15,13 +15,13 @@
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/lapack/lapack.h>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -43,32 +43,32 @@
 
     namespace detail {
 
-      inline 
+      inline
       void ptsv ( int const n, int const nrhs,
-                 float* d, float* e, float* b, int const ldb, int* info) 
+                 float* d, float* e, float* b, int const ldb, int* info)
       {
         LAPACK_SPTSV (&n, &nrhs, d, e, b, &ldb, info);
       }
 
-      inline 
+      inline
       void ptsv ( int const n, int const nrhs,
-                 double* d, double* e, double* b, int const ldb, int* info) 
+                 double* d, double* e, double* b, int const ldb, int* info)
       {
         LAPACK_DPTSV (&n, &nrhs, d, e, b, &ldb, info);
       }
 
-      inline 
+      inline
       void ptsv ( int const n, int const nrhs,
-                 float* d, traits::complex_f* e, traits::complex_f* b, int const ldb, 
-                 int* info) 
+                 float* d, traits::complex_f* e, traits::complex_f* b, int const ldb,
+                 int* info)
       {
         LAPACK_CPTSV (&n, &nrhs, d, traits::complex_ptr(e), traits::complex_ptr(b), &ldb, info);
       }
 
-      inline 
+      inline
       void ptsv ( int const n, int const nrhs,
-                 double* d, traits::complex_d* e, traits::complex_d* b, int const ldb, 
-                 int* info) 
+                 double* d, traits::complex_d* e, traits::complex_d* b, int const ldb,
+                 int* info)
       {
         LAPACK_ZPTSV (&n, &nrhs, d, traits::complex_ptr(e), traits::complex_ptr(b), &ldb, info);
       }
@@ -101,24 +101,24 @@
 
     namespace detail {
 
-      inline 
+      inline
       void pttrf ( int const n, float* d, float* e, int* info) {
         LAPACK_SPTTRF ( &n, d, e, info) ;
       }
 
-      inline 
+      inline
       void pttrf ( int const n, double* d, double* e, int* info) {
         LAPACK_DPTTRF ( &n, d, e, info);
       }
 
-      inline 
-      void pttrf ( int const n, float* d, traits::complex_f* e, int* info) 
+      inline
+      void pttrf ( int const n, float* d, traits::complex_f* e, int* info)
       {
         LAPACK_CPTTRF ( &n, d, traits::complex_ptr(e), info);
       }
 
-      inline 
-      void pttrf ( int const n, double* d, traits::complex_d* e, int* info) 
+      inline
+      void pttrf ( int const n, double* d, traits::complex_d* e, int* info)
       {
         LAPACK_ZPTTRF ( &n, d, traits::complex_ptr(e), info);
       }
@@ -129,9 +129,9 @@
     int pttrf (D& d, E& e) {
       int const n = traits::vector_size (d);
       assert (n == traits::vector_size (e) + 1);
-      int info; 
+      int info;
       detail::pttrf ( n, traits::vector_storage(d), traits::vector_storage(e), &info);
-      return info; 
+      return info;
     }
 
 
@@ -146,39 +146,39 @@
 
     namespace detail {
 
-      inline 
+      inline
       void pttrs (char const uplo, int const n, int const nrhs,
-                  float const* d, float const* e, float* b, int const ldb, int* info) 
+                  float const* d, float const* e, float* b, int const ldb, int* info)
       {
         LAPACK_SPTTRS (&n, &nrhs, d, e, b, &ldb, info);
       }
 
-      inline 
+      inline
       void pttrs (char const uplo, int const n, int const nrhs,
-                  double const* d, double const* e, double* b, int const ldb, int* info) 
+                  double const* d, double const* e, double* b, int const ldb, int* info)
       {
         LAPACK_DPTTRS (&n, &nrhs, d, e, b, &ldb, info);
       }
 
-      inline 
+      inline
       void pttrs (char const uplo, int const n, int const nrhs,
-                  float const* d, 
+                  float const* d,
                   traits::complex_f const* e, 
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CPTTRS (&uplo, &n, &nrhs, d, 
-                       traits::complex_ptr (e), 
+        LAPACK_CPTTRS (&uplo, &n, &nrhs, d,
+                       traits::complex_ptr (e),
                        traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void pttrs (char const uplo, int const n, int const nrhs,
-                  double const* d, 
-                  traits::complex_d const* e, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  double const* d,
+                  traits::complex_d const* e,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZPTTRS (&uplo, &n, &nrhs, d, 
-                       traits::complex_ptr (e), 
+        LAPACK_ZPTTRS (&uplo, &n, &nrhs, d,
+                       traits::complex_ptr (e),
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -189,19 +189,19 @@
       int const n = traits::vector_size (d);
       assert (n == traits::vector_size (e) + 1);
       assert (n == traits::matrix_num_rows (b));
-      
-      int info; 
+
+      int info;
       detail::pttrs (uplo, n, traits::matrix_num_columns (b),
-                     traits::vector_storage (d), 
-                     traits::vector_storage (e), 
-                     traits::matrix_storage (b), 
-                     traits::leading_dimension (b), 
+                     traits::vector_storage (d),
+                     traits::vector_storage (e),
+                     traits::matrix_storage (b),
+                     traits::leading_dimension (b),
                      &info);
-      return info; 
+      return info;
     } // pttrs()
 
   }
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/spsv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/spsv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/spsv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Kresimir Fresl & Toon Knapen 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -19,14 +19,14 @@
 #include <boost/numeric/bindings/lapack/lapack.h>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -38,55 +38,55 @@
     /////////////////////////////////////////////////////////////////////
 
     /*
-     * spsv() computes the solution to a system of linear equations 
-     * A * X = B, where A is an N-by-N symmetric matrix stored in packed 
+     * spsv() computes the solution to a system of linear equations
+     * A * X = B, where A is an N-by-N symmetric matrix stored in packed
      * format and X and B are N-by-NRHS matrices.
      *
      * The diagonal pivoting method is used to factor A as
-     *   A = U * D * U^T,  if UPLO = 'U', 
+     *   A = U * D * U^T,  if UPLO = 'U',
      *   A = L * D * L^T,  if UPLO = 'L',
-     * where  U (or L) is a product of permutation and unit upper 
-     * (lower) triangular matrices, and D is symmetric and block 
-     * diagonal with 1-by-1 and 2-by-2 diagonal blocks.  
-     * The factored form of A is then used to solve the system 
+     * where  U (or L) is a product of permutation and unit upper
+     * (lower) triangular matrices, and D is symmetric and block
+     * diagonal with 1-by-1 and 2-by-2 diagonal blocks.
+     * The factored form of A is then used to solve the system
      * of equations A * X = B.
      */
 
     namespace detail {
 
-      inline 
+      inline
       void spsv (char const uplo, int const n, int const nrhs,
-                 float* ap, int* ipiv, 
-                 float* b, int const ldb, int* info) 
+                 float* ap, int* ipiv,
+                 float* b, int const ldb, int* info)
       {
         LAPACK_SSPSV (&uplo, &n, &nrhs, ap, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void spsv (char const uplo, int const n, int const nrhs,
-                 double* ap, int* ipiv, 
-                 double* b, int const ldb, int* info) 
+                 double* ap, int* ipiv,
+                 double* b, int const ldb, int* info)
       {
         LAPACK_DSPSV (&uplo, &n, &nrhs, ap, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void spsv (char const uplo, int const n, int const nrhs,
-                 traits::complex_f* ap, int* ipiv,  
-                 traits::complex_f* b, int const ldb, int* info) 
+                 traits::complex_f* ap, int* ipiv,
+                 traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CSPSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (ap), ipiv, 
+        LAPACK_CSPSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (ap), ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void spsv (char const uplo, int const n, int const nrhs,
-                 traits::complex_d* ap, int* ipiv, 
-                 traits::complex_d* b, int const ldb, int* info) 
+                 traits::complex_d* ap, int* ipiv,
+                 traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZSPSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (ap), ipiv, 
+        LAPACK_ZSPSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (ap), ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
@@ -95,28 +95,28 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<SymmA>::matrix_structure, 
+          typename traits::matrix_traits<SymmA>::matrix_structure,
           traits::symmetric_packed_t
         >::value));
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<MatrB>::matrix_structure, 
+          typename traits::matrix_traits<MatrB>::matrix_structure,
           traits::general_t
         >::value));
 #endif
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::matrix_size1 (b)); 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::matrix_size1 (b));
 
         char uplo = traits::matrix_uplo_tag (a);
-        int info; 
-        spsv (uplo, n, traits::matrix_size2 (b), 
-              traits::matrix_storage (a), 
-              traits::vector_storage (i),  
+        int info;
+        spsv (uplo, n, traits::matrix_size2 (b),
+              traits::matrix_storage (a),
+              traits::vector_storage (i),
               traits::matrix_storage (b),
               traits::leading_dimension (b),
               &info);
-        return info; 
+        return info;
       }
 
     }
@@ -124,59 +124,59 @@
     template <typename SymmA, typename MatrB, typename IVec>
     inline
     int spsv (SymmA& a, IVec& i, MatrB& b) {
-      assert (traits::matrix_size1 (a) == traits::vector_size (i)); 
-      return detail::spsv (a, i, b); 
+      assert (traits::matrix_size1 (a) == traits::vector_size (i));
+      return detail::spsv (a, i, b);
     }
 
     template <typename SymmA, typename MatrB>
     int spsv (SymmA& a, MatrB& b) {
       // with 'internal' pivot vector
 
-      int info = -101; 
-      traits::detail::array<int> i (traits::matrix_size1 (a)); 
+      int info = -101;
+      traits::detail::array<int> i (traits::matrix_size1 (a));
 
-      if (i.valid()) 
-        info = detail::spsv (a, i, b); 
-      return info; 
+      if (i.valid())
+        info = detail::spsv (a, i, b);
+      return info;
     }
 
 
     /*
-     * sptrf() computes the factorization of a symmetric matrix A 
-     * in packed storage using the  Bunch-Kaufman diagonal pivoting 
+     * sptrf() computes the factorization of a symmetric matrix A
+     * in packed storage using the  Bunch-Kaufman diagonal pivoting
      * method. The form of the factorization is
      *    A = U * D * U^T  or  A = L * D * L^T
-     * where U (or L) is a product of permutation and unit upper (lower)  
-     * triangular matrices, and D is symmetric and block diagonal with 
+     * where U (or L) is a product of permutation and unit upper (lower)
+     * triangular matrices, and D is symmetric and block diagonal with
      * 1-by-1 and 2-by-2 diagonal blocks.
      */
 
     namespace detail {
 
-      inline 
-      void sptrf (char const uplo, int const n, 
-                  float* ap, int* ipiv, int* info) 
+      inline
+      void sptrf (char const uplo, int const n,
+                  float* ap, int* ipiv, int* info)
       {
         LAPACK_SSPTRF (&uplo, &n, ap, ipiv, info);
       }
 
-      inline 
-      void sptrf (char const uplo, int const n, 
-                  double* ap, int* ipiv, int* info) 
+      inline
+      void sptrf (char const uplo, int const n,
+                  double* ap, int* ipiv, int* info)
       {
         LAPACK_DSPTRF (&uplo, &n, ap, ipiv, info);
       }
 
-      inline 
-      void sptrf (char const uplo, int const n, 
-                  traits::complex_f* ap, int* ipiv, int* info) 
+      inline
+      void sptrf (char const uplo, int const n,
+                  traits::complex_f* ap, int* ipiv, int* info)
       {
         LAPACK_CSPTRF (&uplo, &n, traits::complex_ptr (ap), ipiv, info);
       }
 
-      inline 
-      void sptrf (char const uplo, int const n, 
-                  traits::complex_d* ap, int* ipiv, int* info) 
+      inline
+      void sptrf (char const uplo, int const n,
+                  traits::complex_d* ap, int* ipiv, int* info)
       {
         LAPACK_ZSPTRF (&uplo, &n, traits::complex_ptr (ap), ipiv, info);
       }
@@ -188,65 +188,65 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_packed_t
       >::value));
 #endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::vector_size (i)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::vector_size (i));
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
-      detail::sptrf (uplo, n, traits::matrix_storage (a), 
+      int info;
+      detail::sptrf (uplo, n, traits::matrix_storage (a),
                      traits::vector_storage (i), &info);
-      return info; 
+      return info;
     }
 
 
     /*
-     * sptrs() solves a system of linear equations A*X = B with 
-     * a symmetric matrix A in packed storage using the factorization 
+     * sptrs() solves a system of linear equations A*X = B with
+     * a symmetric matrix A in packed storage using the factorization
      *    A = U * D * U^T   or  A = L * D * L^T
      * computed by sptrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void sptrs (char const uplo, int const n, int const nrhs,
-                  float const* a, int const* ipiv, 
-                  float* b, int const ldb, int* info) 
+                  float const* a, int const* ipiv,
+                  float* b, int const ldb, int* info)
       {
         LAPACK_SSPTRS (&uplo, &n, &nrhs, a, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void sptrs (char const uplo, int const n, int const nrhs,
-                  double const* a, int const* ipiv, 
-                  double* b, int const ldb, int* info) 
+                  double const* a, int const* ipiv,
+                  double* b, int const ldb, int* info)
       {
         LAPACK_DSPTRS (&uplo, &n, &nrhs, a, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void sptrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_f const* a, int const* ipiv,  
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* a, int const* ipiv,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CSPTRS (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), ipiv, 
+        LAPACK_CSPTRS (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void sptrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_d const* a, int const* ipiv, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* a, int const* ipiv,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZSPTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (a), ipiv, 
+        LAPACK_ZSPTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (a), ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -257,98 +257,98 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_packed_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::matrix_size1 (b)); 
-      assert (n == traits::vector_size (i)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::matrix_size1 (b));
+      assert (n == traits::vector_size (i));
 
       char uplo = traits::matrix_uplo_tag (a);
       int info; 
-      detail::sptrs (uplo, n, traits::matrix_size2 (b), 
+      detail::sptrs (uplo, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-                     traits::matrix_storage (a), 
-                     traits::vector_storage (i),  
+                     traits::matrix_storage (a),
+                     traits::vector_storage (i),
 #else
-                     traits::matrix_storage_const (a), 
-                     traits::vector_storage_const (i),  
+                     traits::matrix_storage_const (a),
+                     traits::vector_storage_const (i),
 #endif 
                      traits::matrix_storage (b),
-                     traits::leading_dimension (b), 
+                     traits::leading_dimension (b),
                      &info);
-      return info; 
+      return info;
     }
 
 
     namespace detail {
-      inline 
-      void sptri (char const uplo, int const n, 
-          float* ap, int* ipiv, float* work, int* info) 
+      inline
+      void sptri (char const uplo, int const n,
+          float* ap, int* ipiv, float* work, int* info)
       {
         LAPACK_SSPTRI (&uplo, &n, ap, ipiv, work, info);
       }
 
-      inline 
-      void sptri (char const uplo, int const n, 
-          double* ap, int* ipiv, double* work, int* info) 
+      inline
+      void sptri (char const uplo, int const n,
+          double* ap, int* ipiv, double* work, int* info)
       {
         LAPACK_DSPTRI (&uplo, &n, ap, ipiv, work, info);
       }
 
-      inline 
-      void sptri (char const uplo, int const n, 
-          traits::complex_f* ap, int* ipiv, traits::complex_f* work, int* info) 
+      inline
+      void sptri (char const uplo, int const n,
+          traits::complex_f* ap, int* ipiv, traits::complex_f* work, int* info)
       {
-        LAPACK_CSPTRI (&uplo, &n, traits::complex_ptr (ap), 
+        LAPACK_CSPTRI (&uplo, &n, traits::complex_ptr (ap),
             ipiv, traits::complex_ptr (work), info);
       }
 
-      inline 
-      void sptri (char const uplo, int const n, 
-          traits::complex_d* ap, int* ipiv, traits::complex_d* work, int* info) 
+      inline
+      void sptri (char const uplo, int const n,
+          traits::complex_d* ap, int* ipiv, traits::complex_d* work, int* info)
       {
-        LAPACK_ZSPTRI (&uplo, &n, traits::complex_ptr (ap), 
+        LAPACK_ZSPTRI (&uplo, &n, traits::complex_ptr (ap),
             ipiv, traits::complex_ptr (work), info);
       }
     } // namespace detail
 
     template <typename SymmA, typename IVec>
-    int sptri (SymmA& a, IVec& ipiv) 
+    int sptri (SymmA& a, IVec& ipiv)
     {
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_packed_t
       >::value));
 #endif
 
       int const n = traits::matrix_size1 (a);
-      assert (n == traits::matrix_size2 (a)); 
-      assert (n == traits::vector_size (ipiv)); 
+      assert (n == traits::matrix_size2 (a));
+      assert (n == traits::vector_size (ipiv));
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info; 
+      int info;
 
       typedef typename SymmA::value_type value_type;
       traits::detail::array<value_type> work(traits::matrix_size1(a));
 
-      detail::sptri (uplo, n, traits::matrix_storage (a), 
+      detail::sptri (uplo, n, traits::matrix_storage (a),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-          traits::vector_storage (ipiv),  
+          traits::vector_storage (ipiv),
 #else
-          traits::vector_storage_const (ipiv), 
+          traits::vector_storage_const (ipiv),
 #endif
           traits::vector_storage (work),
           &info);
-      return info; 
+      return info;
     }
 
   } // namespace lapack
@@ -358,4 +358,4 @@
 
 
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/steqr.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/steqr.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/steqr.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,8 +1,8 @@
 //
 // Copyright Karl Meerbergen 2007
 //
-// Distributed under the Boost Software License, Version 1.0. 
-// (See accompanying file LICENSE_1_0.txt or copy at 
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
@@ -17,10 +17,10 @@
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/lapack/lapack.h>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 
   /********************************************************************/
@@ -34,14 +34,14 @@
 
     namespace detail {
 
-      inline 
-      void steqr ( char compz, int n, float* d, float* e, float* z, int ldz, float* work, int& info ) 
+      inline
+      void steqr ( char compz, int n, float* d, float* e, float* z, int ldz, float* work, int& info )
       {
         LAPACK_SSTEQR( &compz, &n, d, e, z, &ldz, work, &info ) ;
       }
 
-      inline 
-      void steqr ( char compz, int n, double* d, double* e, double* z, int ldz, double* work, int& info ) 
+      inline
+      void steqr ( char compz, int n, double* d, double* e, double* z, int ldz, double* work, int& info )
       {
         LAPACK_DSTEQR( &compz, &n, d, e, z, &ldz, work, &info ) ;
       }
@@ -60,15 +60,15 @@
 
       int lwork = traits::vector_size( work ) ;
 
-      int info; 
+      int info;
       detail::steqr( compz, n,
-                     traits::vector_storage( d ), 
-                     traits::vector_storage( e ), 
-                     traits::matrix_storage( z ), 
-                     traits::leading_dimension( z ), 
-                     traits::vector_storage( work ),  
+                     traits::vector_storage( d ),
+                     traits::vector_storage( e ),
+                     traits::matrix_storage( z ),
+                     traits::leading_dimension( z ),
+                     traits::vector_storage( work ),
                      info ) ;
-      return info; 
+      return info;
     } // steqr()
 
 
Modified: sandbox/boost/numeric/bindings/lapack/syev.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/syev.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/syev.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen, Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -20,25 +20,25 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Eigendecomposition of a real symmetric matrix A = Q * D * Q'
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * syev() computes the eigendecomposition of a N x N matrix
      * A = Q * D * Q',  where Q is a N x N orthogonal matrix and
      * D is a diagonal matrix. The diagonal elements D(i,i) is an
@@ -52,22 +52,22 @@
      *           'N' : do not compute eigenvectors
      *    uplo : 'U' : only the upper triangular part of A is used on input.
      *           'L' : only the lower triangular part of A is used on input.
-     */ 
+     */
 
     namespace detail {
 
-      inline 
+      inline
       void syev (char const jobz, char const uplo, int const n,
                  float* a, int const lda,
-                 float* w, float* work, int const lwork, int& info) 
+                 float* w, float* work, int const lwork, int& info)
       {
         LAPACK_SSYEV (&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info);
       }
 
-      inline 
+      inline
       void syev (char const jobz, char const uplo, int const n,
                  double* a, int const lda,
-                 double* w, double* work, int const lwork, int& info) 
+                 double* w, double* work, int const lwork, int& info)
       {
         LAPACK_DSYEV (&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info);
       }
@@ -76,31 +76,31 @@
       template <typename A, typename W, typename Work>
       int syev (char jobz, char uplo, A& a, W& w, Work& work) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
         BOOST_STATIC_ASSERT((boost::is_same<
-          typename traits::matrix_traits<A>::matrix_structure, 
+          typename traits::matrix_traits<A>::matrix_structure,
           traits::general_t
-        >::value)); 
-#endif 
+        >::value));
+#endif
 
         int const n = traits::matrix_size1 (a);
         assert ( n>0 );
-        assert (traits::matrix_size2 (a)==n); 
-        assert (traits::leading_dimension (a)>=n); 
-        assert (traits::vector_size (w)==n); 
-        assert (3*n-1 <= traits::vector_size (work)); 
+        assert (traits::matrix_size2 (a)==n);
+        assert (traits::leading_dimension (a)>=n);
+        assert (traits::vector_size (w)==n);
+        assert (3*n-1 <= traits::vector_size (work));
         assert ( uplo=='U' || uplo=='L' );
         assert ( jobz=='N' || jobz=='V' );
 
-        int info; 
+        int info;
         detail::syev (jobz, uplo, n,
-                     traits::matrix_storage (a), 
+                     traits::matrix_storage (a),
                      traits::leading_dimension (a),
-                     traits::vector_storage (w),  
+                     traits::vector_storage (w),
                      traits::vector_storage (work),
                      traits::vector_size (work),
                      info);
-        return info; 
+        return info;
       }
     }  // namespace detail
 
@@ -137,8 +137,8 @@
        return detail::syev(jobz, uplo, a, w, workspace.w_);
     } // syev()
 
-	// Function without workarray as argument
-	template <typename A, typename W>
+    // Function without workarray as argument
+    template <typename A, typename W>
     inline
     int syev (char jobz, char uplo, A& a, W& w) {
        return syev(jobz, uplo, a, w, optimal_workspace());
@@ -153,7 +153,7 @@
 
        int const n = traits::matrix_size1 (a);
        char uplo = traits::matrix_uplo_tag( a ) ;
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
        typedef typename traits::matrix_traits<A>::matrix_structure matrix_structure ;
        BOOST_STATIC_ASSERT( (boost::mpl::or_< boost::is_same< matrix_structure, traits::symmetric_t >
                                             , boost::is_same< matrix_structure, traits::hermitian_t >
@@ -173,7 +173,7 @@
 
        int const n = traits::matrix_size1 (a);
        char uplo = traits::matrix_uplo_tag( a ) ;
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
        typedef typename traits::matrix_traits<A>::matrix_structure matrix_structure ;
        BOOST_STATIC_ASSERT( (boost::mpl::or_< boost::is_same< matrix_structure, traits::symmetric_t >
                                             , boost::is_same< matrix_structure, traits::hermitian_t >
@@ -190,7 +190,7 @@
     int syev (char jobz, A& a, W& w, detail::workspace1<Work> workspace ) {
        typedef typename A::value_type value_type ;
        char uplo = traits::matrix_uplo_tag( a ) ;
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
        typedef typename traits::matrix_traits<A>::matrix_structure matrix_structure ;
        BOOST_STATIC_ASSERT( (boost::mpl::or_< boost::is_same< matrix_structure, traits::symmetric_t >
                                             , boost::is_same< matrix_structure, traits::hermitian_t >
@@ -200,12 +200,12 @@
        return detail::syev(jobz, uplo, a, w, workspace.w_);
     } // syev()
 
-	// Function without workarray as argument
-	template <typename A, typename W>
+    // Function without workarray as argument
+    template <typename A, typename W>
     inline
     int syev (char jobz, A& a, W& w) {
        char uplo = traits::matrix_uplo_tag( a ) ;
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
        typedef typename traits::matrix_traits<A>::matrix_structure matrix_structure ;
        BOOST_STATIC_ASSERT( (boost::mpl::or_< boost::is_same< matrix_structure, traits::symmetric_t >
                                             , boost::is_same< matrix_structure, traits::hermitian_t >
@@ -221,4 +221,4 @@
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/syevd.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/syevd.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/syevd.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,4 +1,4 @@
-// 
+//
 // Copyright (c) Thomas Klimpel 2008
 //
 // Distributed under the Boost Software License, Version 1.0.
@@ -11,7 +11,7 @@
 
 #include <boost/numeric/bindings/lapack/heevd.hpp>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
   namespace lapack {
 
     template <typename A, typename W, typename Work>
@@ -20,7 +20,7 @@
       char jobz, char uplo, A& a,
       W& w, Work work = optimal_workspace() ) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       typedef typename A::value_type                               value_type ;
       typedef typename traits::type_traits< value_type >::real_type real_type ;
       BOOST_STATIC_ASSERT((boost::is_same<value_type, real_type>::value));
Modified: sandbox/boost/numeric/bindings/lapack/syevx.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/syevx.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/syevx.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,4 +1,4 @@
-// 
+//
 // Copyright (c) Thomas Klimpel 2008
 //
 // Distributed under the Boost Software License, Version 1.0.
@@ -11,14 +11,14 @@
 
 #include <boost/numeric/bindings/lapack/heevx.hpp>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
   namespace lapack {
     template <typename A, typename T, typename W, typename Z, typename IFail, typename Work>
     int syevx (
       char jobz, char range, A& a, T vl, T vu, int il, int iu, T abstol, int& m,
       W& w, Z& z, IFail& ifail, Work work = optimal_workspace() ) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       typedef typename A::value_type                               value_type ;
       typedef typename traits::type_traits< value_type >::real_type real_type ;
       BOOST_STATIC_ASSERT((boost::is_same<value_type, real_type>::value));
Modified: sandbox/boost/numeric/bindings/lapack/sygv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/sygv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/sygv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -11,13 +11,13 @@
 
 #include <boost/numeric/bindings/lapack/hegv.hpp>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
   namespace lapack {
 
     template <typename A, typename B, typename W, typename Work>
     int sygv (int itype, char jobz, char uplo, A& a, B& b, W& w, Work work = optimal_workspace()) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       typedef typename A::value_type                               value_type ;
       typedef typename traits::type_traits< value_type >::real_type real_type ;
       BOOST_STATIC_ASSERT((boost::is_same<value_type, real_type>::value));
Modified: sandbox/boost/numeric/bindings/lapack/sysv.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/sysv.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/sysv.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -23,14 +23,14 @@
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 #include <cassert>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
@@ -42,108 +42,108 @@
 
     namespace detail {
 
-      inline 
-      int sytrf_block (float, int const ispec, char const ul, int const n) 
+      inline
+      int sytrf_block (float, int const ispec, char const ul, int const n)
       {
         char ul2[2] = "x"; ul2[0] = ul; 
-        return ilaenv (ispec, "SSYTRF", ul2, n); 
+        return ilaenv (ispec, "SSYTRF", ul2, n);
       }
-      inline 
+      inline
       int sytrf_block (double, int const ispec, char const ul, int const n) {
-        char ul2[2] = "x"; ul2[0] = ul; 
-        return ilaenv (ispec, "DSYTRF", ul2, n); 
+        char ul2[2] = "x"; ul2[0] = ul;
+        return ilaenv (ispec, "DSYTRF", ul2, n);
       }
-      inline 
-      int sytrf_block (traits::complex_f, 
-                       int const ispec, char const ul, int const n) 
+      inline
+      int sytrf_block (traits::complex_f,
+                       int const ispec, char const ul, int const n)
+      {
+        char ul2[2] = "x"; ul2[0] = ul;
+        return ilaenv (ispec, "CSYTRF", ul2, n);
+      }
+      inline
+      int sytrf_block (traits::complex_d,
+                       int const ispec, char const ul, int const n)
       {
-        char ul2[2] = "x"; ul2[0] = ul; 
-        return ilaenv (ispec, "CSYTRF", ul2, n); 
-      }
-      inline 
-      int sytrf_block (traits::complex_d, 
-                       int const ispec, char const ul, int const n) 
-      {
-        char ul2[2] = "x"; ul2[0] = ul; 
-        return ilaenv (ispec, "ZSYTRF", ul2, n); 
+        char ul2[2] = "x"; ul2[0] = ul;
+        return ilaenv (ispec, "ZSYTRF", ul2, n);
       }
     }
 
 
     template <typename SymmA>
-    int sytrf_block (char const q, char const ul, SymmA const& a) 
+    int sytrf_block (char const q, char const ul, SymmA const& a)
     {
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (q == 'O' || q == 'M');
+      assert (ul == 'U' || ul == 'L');
 
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-      typedef typename SymmA::value_type val_t; 
-#endif 
-      int ispec = (q == 'O' ? 1 : 2); 
-      return detail::sytrf_block (val_t(), ispec, ul, n); 
+      typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+      typedef typename SymmA::value_type val_t;
+#endif
+      int ispec = (q == 'O' ? 1 : 2);
+      return detail::sytrf_block (val_t(), ispec, ul, n);
     }
 
     template <typename SymmA>
-    int sytrf_block (char const q, SymmA const& a) 
+    int sytrf_block (char const q, SymmA const& a)
     {
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
+      assert (q == 'O' || q == 'M');
 
       char ul = traits::matrix_uplo_tag (a);
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-      typedef typename SymmA::value_type val_t; 
-#endif 
-      int ispec = (q == 'O' ? 1 : 2); 
-      return detail::sytrf_block (val_t(), ispec, ul, n); 
+      typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+      typedef typename SymmA::value_type val_t;
+#endif
+      int ispec = (q == 'O' ? 1 : 2);
+      return detail::sytrf_block (val_t(), ispec, ul, n);
     }
 
     template <typename SymmA>
-    int sytrf_work (char const q, char const ul, SymmA const& a) 
+    int sytrf_work (char const q, char const ul, SymmA const& a)
     {
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (q == 'O' || q == 'M');
+      assert (ul == 'U' || ul == 'L');
 
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-      typedef typename SymmA::value_type val_t; 
-#endif 
-      int lw = -13; 
-      if (q == 'M') 
+      typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+      typedef typename SymmA::value_type val_t;
+#endif
+      int lw = -13;
+      if (q == 'M')
         lw = 1;
-      if (q == 'O') 
-        lw = n * detail::sytrf_block (val_t(), 1, ul, n); 
-      return lw; 
+      if (q == 'O')
+        lw = n * detail::sytrf_block (val_t(), 1, ul, n);
+      return lw;
     }
 
     template <typename SymmA>
@@ -151,34 +151,34 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
 #endif
-      assert (q == 'O' || q == 'M'); 
+      assert (q == 'O' || q == 'M');
 
       char ul = traits::matrix_uplo_tag (a);
-      int n = traits::matrix_size1 (a); 
-      assert (n == traits::matrix_size2 (a)); 
+      int n = traits::matrix_size1 (a);
+      assert (n == traits::matrix_size2 (a));
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-      typedef typename SymmA::value_type val_t; 
-#endif 
-      int lw = -13; 
-      if (q == 'M') 
+      typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+      typedef typename SymmA::value_type val_t;
+#endif
+      int lw = -13;
+      if (q == 'M')
         lw = 1;
-      if (q == 'O') 
-        lw = n * detail::sytrf_block (val_t(), 1, ul, n); 
-      return lw; 
+      if (q == 'O')
+        lw = n * detail::sytrf_block (val_t(), 1, ul, n);
+      return lw;
     }
 
 
     template <typename SymmA>
     inline
     int sysv_work (char const q, char const ul, SymmA const& a) {
-      return sytrf_work (q, ul, a); 
+      return sytrf_work (q, ul, a);
     }
 
     template <typename SymmA>
@@ -187,107 +187,107 @@
 
 
     /*
-     * sysv() computes the solution to a system of linear equations 
-     * A * X = B, where A is an N-by-N symmetric matrix and X and B 
+     * sysv() computes the solution to a system of linear equations
+     * A * X = B, where A is an N-by-N symmetric matrix and X and B
      * are N-by-NRHS matrices.
      *
      * The diagonal pivoting method is used to factor A as
-     *   A = U * D * U^T,  if UPLO = 'U', 
+     *   A = U * D * U^T,  if UPLO = 'U',
      *   A = L * D * L^T,  if UPLO = 'L',
-     * where  U (or L) is a product of permutation and unit upper 
-     * (lower) triangular matrices, and D is symmetric and block 
-     * diagonal with 1-by-1 and 2-by-2 diagonal blocks.  
-     * The factored form of A is then used to solve the system 
+     * where  U (or L) is a product of permutation and unit upper
+     * (lower) triangular matrices, and D is symmetric and block
+     * diagonal with 1-by-1 and 2-by-2 diagonal blocks.
+     * The factored form of A is then used to solve the system
      * of equations A * X = B.
      */
 
-    namespace detail 
+    namespace detail
     {
 
-      inline 
+      inline
       void sysv (char const uplo, int const n, int const nrhs,
-                 float* a, int const lda, int* ipiv, 
-                 float* b, int const ldb, 
-                 float* w, int const lw, int* info) 
+                 float* a, int const lda, int* ipiv,
+                 float* b, int const ldb,
+                 float* w, int const lw, int* info)
       {
         LAPACK_SSYSV (&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, w, &lw, info);
       }
 
-      inline 
+      inline
       void sysv (char const uplo, int const n, int const nrhs,
-                 double* a, int const lda, int* ipiv, 
-                 double* b, int const ldb, 
-                 double* w, int const lw, int* info) 
+                 double* a, int const lda, int* ipiv,
+                 double* b, int const ldb,
+                 double* w, int const lw, int* info)
       {
         LAPACK_DSYSV (&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, w, &lw, info);
       }
 
-      inline 
+      inline
       void sysv (char const uplo, int const n, int const nrhs,
-                 traits::complex_f* a, int const lda, int* ipiv,  
-                 traits::complex_f* b, int const ldb, 
-                 traits::complex_f* w, int const lw, int* info) 
-      {
-        LAPACK_CSYSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
-                      traits::complex_ptr (b), &ldb, 
+                 traits::complex_f* a, int const lda, int* ipiv,
+                 traits::complex_f* b, int const ldb,
+                 traits::complex_f* w, int const lw, int* info)
+      {
+        LAPACK_CSYSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
+                      traits::complex_ptr (b), &ldb,
                       traits::complex_ptr (w), &lw, info);
       }
 
-      inline 
+      inline
       void sysv (char const uplo, int const n, int const nrhs,
-                 traits::complex_d* a, int const lda, int* ipiv, 
-                 traits::complex_d* b, int const ldb, 
-                 traits::complex_d* w, int const lw, int* info) 
-      {
-        LAPACK_ZSYSV (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
-                      traits::complex_ptr (b), &ldb, 
+                 traits::complex_d* a, int const lda, int* ipiv,
+                 traits::complex_d* b, int const ldb,
+                 traits::complex_d* w, int const lw, int* info)
+      {
+        LAPACK_ZSYSV (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
+                      traits::complex_ptr (b), &ldb,
                       traits::complex_ptr (w), &lw, info);
       }
 
       template <typename SymmA, typename MatrB, typename IVec, typename Work>
-      int sysv (char const ul, SymmA& a, IVec& i, MatrB& b, Work& w) 
+      int sysv (char const ul, SymmA& a, IVec& i, MatrB& b, Work& w)
       {
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::matrix_size1 (b)); 
-        assert (n == traits::vector_size (i)); 
-
-        int info; 
-        sysv (ul, n, traits::matrix_size2 (b), 
-              traits::matrix_storage (a), 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::matrix_size1 (b));
+        assert (n == traits::vector_size (i));
+
+        int info;
+        sysv (ul, n, traits::matrix_size2 (b),
+              traits::matrix_storage (a),
               traits::leading_dimension (a),
-              traits::vector_storage (i),  
+              traits::vector_storage (i),
               traits::matrix_storage (b),
               traits::leading_dimension (b),
-              traits::vector_storage (w), 
-              traits::vector_size (w), 
+              traits::vector_storage (w),
+              traits::vector_size (w),
               &info);
-        return info; 
+        return info;
       }
 
     }
 
     template <typename SymmA, typename MatrB, typename IVec, typename Work>
     inline
-    int sysv (char const ul, SymmA& a, IVec& i, MatrB& b, Work& w) 
+    int sysv (char const ul, SymmA& a, IVec& i, MatrB& b, Work& w)
     {
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      assert (traits::vector_size (w) >= 1); 
-      return detail::sysv (ul, a, i, b, w); 
+      assert (traits::vector_size (w) >= 1);
+      return detail::sysv (ul, a, i, b, w);
     }
 
     template <typename SymmA, typename MatrB, typename IVec, typename Work>
@@ -296,141 +296,141 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      assert (traits::vector_size (w) >= 1); 
+      assert (traits::vector_size (w) >= 1);
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::sysv (uplo, a, i, b, w); 
+      return detail::sysv (uplo, a, i, b, w);
     }
 
     template <typename SymmA, typename MatrB>
-    int sysv (char const ul, SymmA& a, MatrB& b) 
+    int sysv (char const ul, SymmA& a, MatrB& b)
     {
-      // with 'internal' pivot and work vectors 
+      // with 'internal' pivot and work vectors
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const n = traits::matrix_size1 (a); 
-      int info = -101; 
-      traits::detail::array<int> i (n); 
+      int const n = traits::matrix_size1 (a);
+      int info = -101;
+      traits::detail::array<int> i (n);
 
       if (i.valid()) {
-        info = -102; 
-        int lw = sytrf_work ('O', ul, a); 
-        assert (lw >= 1); // paranoia ? 
+        info = -102;
+        int lw = sytrf_work ('O', ul, a);
+        assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-        typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-        typedef typename SymmA::value_type val_t; 
-#endif 
-        traits::detail::array<val_t> w (lw); 
-        if (w.valid()) 
-          info =  detail::sysv (ul, a, i, b, w); 
+        typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+        typedef typename SymmA::value_type val_t;
+#endif
+        traits::detail::array<val_t> w (lw);
+        if (w.valid())
+          info =  detail::sysv (ul, a, i, b, w);
       }
-      return info; 
+      return info;
     }
 
     template <typename SymmA, typename MatrB>
-    int sysv (SymmA& a, MatrB& b) 
+    int sysv (SymmA& a, MatrB& b)
     {
-      // with 'internal' pivot and work vectors 
+      // with 'internal' pivot and work vectors
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int const n = traits::matrix_size1 (a); 
+      int const n = traits::matrix_size1 (a);
       char uplo = traits::matrix_uplo_tag (a);
-      int info = -101; 
-      traits::detail::array<int> i (n); 
+      int info = -101;
+      traits::detail::array<int> i (n);
 
       if (i.valid()) {
-        info = -102; 
-        int lw = sytrf_work ('O', a); 
-        assert (lw >= 1); // paranoia ? 
+        info = -102;
+        int lw = sytrf_work ('O', a);
+        assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-        typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-        typedef typename SymmA::value_type val_t; 
-#endif 
-        traits::detail::array<val_t> w (lw); 
-        if (w.valid()) 
-          info =  detail::sysv (uplo, a, i, b, w); 
+        typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+        typedef typename SymmA::value_type val_t;
+#endif
+        traits::detail::array<val_t> w (lw);
+        if (w.valid())
+          info =  detail::sysv (uplo, a, i, b, w);
       }
-      return info; 
+      return info;
     }
 
 
     /*
      * sytrf() computes the factorization of a symmetric matrix A using
-     * the  Bunch-Kaufman diagonal pivoting method. The form of the 
+     * the  Bunch-Kaufman diagonal pivoting method. The form of the
      * factorization is
      *    A = U * D * U^T  or  A = L * D * L^T
-     * where U (or L) is a product of permutation and unit upper (lower)  
-     * triangular matrices, and D is symmetric and block diagonal with 
+     * where U (or L) is a product of permutation and unit upper (lower)
+     * triangular matrices, and D is symmetric and block diagonal with
      * 1-by-1 and 2-by-2 diagonal blocks.
      */
 
-    namespace detail 
+    namespace detail
     {
-      inline 
-      void sytrf (char const uplo, int const n, 
-                  float* a, int const lda, int* ipiv, 
-                  float* w, int const lw, int* info) 
+      inline
+      void sytrf (char const uplo, int const n,
+                  float* a, int const lda, int* ipiv,
+                  float* w, int const lw, int* info)
       {
         LAPACK_SSYTRF (&uplo, &n, a, &lda, ipiv, w, &lw, info);
       }
 
-      inline 
-      void sytrf (char const uplo, int const n, 
-                  double* a, int const lda, int* ipiv, 
-                  double* w, int const lw, int* info) 
+      inline
+      void sytrf (char const uplo, int const n,
+                  double* a, int const lda, int* ipiv,
+                  double* w, int const lw, int* info)
       {
         LAPACK_DSYTRF (&uplo, &n, a, &lda, ipiv, w, &lw, info);
       }
 
-      inline 
-      void sytrf (char const uplo, int const n, 
-                  traits::complex_f* a, int const lda, int* ipiv,  
-                  traits::complex_f* w, int const lw, int* info) 
+      inline
+      void sytrf (char const uplo, int const n,
+                  traits::complex_f* a, int const lda, int* ipiv,
+                  traits::complex_f* w, int const lw, int* info)
       {
-        LAPACK_CSYTRF (&uplo, &n, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CSYTRF (&uplo, &n,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (w), &lw, info);
       }
 
-      inline 
-      void sytrf (char const uplo, int const n, 
-                  traits::complex_d* a, int const lda, int* ipiv, 
-                  traits::complex_d* w, int const lw, int* info) 
+      inline
+      void sytrf (char const uplo, int const n,
+                  traits::complex_d* a, int const lda, int* ipiv,
+                  traits::complex_d* w, int const lw, int* info)
       {
-        LAPACK_ZSYTRF (&uplo, &n, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZSYTRF (&uplo, &n,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (w), &lw, info);
       }
 
@@ -438,154 +438,154 @@
       int sytrf (char const ul, SymmA& a, IVec& i, Work& w) {
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::vector_size (i)); 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::vector_size (i));
 
-        int info; 
-        sytrf (ul, n, traits::matrix_storage (a), 
+        int info;
+        sytrf (ul, n, traits::matrix_storage (a),
                traits::leading_dimension (a),
-               traits::vector_storage (i),  
-               traits::vector_storage (w), 
-               traits::vector_size (w), 
+               traits::vector_storage (i),
+               traits::vector_storage (w),
+               traits::vector_size (w),
                &info);
-        return info; 
+        return info;
       }
 
     }
 
     template <typename SymmA, typename IVec, typename Work>
     inline
-    int sytrf (char const ul, SymmA& a, IVec& i, Work& w) 
+    int sytrf (char const ul, SymmA& a, IVec& i, Work& w)
     {
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      assert (traits::vector_size (w) >= 1); 
-      return detail::sytrf (ul, a, i, w); 
+      assert (traits::vector_size (w) >= 1);
+      return detail::sytrf (ul, a, i, w);
     }
 
     template <typename SymmA, typename IVec, typename Work>
     inline
-    int sytrf (SymmA& a, IVec& i, Work& w) 
+    int sytrf (SymmA& a, IVec& i, Work& w)
     {
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
 #endif
 
-      assert (traits::vector_size (w) >= 1); 
+      assert (traits::vector_size (w) >= 1);
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::sytrf (uplo, a, i, w); 
+      return detail::sytrf (uplo, a, i, w);
     }
 
     template <typename SymmA, typename Ivec>
-    int sytrf (char const ul, SymmA& a, Ivec& i) 
+    int sytrf (char const ul, SymmA& a, Ivec& i)
     {
       // with 'internal' work vector
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      int info = -101; 
-      int lw = sytrf_work ('O', ul, a); 
-      assert (lw >= 1); // paranoia ? 
+      int info = -101;
+      int lw = sytrf_work ('O', ul, a);
+      assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-      typedef typename SymmA::value_type val_t; 
-#endif 
-      traits::detail::array<val_t> w (lw); 
-      if (w.valid()) 
-        info =  detail::sytrf (ul, a, i, w); 
-      return info; 
+      typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+      typedef typename SymmA::value_type val_t;
+#endif
+      traits::detail::array<val_t> w (lw);
+      if (w.valid())
+        info =  detail::sytrf (ul, a, i, w);
+      return info;
     }
 
     template <typename SymmA, typename Ivec>
-    int sytrf (SymmA& a, Ivec& i) 
+    int sytrf (SymmA& a, Ivec& i)
     {
-      // with 'internal' work vector 
+      // with 'internal' work vector
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
 #endif
 
       char uplo = traits::matrix_uplo_tag (a);
-      int info = -101; 
-      int lw = sytrf_work ('O', a); 
-      assert (lw >= 1); // paranoia ? 
+      int info = -101;
+      int lw = sytrf_work ('O', a);
+      assert (lw >= 1); // paranoia ?
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-      typedef typename traits::matrix_traits<SymmA>::value_type val_t; 
-#else 
-      typedef typename SymmA::value_type val_t; 
-#endif 
-      traits::detail::array<val_t> w (lw); 
-      if (w.valid()) 
-        info =  detail::sytrf (uplo, a, i, w); 
-      return info; 
+      typedef typename traits::matrix_traits<SymmA>::value_type val_t;
+#else
+      typedef typename SymmA::value_type val_t;
+#endif
+      traits::detail::array<val_t> w (lw);
+      if (w.valid())
+        info =  detail::sytrf (uplo, a, i, w);
+      return info;
     }
 
 
     /*
-     * sytrs() solves a system of linear equations A*X = B with 
-     * a symmetric matrix A using the factorization 
+     * sytrs() solves a system of linear equations A*X = B with
+     * a symmetric matrix A using the factorization
      *    A = U * D * U^T   or  A = L * D * L^T
      * computed by sytrf().
      */
 
     namespace detail {
 
-      inline 
+      inline
       void sytrs (char const uplo, int const n, int const nrhs,
-                  float const* a, int const lda, int const* ipiv, 
-                  float* b, int const ldb, int* info) 
+                  float const* a, int const lda, int const* ipiv,
+                  float* b, int const ldb, int* info)
       {
         LAPACK_SSYTRS (&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void sytrs (char const uplo, int const n, int const nrhs,
-                  double const* a, int const lda, int const* ipiv, 
-                  double* b, int const ldb, int* info) 
+                  double const* a, int const lda, int const* ipiv,
+                  double* b, int const ldb, int* info)
       {
         LAPACK_DSYTRS (&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, info);
       }
 
-      inline 
+      inline
       void sytrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_f const* a, int const lda, 
-                  int const* ipiv,  
-                  traits::complex_f* b, int const ldb, int* info) 
+                  traits::complex_f const* a, int const lda,
+                  int const* ipiv,
+                  traits::complex_f* b, int const ldb, int* info)
       {
-        LAPACK_CSYTRS (&uplo, &n, &nrhs, 
-                      traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CSYTRS (&uplo, &n, &nrhs,
+                      traits::complex_ptr (a), &lda, ipiv,
                       traits::complex_ptr (b), &ldb, info);
       }
 
-      inline 
+      inline
       void sytrs (char const uplo, int const n, int const nrhs,
-                  traits::complex_d const* a, int const lda, 
-                  int const* ipiv, 
-                  traits::complex_d* b, int const ldb, int* info) 
+                  traits::complex_d const* a, int const lda,
+                  int const* ipiv,
+                  traits::complex_d* b, int const ldb, int* info)
       {
-        LAPACK_ZSYTRS (&uplo, &n, &nrhs, 
-                       traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_ZSYTRS (&uplo, &n, &nrhs,
+                       traits::complex_ptr (a), &lda, ipiv,
                        traits::complex_ptr (b), &ldb, info);
       }
 
@@ -593,26 +593,26 @@
       int sytrs (char const ul, SymmA const& a, IVec const& i, MatrB& b) {
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
-        assert (n == traits::matrix_size1 (b)); 
-        assert (n == traits::vector_size (i)); 
+        assert (n == traits::matrix_size2 (a));
+        assert (n == traits::matrix_size1 (b));
+        assert (n == traits::vector_size (i));
 
-        int info; 
-        sytrs (ul, n, traits::matrix_size2 (b), 
+        int info;
+        sytrs (ul, n, traits::matrix_size2 (b),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-               traits::matrix_storage (a), 
+               traits::matrix_storage (a),
 #else
-               traits::matrix_storage_const (a), 
-#endif 
+               traits::matrix_storage_const (a),
+#endif
                traits::leading_dimension (a),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-               traits::vector_storage (i),  
+               traits::vector_storage (i),
 #else
-               traits::vector_storage_const (i),  
+               traits::vector_storage_const (i),
 #endif
                traits::matrix_storage (b),
                traits::leading_dimension (b), &info);
-        return info; 
+        return info;
       }
 
     }
@@ -621,20 +621,20 @@
     inline
     int sytrs (char const ul, SymmA const& a, IVec const& i, MatrB& b) {
 
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::general_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
-      return detail::sytrs (ul, a, i, b); 
+      return detail::sytrs (ul, a, i, b);
     }
 
     template <typename SymmA, typename MatrB, typename IVec>
@@ -643,71 +643,71 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrB>::matrix_structure, 
+        typename traits::matrix_traits<MatrB>::matrix_structure,
         traits::general_t
       >::value));
 #endif
 
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::sytrs (uplo, a, i, b); 
+      return detail::sytrs (uplo, a, i, b);
     }
 
 
 
-    namespace detail 
+    namespace detail
     {
-      inline 
-      void sytri (char const uplo, int const n, float* a, int const lda, 
-          int const* ipiv, float* work, int* info) 
+      inline
+      void sytri (char const uplo, int const n, float* a, int const lda,
+          int const* ipiv, float* work, int* info)
       {
         LAPACK_SSYTRI (&uplo, &n, a, &lda, ipiv, work, info);
       }
 
-      inline 
-      void sytri (char const uplo, int const n, double* a, int const lda, 
-          int const* ipiv, double* work, int* info) 
+      inline
+      void sytri (char const uplo, int const n, double* a, int const lda,
+          int const* ipiv, double* work, int* info)
       {
         LAPACK_DSYTRI (&uplo, &n, a, &lda, ipiv, work, info);
       }
 
-      inline 
-      void sytri (char const uplo, int const n, traits::complex_f* a, 
-          int const lda, int const* ipiv, traits::complex_f* work, int* info) 
+      inline
+      void sytri (char const uplo, int const n, traits::complex_f* a,
+          int const lda, int const* ipiv, traits::complex_f* work, int* info)
       {
-        LAPACK_CSYTRI (&uplo, &n, traits::complex_ptr (a), &lda, ipiv, 
+        LAPACK_CSYTRI (&uplo, &n, traits::complex_ptr (a), &lda, ipiv,
             traits::complex_ptr (work), info);
       }
 
-      inline 
-      void sytri (char const uplo, int const n, traits::complex_d* a, 
-          int const lda, int const* ipiv, traits::complex_d* work, int* info) 
+      inline
+      void sytri (char const uplo, int const n, traits::complex_d* a,
+          int const lda, int const* ipiv, traits::complex_d* work, int* info)
       {
         LAPACK_ZSYTRI (&uplo, &n, traits::complex_ptr (a), &lda, ipiv,
             traits::complex_ptr (work), info);
       }
 
       template <typename SymmA, typename IVec, typename Work>
-      int sytri (char const ul, SymmA& a, IVec const& ipiv, Work& work) 
+      int sytri (char const ul, SymmA& a, IVec const& ipiv, Work& work)
       {
-        assert (ul == 'U' || ul == 'L'); 
+        assert (ul == 'U' || ul == 'L');
 
         int const n = traits::matrix_size1 (a);
-        assert (n == traits::matrix_size2 (a)); 
+        assert (n == traits::matrix_size2 (a));
         assert (n == traits::vector_size (ipiv));
         assert (n == traits::vector_size (work));
 
         int info;
         //const double* dummy = traits::matrix_storage (a);
-        detail::sytri (ul, n, traits::matrix_storage (a), 
+        detail::sytri (ul, n, traits::matrix_storage (a),
             traits::leading_dimension (a),
 #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-            traits::vector_storage (ipiv),  
+            traits::vector_storage (ipiv),
 #else
-            traits::vector_storage_const (ipiv), 
+            traits::vector_storage_const (ipiv),
 #endif
             traits::vector_storage (work),
             &info);
@@ -719,13 +719,13 @@
 
     //Internal allocation of workspace, general matrix with up/low tag
     template <typename SymmA, typename IVec>
-    int sytri (char const ul, SymmA& a, IVec const& ipiv) 
+    int sytri (char const ul, SymmA& a, IVec const& ipiv)
     {
-      assert (ul == 'U' || ul == 'L'); 
+      assert (ul == 'U' || ul == 'L');
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-            typename traits::matrix_traits<SymmA>::matrix_structure, 
+            typename traits::matrix_traits<SymmA>::matrix_structure,
             traits::general_t
             >::value));
 #endif
@@ -734,25 +734,25 @@
       int n = traits::matrix_size1(a);
       traits::detail::array<value_type> work(std::max<int>(1,n));
 
-      return detail::sytri (ul, a, ipiv, work); 
+      return detail::sytri (ul, a, ipiv, work);
     }
 
     //Internal allocation of workspace, symmetric matrix
 
-    /*Warning: the function will work only if SymmA is a 
+    /*Warning: the function will work only if SymmA is a
       symmetric_adaptor. With SymmA = symmetric_matrix a
       boost::STATIC_ASSERTION_FAILURE will be thrown at compile
-      time, because symmetric_matrix has a symmetric_packed_t 
+      time, because symmetric_matrix has a symmetric_packed_t
       structure instead of symmetric_t. Use sptri() for
       symmetric packed matrices.
-      */  
+      */
     template <typename SymmA, typename IVec>
-    int sytri (SymmA& a, IVec const& ipiv) 
+    int sytri (SymmA& a, IVec const& ipiv)
     {
 
 #ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<SymmA>::matrix_structure, 
+        typename traits::matrix_traits<SymmA>::matrix_structure,
         traits::symmetric_t
       >::value));
 #endif
@@ -762,11 +762,11 @@
       traits::detail::array<value_type> work(std::max<int>(1,n));
 
       char uplo = traits::matrix_uplo_tag (a);
-      return detail::sytri (uplo, a, ipiv, work); 
-    } 
+      return detail::sytri (uplo, a, ipiv, work);
+    }
 
   } // namespace lapack
 
 }}} // namespace boost::numeric::bindings
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/sytrd.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/sytrd.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/sytrd.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,8 +1,8 @@
 //
 // Copyright Karl Meerbergen 2007
 //
-// Distributed under the Boost Software License, Version 1.0. 
-// (See accompanying file LICENSE_1_0.txt or copy at 
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
@@ -17,10 +17,10 @@
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/lapack/lapack.h>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits/is_same.hpp>
-#endif 
+#endif
 
 
   /********************************************************************/
@@ -34,14 +34,14 @@
 
     namespace detail {
 
-      inline 
-      void sytrd ( char uplo, int n, float* a, int lda, float* d, float* e, float* tau, float* work, int lwork, int& info ) 
+      inline
+      void sytrd ( char uplo, int n, float* a, int lda, float* d, float* e, float* tau, float* work, int lwork, int& info )
       {
         LAPACK_SSYTRD( &uplo, &n, a, &lda, d, e, tau, work, &lwork, &info ) ;
       }
 
-      inline 
-      void sytrd ( char uplo, int n, double* a, int lda, double* d, double* e, double* tau, double* work, int lwork, int& info ) 
+      inline
+      void sytrd ( char uplo, int n, double* a, int lda, double* d, double* e, double* tau, double* work, int lwork, int& info )
       {
         LAPACK_DSYTRD( &uplo, &n, a, &lda, d, e, tau, work, &lwork, &info ) ;
       }
@@ -62,28 +62,28 @@
       int lwork = traits::vector_size( work ) ;
       assert( lwork >= 1 );
 
-      int info; 
+      int info;
       detail::sytrd( uplo, n,
-                     traits::matrix_storage( a ), 
-                     traits::leading_dimension( a ), 
-                     traits::vector_storage( d ), 
-                     traits::vector_storage( e ), 
-                     traits::vector_storage( tau ), 
+                     traits::matrix_storage( a ),
+                     traits::leading_dimension( a ),
+                     traits::vector_storage( d ),
+                     traits::vector_storage( e ),
+                     traits::vector_storage( tau ),
                      traits::vector_storage( work ), lwork,
                      info ) ;
-      return info; 
+      return info;
     } // sytrd()
 
 
     template <typename A, typename D, typename E, typename Tau>
     int sytrd( char uplo, A& a, D& d, E& e, Tau& tau, optimal_workspace=optimal_workspace() ) {
-      int info; 
+      int info;
       detail::sytrd( uplo, traits::matrix_size1( a ),
-                     traits::matrix_storage( a ), 
-                     traits::leading_dimension( a ), 
-                     traits::vector_storage( d ), 
-                     traits::vector_storage( e ), 
-                     traits::vector_storage( tau ), 
+                     traits::matrix_storage( a ),
+                     traits::leading_dimension( a ),
+                     traits::vector_storage( d ),
+                     traits::vector_storage( e ),
+                     traits::vector_storage( tau ),
                      traits::vector_storage( tau ), -1,
                      info ) ;
       if (info) return info ;
Modified: sandbox/boost/numeric/bindings/lapack/trevc.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/trevc.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/trevc.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -21,117 +21,117 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Compute eigenvectors of Schur matrix (computed by gees).
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * trevc() computes the eigenvectors using the Schur factorization
      *
      * Let  A = U * S * herm(U), then trecv computes the eigenvectors of
      * S, and may optionally apply them to U.
      *
      * To compute the Schur factorization, see gees.
-     */ 
+     */
 
     namespace detail {
-      inline 
+      inline
       void trevc (char const side, char const howmny, const logical_t* select, int const n,
                  float* t, int const ldt, float* vl, int const ldvl, float* vr, int const ldvr,
-		 int const mm, int& m, float* work, int& info) 
+                 int const mm, int& m, float* work, int& info)
       {
         LAPACK_STREVC (&side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info);
       }
 
-      inline 
+      inline
       void trevc (char const side, char const howmny, const logical_t* select, int const n,
                  double* t, int const ldt, double* vl, int const ldvl, double* vr, int const ldvr,
-		 int const mm, int& m, double* work, int& info) 
+                 int const mm, int& m, double* work, int& info)
       {
         LAPACK_DTREVC (&side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info);
       }
 
-      inline 
+      inline
       void trevc (char const side, char const howmny, const logical_t* select, int const n,
                  traits::complex_f* t, int const ldt, traits::complex_f* vl, int const ldvl, traits::complex_f* vr, int const ldvr,
-                 int const mm, int& m, traits::complex_f* work, int& info) 
+                 int const mm, int& m, traits::complex_f* work, int& info)
       {
         LAPACK_CTREVC (&side, &howmny, select, &n, traits::complex_ptr(t), &ldt, traits::complex_ptr(vl), &ldvl,
-			traits::complex_ptr(vr), &ldvr, &mm, &m, traits::complex_ptr(work+n), traits::complex_ptr(work), &info);
+                        traits::complex_ptr(vr), &ldvr, &mm, &m, traits::complex_ptr(work+n), traits::complex_ptr(work), &info);
       }
 
-      inline 
+      inline
       void trevc (char const side, char const howmny, const logical_t* select, int const n,
                   traits::complex_d* t, int const ldt, traits::complex_d* vl, int const ldvl, traits::complex_d* vr, int const ldvr,
-		  int const mm, int& m, traits::complex_d* work, int& info)
+                  int const mm, int& m, traits::complex_d* work, int& info)
       {
         LAPACK_ZTREVC (&side, &howmny, select, &n, traits::complex_ptr(t), &ldt,
-      	               traits::complex_ptr(vl), &ldvl, traits::complex_ptr(vr), &ldvr,
-		       &mm, &m, traits::complex_ptr(work+n), traits::complex_ptr(work), &info);
+                       traits::complex_ptr(vl), &ldvl, traits::complex_ptr(vr), &ldvr,
+                       &mm, &m, traits::complex_ptr(work+n), traits::complex_ptr(work), &info);
       }
 
-    } 
+    }
 
     // Compute Schur factorization with Schur vectors
     template <typename MatrT, typename VL, typename VR, typename Work>
     int trevc (char const side, char const howmny, MatrT& t, VL& vl, VR& vr, Work& work) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrT>::matrix_structure, 
+        typename traits::matrix_traits<MatrT>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<VL>::matrix_structure, 
+        typename traits::matrix_traits<VL>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<VR>::matrix_structure, 
+        typename traits::matrix_traits<VR>::matrix_structure,
         traits::general_t
-      >::value)); 
-#endif 
+      >::value));
+#endif
 
       int const n = traits::matrix_size1 (t);
-      assert (n == traits::matrix_size2 (t)); 
-      assert (n == traits::matrix_size1 (vl)); 
-      assert (n == traits::matrix_size2 (vl)); 
-      assert (n == traits::matrix_size1 (vr)); 
-      assert (n == traits::matrix_size2 (vr)); 
-      assert (3*n <= traits::vector_size (work)); 
+      assert (n == traits::matrix_size2 (t));
+      assert (n == traits::matrix_size1 (vl));
+      assert (n == traits::matrix_size2 (vl));
+      assert (n == traits::matrix_size1 (vr));
+      assert (n == traits::matrix_size2 (vr));
+      assert (3*n <= traits::vector_size (work));
 
       logical_t* select=0;
 
       int mm=n;
       int m;
-      int info; 
+      int info;
       detail::trevc (side, howmny, select, n,
-                    traits::matrix_storage (t), 
+                    traits::matrix_storage (t),
                     traits::leading_dimension (t),
                     traits::matrix_storage (vl),
                     traits::leading_dimension (vl),
                     traits::matrix_storage (vr),
                     traits::leading_dimension (vr),
-		    mm,
-		    m,
+                    mm,
+                    m,
                     traits::vector_storage (work),
                     info);
-      return info; 
+      return info;
     }
 
   }
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/trexc.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/trexc.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/trexc.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Toon Knapen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -21,39 +21,39 @@
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 // #include <boost/numeric/bindings/traits/std_vector.hpp>
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
 #  include <boost/static_assert.hpp>
 #  include <boost/type_traits.hpp>
-#endif 
+#endif
 
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   namespace lapack {
 
     ///////////////////////////////////////////////////////////////////
     //
     // Reorder the Schur factorization of a matrix.
-    // 
+    //
     ///////////////////////////////////////////////////////////////////
 
-    /* 
+    /*
      * trexc()  reorders the Schur factorization of a matrix
      * A =  Q*T*Q**T, so that the diagonal block of T with row
      * index IFST is  moved to row ILST.
-     */ 
+     */
 
     namespace detail {
-      inline 
+      inline
       int trexc_work_size( int const n, float ) {return n;}
 
-      inline 
+      inline
       int trexc_work_size( int const n, double ) {return n;}
 
-      inline 
+      inline
       int trexc_work_size( int const n, traits::complex_f ) {return 0;}
 
-      inline 
+      inline
       int trexc_work_size( int const n, traits::complex_d ) {return 0;}
     }
 
@@ -64,75 +64,75 @@
     }
 
     namespace detail {
-      inline 
+      inline
       void trexc (char const compq, int const n,
                  float* t, int const ldt, float* q, int const ldq, int& ifst, int& ilst,
-		 float* work, int& info) 
+                 float* work, int& info)
       {
         LAPACK_STREXC (&compq, &n, t, &ldt, q, &ldq, &ifst, &ilst, work, &info);
       }
 
-      inline 
+      inline
       void trexc (char const compq, int const n,
                  double* t, int const ldt, double* q, int const ldq, int& ifst, int& ilst,
-		 double* work, int& info) 
+                 double* work, int& info)
       {
         LAPACK_DTREXC (&compq, &n, t, &ldt, q, &ldq, &ifst, &ilst, work, &info);
       }
 
-      inline 
+      inline
       void trexc (char const compq, int const n,
                  traits::complex_f* t, int const ldt, traits::complex_f* q, int const ldq, int& ifst, int& ilst,
-		 float* work, int& info) 
+                 float* work, int& info)
       {
         LAPACK_CTREXC (&compq, &n, traits::complex_ptr(t), &ldt, traits::complex_ptr(q), &ldq, &ifst, &ilst, &info);
       }
 
-      inline 
+      inline
       void trexc (char const compq, int const n,
                  traits::complex_d* t, int const ldt, traits::complex_d* q, int const ldq, int& ifst, int& ilst,
-		 double* work, int& info) 
+                 double* work, int& info)
       {
         LAPACK_ZTREXC (&compq, &n, traits::complex_ptr(t), &ldt, traits::complex_ptr(q), &ldq, &ifst, &ilst, &info);
       }
 
-    } 
+    }
 
     // Reorder Schur factorization with Schur vectors
     template <typename MatrT, typename Q, typename Work>
     int trexc (char const compq, MatrT& t, Q& q, int& ifst, int& ilst, Work& work) {
 
-#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
+#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<MatrT>::matrix_structure, 
+        typename traits::matrix_traits<MatrT>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
       BOOST_STATIC_ASSERT((boost::is_same<
-        typename traits::matrix_traits<Q>::matrix_structure, 
+        typename traits::matrix_traits<Q>::matrix_structure,
         traits::general_t
-      >::value)); 
+      >::value));
 #endif 
 
       int const n = traits::matrix_size1 (t);
-      assert (n == traits::matrix_size2 (t)); 
-      assert (n == traits::matrix_size1 (q)); 
-      assert (n == traits::matrix_size2 (q)); 
-      assert (trexc_work_size(t) <= traits::vector_size (work)); 
+      assert (n == traits::matrix_size2 (t));
+      assert (n == traits::matrix_size1 (q));
+      assert (n == traits::matrix_size2 (q));
+      assert (trexc_work_size(t) <= traits::vector_size (work));
 
-      int info; 
+      int info;
       detail::trexc (compq, n,
-                    traits::matrix_storage (t), 
+                    traits::matrix_storage (t),
                     traits::leading_dimension (t),
                     traits::matrix_storage (q),
                     traits::leading_dimension (q),
-		    ifst, ilst,
+                    ifst, ilst,
                     traits::vector_storage (work),
                     info);
-      return info; 
+      return info;
     }
 
   }
 
 }}}
 
-#endif 
+#endif
Modified: sandbox/boost/numeric/bindings/lapack/workspace.hpp
==============================================================================
--- sandbox/boost/numeric/bindings/lapack/workspace.hpp	(original)
+++ sandbox/boost/numeric/bindings/lapack/workspace.hpp	2008-12-15 16:30:04 EST (Mon, 15 Dec 2008)
@@ -1,12 +1,12 @@
 /*
- * 
+ *
  * Copyright (c) Karl Meerbergen & Kresimir Fresl 2003
  *
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
  *
- * KF acknowledges the support of the Faculty of Civil Engineering, 
+ * KF acknowledges the support of the Faculty of Civil Engineering,
  * University of Zagreb, Croatia.
  *
  */
@@ -20,7 +20,7 @@
 #include <boost/numeric/bindings/traits/vector_traits.hpp>
 #include <memory>
 
-namespace boost { namespace numeric { namespace bindings { 
+namespace boost { namespace numeric { namespace bindings {
 
   /*
    * Organization of workspace in Lapack.