Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r64110 - in sandbox/numeric_bindings: boost/numeric/bindings/lapack boost/numeric/bindings/lapack/detail boost/numeric/bindings/lapack/driver boost/numeric/bindings/traits libs/numeric/bindings/doc/lapack/driver libs/numeric/bindings/tools
From: thomas.klimpel_at_[hidden]
Date: 2010-07-17 15:06:21


Author: klimpel
Date: 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
New Revision: 64110
URL: http://svn.boost.org/trac/boost/changeset/64110

Log:
Further reduced required hand editing of lapack/computational.hpp to make include_test.cpp pass:
Changed definition of logical_t to bool (-> stemr.hpp and tgsen.hpp now pass).
Introduced external_t definition (= void= for external function arguments (-> gees.hpp. geesx.hpp, gges.hpp and ggesx.hpp still pass)
Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h | 36 ++++----
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp | 52 +++++++-------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp | 60 ++++++++--------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp | 148 ++++++++++++++++++++--------------------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp | 148 ++++++++++++++++++++--------------------
   sandbox/numeric_bindings/boost/numeric/bindings/traits/type.h | 13 ++
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gees.qbk | 4
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/geesx.qbk | 4
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gges.qbk | 4
   sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/ggesx.qbk | 4
   sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py | 19 ++++-
   12 files changed, 258 insertions(+), 238 deletions(-)

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -150,7 +150,7 @@
 #include <boost/numeric/bindings/lapack/computational/stedc.hpp>
 #include <boost/numeric/bindings/lapack/computational/stegr.hpp>
 #include <boost/numeric/bindings/lapack/computational/stein.hpp>
-//#include <boost/numeric/bindings/lapack/computational/stemr.hpp>
+#include <boost/numeric/bindings/lapack/computational/stemr.hpp>
 #include <boost/numeric/bindings/lapack/computational/steqr.hpp>
 #include <boost/numeric/bindings/lapack/computational/sterf.hpp>
 #include <boost/numeric/bindings/lapack/computational/sytrd.hpp>
@@ -164,7 +164,7 @@
 #include <boost/numeric/bindings/lapack/computational/hgeqz.hpp>
 #include <boost/numeric/bindings/lapack/computational/tgevc.hpp>
 //#include <boost/numeric/bindings/lapack/computational/tgexc.hpp>
-//#include <boost/numeric/bindings/lapack/computational/tgsen.hpp>
+#include <boost/numeric/bindings/lapack/computational/tgsen.hpp>
 #include <boost/numeric/bindings/lapack/computational/tgsna.hpp>
 #include <boost/numeric/bindings/lapack/computational/tgsyl.hpp>
 #include <boost/numeric/bindings/lapack/computational/ggsvp.hpp>

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -2456,28 +2456,28 @@
 
 // Value-type variants of gges
 void LAPACK_SGGES( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const fortran_int_t* n, float* a,
+ external_t* selctg, const fortran_int_t* n, float* a,
         const fortran_int_t* lda, float* b, const fortran_int_t* ldb,
         fortran_int_t* sdim, float* alphar, float* alphai, float* beta,
         float* vsl, const fortran_int_t* ldvsl, float* vsr,
         const fortran_int_t* ldvsr, float* work, const fortran_int_t* lwork,
         logical_t* bwork, fortran_int_t* info );
 void LAPACK_DGGES( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const fortran_int_t* n, double* a,
+ external_t* selctg, const fortran_int_t* n, double* a,
         const fortran_int_t* lda, double* b, const fortran_int_t* ldb,
         fortran_int_t* sdim, double* alphar, double* alphai, double* beta,
         double* vsl, const fortran_int_t* ldvsl, double* vsr,
         const fortran_int_t* ldvsr, double* work, const fortran_int_t* lwork,
         logical_t* bwork, fortran_int_t* info );
 void LAPACK_CGGES( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const fortran_int_t* n, void* a,
+ external_t* selctg, const fortran_int_t* n, void* a,
         const fortran_int_t* lda, void* b, const fortran_int_t* ldb,
         fortran_int_t* sdim, void* alpha, void* beta, void* vsl,
         const fortran_int_t* ldvsl, void* vsr, const fortran_int_t* ldvsr,
         void* work, const fortran_int_t* lwork, float* rwork,
         logical_t* bwork, fortran_int_t* info );
 void LAPACK_ZGGES( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const fortran_int_t* n, void* a,
+ external_t* selctg, const fortran_int_t* n, void* a,
         const fortran_int_t* lda, void* b, const fortran_int_t* ldb,
         fortran_int_t* sdim, void* alpha, void* beta, void* vsl,
         const fortran_int_t* ldvsl, void* vsr, const fortran_int_t* ldvsr,
@@ -2486,7 +2486,7 @@
 
 // Value-type variants of ggesx
 void LAPACK_SGGESX( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const char* sense, const fortran_int_t* n,
+ external_t* selctg, const char* sense, const fortran_int_t* n,
         float* a, const fortran_int_t* lda, float* b,
         const fortran_int_t* ldb, fortran_int_t* sdim, float* alphar,
         float* alphai, float* beta, float* vsl, const fortran_int_t* ldvsl,
@@ -2494,7 +2494,7 @@
         float* work, const fortran_int_t* lwork, fortran_int_t* iwork,
         const fortran_int_t* liwork, logical_t* bwork, fortran_int_t* info );
 void LAPACK_DGGESX( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const char* sense, const fortran_int_t* n,
+ external_t* selctg, const char* sense, const fortran_int_t* n,
         double* a, const fortran_int_t* lda, double* b,
         const fortran_int_t* ldb, fortran_int_t* sdim, double* alphar,
         double* alphai, double* beta, double* vsl, const fortran_int_t* ldvsl,
@@ -2503,16 +2503,16 @@
         fortran_int_t* iwork, const fortran_int_t* liwork, logical_t* bwork,
         fortran_int_t* info );
 void LAPACK_CGGESX( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const char* sense, const fortran_int_t* n, void* a,
- const fortran_int_t* lda, void* b, const fortran_int_t* ldb,
+ external_t* selctg, const char* sense, const fortran_int_t* n,
+ void* a, const fortran_int_t* lda, void* b, const fortran_int_t* ldb,
         fortran_int_t* sdim, void* alpha, void* beta, void* vsl,
         const fortran_int_t* ldvsl, void* vsr, const fortran_int_t* ldvsr,
         float* rconde, float* rcondv, void* work, const fortran_int_t* lwork,
         float* rwork, fortran_int_t* iwork, const fortran_int_t* liwork,
         logical_t* bwork, fortran_int_t* info );
 void LAPACK_ZGGESX( const char* jobvsl, const char* jobvsr, const char* sort,
- logical_t* selctg, const char* sense, const fortran_int_t* n, void* a,
- const fortran_int_t* lda, void* b, const fortran_int_t* ldb,
+ external_t* selctg, const char* sense, const fortran_int_t* n,
+ void* a, const fortran_int_t* lda, void* b, const fortran_int_t* ldb,
         fortran_int_t* sdim, void* alpha, void* beta, void* vsl,
         const fortran_int_t* ldvsl, void* vsr, const fortran_int_t* ldvsr,
         double* rconde, double* rcondv, void* work,
@@ -3391,47 +3391,47 @@
         fortran_int_t* info );
 
 // Value-type variants of gees
-void LAPACK_SGEES( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_SGEES( const char* jobvs, const char* sort, external_t* select,
         const fortran_int_t* n, float* a, const fortran_int_t* lda,
         fortran_int_t* sdim, float* wr, float* wi, float* vs,
         const fortran_int_t* ldvs, float* work, const fortran_int_t* lwork,
         logical_t* bwork, fortran_int_t* info );
-void LAPACK_DGEES( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_DGEES( const char* jobvs, const char* sort, external_t* select,
         const fortran_int_t* n, double* a, const fortran_int_t* lda,
         fortran_int_t* sdim, double* wr, double* wi, double* vs,
         const fortran_int_t* ldvs, double* work, const fortran_int_t* lwork,
         logical_t* bwork, fortran_int_t* info );
-void LAPACK_CGEES( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_CGEES( const char* jobvs, const char* sort, external_t* select,
         const fortran_int_t* n, void* a, const fortran_int_t* lda,
         fortran_int_t* sdim, void* w, void* vs, const fortran_int_t* ldvs,
         void* work, const fortran_int_t* lwork, float* rwork,
         logical_t* bwork, fortran_int_t* info );
-void LAPACK_ZGEES( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_ZGEES( const char* jobvs, const char* sort, external_t* select,
         const fortran_int_t* n, void* a, const fortran_int_t* lda,
         fortran_int_t* sdim, void* w, void* vs, const fortran_int_t* ldvs,
         void* work, const fortran_int_t* lwork, double* rwork,
         logical_t* bwork, fortran_int_t* info );
 
 // Value-type variants of geesx
-void LAPACK_SGEESX( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_SGEESX( const char* jobvs, const char* sort, external_t* select,
         const char* sense, const fortran_int_t* n, float* a,
         const fortran_int_t* lda, fortran_int_t* sdim, float* wr, float* wi,
         float* vs, const fortran_int_t* ldvs, float* rconde, float* rcondv,
         float* work, const fortran_int_t* lwork, fortran_int_t* iwork,
         const fortran_int_t* liwork, logical_t* bwork, fortran_int_t* info );
-void LAPACK_DGEESX( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_DGEESX( const char* jobvs, const char* sort, external_t* select,
         const char* sense, const fortran_int_t* n, double* a,
         const fortran_int_t* lda, fortran_int_t* sdim, double* wr, double* wi,
         double* vs, const fortran_int_t* ldvs, double* rconde, double* rcondv,
         double* work, const fortran_int_t* lwork, fortran_int_t* iwork,
         const fortran_int_t* liwork, logical_t* bwork, fortran_int_t* info );
-void LAPACK_CGEESX( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_CGEESX( const char* jobvs, const char* sort, external_t* select,
         const char* sense, const fortran_int_t* n, void* a,
         const fortran_int_t* lda, fortran_int_t* sdim, void* w, void* vs,
         const fortran_int_t* ldvs, float* rconde, float* rcondv, void* work,
         const fortran_int_t* lwork, float* rwork, logical_t* bwork,
         fortran_int_t* info );
-void LAPACK_ZGEESX( const char* jobvs, const char* sort, logical_t* select,
+void LAPACK_ZGEESX( const char* jobvs, const char* sort, external_t* select,
         const char* sense, const fortran_int_t* n, void* a,
         const fortran_int_t* lda, fortran_int_t* sdim, void* w, void* vs,
         const fortran_int_t* ldvs, double* rconde, double* rcondv, void* work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 inline std::ptrdiff_t gees( const char jobvs, const char sort,
- logical_t* select, const fortran_int_t n, float* a,
+ external_t* select, const fortran_int_t n, float* a,
         const fortran_int_t lda, fortran_int_t& sdim, float* wr, float* wi,
         float* vs, const fortran_int_t ldvs, float* work,
         const fortran_int_t lwork, logical_t* bwork ) {
@@ -71,7 +71,7 @@
 // * double value-type.
 //
 inline std::ptrdiff_t gees( const char jobvs, const char sort,
- logical_t* select, const fortran_int_t n, double* a,
+ external_t* select, const fortran_int_t n, double* a,
         const fortran_int_t lda, fortran_int_t& sdim, double* wr, double* wi,
         double* vs, const fortran_int_t ldvs, double* work,
         const fortran_int_t lwork, logical_t* bwork ) {
@@ -87,7 +87,7 @@
 // * complex<float> value-type.
 //
 inline std::ptrdiff_t gees( const char jobvs, const char sort,
- logical_t* select, const fortran_int_t n, std::complex<float>* a,
+ external_t* select, const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, fortran_int_t& sdim, std::complex<float>* w,
         std::complex<float>* vs, const fortran_int_t ldvs,
         std::complex<float>* work, const fortran_int_t lwork, float* rwork,
@@ -104,7 +104,7 @@
 // * complex<double> value-type.
 //
 inline std::ptrdiff_t gees( const char jobvs, const char sort,
- logical_t* select, const fortran_int_t n, std::complex<double>* a,
+ external_t* select, const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, fortran_int_t& sdim, std::complex<double>* w,
         std::complex<double>* vs, const fortran_int_t ldvs,
         std::complex<double>* work, const fortran_int_t lwork, double* rwork,
@@ -141,7 +141,7 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS, typename WORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, MatrixA& a, fortran_int_t& sdim,
+ external_t* select, MatrixA& a, fortran_int_t& sdim,
             VectorWR& wr, VectorWI& wi, MatrixVS& vs, detail::workspace2<
             WORK, BWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -197,7 +197,7 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, MatrixA& a, fortran_int_t& sdim,
+ external_t* select, MatrixA& a, fortran_int_t& sdim,
             VectorWR& wr, VectorWI& wi, MatrixVS& vs, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
         bindings::detail::array< real_type > tmp_work( min_size_work(
@@ -218,7 +218,7 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, MatrixA& a, fortran_int_t& sdim,
+ external_t* select, MatrixA& a, fortran_int_t& sdim,
             VectorWR& wr, VectorWI& wi, MatrixVS& vs, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
         real_type opt_size_work;
@@ -273,7 +273,7 @@
     template< typename MatrixA, typename VectorW, typename MatrixVS,
             typename WORK, typename RWORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, MatrixA& a, fortran_int_t& sdim,
+ external_t* select, MatrixA& a, fortran_int_t& sdim,
             VectorW& w, MatrixVS& vs, detail::workspace3< WORK, RWORK,
             BWORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -325,7 +325,7 @@
     //
     template< typename MatrixA, typename VectorW, typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, MatrixA& a, fortran_int_t& sdim,
+ external_t* select, MatrixA& a, fortran_int_t& sdim,
             VectorW& w, MatrixVS& vs, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
         bindings::detail::array< value_type > tmp_work( min_size_work(
@@ -347,7 +347,7 @@
     //
     template< typename MatrixA, typename VectorW, typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, MatrixA& a, fortran_int_t& sdim,
+ external_t* select, MatrixA& a, fortran_int_t& sdim,
             VectorW& w, MatrixVS& vs, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
         value_type opt_size_work;
@@ -416,7 +416,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorWR& wr, VectorWI& wi, MatrixVS& vs,
         Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -434,7 +434,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorWR& wr, VectorWI& wi, MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( jobvs, sort, select, a, sdim, wr, wi,
@@ -451,7 +451,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorWR& wr, VectorWI& wi,
         MatrixVS& vs, Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -469,7 +469,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorWR& wr, VectorWI& wi,
         MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
@@ -487,7 +487,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorWR& wr, VectorWI& wi,
         const MatrixVS& vs, Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -505,7 +505,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorWR& wr, VectorWI& wi,
         const MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
@@ -523,7 +523,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorWR& wr, VectorWI& wi,
         const MatrixVS& vs, Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -541,7 +541,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorWR& wr, VectorWI& wi,
         const MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
@@ -558,7 +558,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorW& w, MatrixVS& vs, Workspace work ) {
     return gees_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( jobvs, sort, select, a, sdim, w, vs,
@@ -574,7 +574,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorW& w, MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( jobvs, sort, select, a, sdim, w, vs,
@@ -591,7 +591,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorW& w, MatrixVS& vs,
         Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -608,7 +608,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorW& w, MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( jobvs, sort, select, a, sdim, w, vs,
@@ -625,7 +625,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorW& w, const MatrixVS& vs,
         Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -642,7 +642,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         fortran_int_t& sdim, VectorW& w, const MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( jobvs, sort, select, a, sdim, w, vs,
@@ -659,7 +659,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorW& w,
         const MatrixVS& vs, Workspace work ) {
     return gees_impl< typename bindings::value_type<
@@ -676,7 +676,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-gees( const char jobvs, const char sort, logical_t* select,
+gees( const char jobvs, const char sort, external_t* select,
         const MatrixA& a, fortran_int_t& sdim, VectorW& w,
         const MatrixVS& vs ) {
     return gees_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 inline std::ptrdiff_t geesx( const char jobvs, const char sort,
- logical_t* select, const char sense, const fortran_int_t n, float* a,
+ external_t* select, const char sense, const fortran_int_t n, float* a,
         const fortran_int_t lda, fortran_int_t& sdim, float* wr, float* wi,
         float* vs, const fortran_int_t ldvs, float& rconde, float& rcondv,
         float* work, const fortran_int_t lwork, fortran_int_t* iwork,
@@ -73,11 +73,11 @@
 // * double value-type.
 //
 inline std::ptrdiff_t geesx( const char jobvs, const char sort,
- logical_t* select, const char sense, const fortran_int_t n, double* a,
- const fortran_int_t lda, fortran_int_t& sdim, double* wr, double* wi,
- double* vs, const fortran_int_t ldvs, double& rconde, double& rcondv,
- double* work, const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork, logical_t* bwork ) {
+ external_t* select, const char sense, const fortran_int_t n,
+ double* a, const fortran_int_t lda, fortran_int_t& sdim, double* wr,
+ double* wi, double* vs, const fortran_int_t ldvs, double& rconde,
+ double& rcondv, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork, logical_t* bwork ) {
     fortran_int_t info(0);
     LAPACK_DGEESX( &jobvs, &sort, &select, &sense, &n, a, &lda, &sdim, wr, wi,
             vs, &ldvs, &rconde, &rcondv, work, &lwork, iwork, &liwork, bwork,
@@ -91,7 +91,7 @@
 // * complex<float> value-type.
 //
 inline std::ptrdiff_t geesx( const char jobvs, const char sort,
- logical_t* select, const char sense, const fortran_int_t n,
+ external_t* select, const char sense, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda, fortran_int_t& sdim,
         std::complex<float>* w, std::complex<float>* vs,
         const fortran_int_t ldvs, float& rconde, float& rcondv,
@@ -109,7 +109,7 @@
 // * complex<double> value-type.
 //
 inline std::ptrdiff_t geesx( const char jobvs, const char sort,
- logical_t* select, const char sense, const fortran_int_t n,
+ external_t* select, const char sense, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda, fortran_int_t& sdim,
         std::complex<double>* w, std::complex<double>* vs,
         const fortran_int_t ldvs, double& rconde, double& rcondv,
@@ -147,7 +147,7 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS, typename WORK, typename IWORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, const char sense, MatrixA& a,
+ external_t* select, const char sense, MatrixA& a,
             fortran_int_t& sdim, VectorWR& wr, VectorWI& wi, MatrixVS& vs,
             real_type& rconde, real_type& rcondv, detail::workspace3< WORK,
             IWORK, BWORK > work ) {
@@ -211,7 +211,7 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, const char sense, MatrixA& a,
+ external_t* select, const char sense, MatrixA& a,
             fortran_int_t& sdim, VectorWR& wr, VectorWI& wi, MatrixVS& vs,
             real_type& rconde, real_type& rcondv, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -235,7 +235,7 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, const char sense, MatrixA& a,
+ external_t* select, const char sense, MatrixA& a,
             fortran_int_t& sdim, VectorWR& wr, VectorWI& wi, MatrixVS& vs,
             real_type& rconde, real_type& rcondv, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -311,7 +311,7 @@
     template< typename MatrixA, typename VectorW, typename MatrixVS,
             typename WORK, typename RWORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, const char sense, MatrixA& a,
+ external_t* select, const char sense, MatrixA& a,
             fortran_int_t& sdim, VectorW& w, MatrixVS& vs,
             real_type& rconde, real_type& rcondv, detail::workspace3< WORK,
             RWORK, BWORK > work ) {
@@ -366,7 +366,7 @@
     //
     template< typename MatrixA, typename VectorW, typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, const char sense, MatrixA& a,
+ external_t* select, const char sense, MatrixA& a,
             fortran_int_t& sdim, VectorW& w, MatrixVS& vs,
             real_type& rconde, real_type& rcondv, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -389,7 +389,7 @@
     //
     template< typename MatrixA, typename VectorW, typename MatrixVS >
     static std::ptrdiff_t invoke( const char jobvs, const char sort,
- logical_t* select, const char sense, MatrixA& a,
+ external_t* select, const char sense, MatrixA& a,
             fortran_int_t& sdim, VectorW& w, MatrixVS& vs,
             real_type& rconde, real_type& rcondv, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -463,7 +463,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorWR& wr,
         VectorWI& wi, MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -484,7 +484,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorWR& wr,
         VectorWI& wi, MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -505,7 +505,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorWR& wr, VectorWI& wi, MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -526,7 +526,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorWR& wr, VectorWI& wi, MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -547,7 +547,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorWR& wr,
         VectorWI& wi, const MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -568,7 +568,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorWR& wr,
         VectorWI& wi, const MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -589,7 +589,7 @@
         typename MatrixVS, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorWR& wr, VectorWI& wi, const MatrixVS& vs,
         typename remove_imaginary< typename bindings::value_type<
@@ -611,7 +611,7 @@
         typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorWR& wr, VectorWI& wi, const MatrixVS& vs,
         typename remove_imaginary< typename bindings::value_type<
@@ -631,7 +631,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorW& w,
         MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -651,7 +651,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorW& w,
         MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -672,7 +672,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorW& w, MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -692,7 +692,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorW& w, MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -713,7 +713,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorW& w,
         const MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -733,7 +733,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, fortran_int_t& sdim, VectorW& w,
         const MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -754,7 +754,7 @@
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorW& w, const MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,
@@ -774,7 +774,7 @@
 template< typename MatrixA, typename VectorW, typename MatrixVS >
 inline typename boost::disable_if< detail::is_workspace< MatrixVS >,
         std::ptrdiff_t >::type
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, const MatrixA& a, fortran_int_t& sdim,
         VectorW& w, const MatrixVS& vs, typename remove_imaginary<
         typename bindings::value_type< MatrixA >::type >::type& rconde,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 inline std::ptrdiff_t gges( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const fortran_int_t n, float* a,
+ const char sort, external_t* selctg, const fortran_int_t n, float* a,
         const fortran_int_t lda, float* b, const fortran_int_t ldb,
         fortran_int_t& sdim, float* alphar, float* alphai, float* beta,
         float* vsl, const fortran_int_t ldvsl, float* vsr,
@@ -74,7 +74,7 @@
 // * double value-type.
 //
 inline std::ptrdiff_t gges( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const fortran_int_t n, double* a,
+ const char sort, external_t* selctg, const fortran_int_t n, double* a,
         const fortran_int_t lda, double* b, const fortran_int_t ldb,
         fortran_int_t& sdim, double* alphar, double* alphai, double* beta,
         double* vsl, const fortran_int_t ldvsl, double* vsr,
@@ -93,7 +93,7 @@
 // * complex<float> value-type.
 //
 inline std::ptrdiff_t gges( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const fortran_int_t n,
+ const char sort, external_t* selctg, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda,
         std::complex<float>* b, const fortran_int_t ldb, fortran_int_t& sdim,
         std::complex<float>* alpha, std::complex<float>* beta,
@@ -114,7 +114,7 @@
 // * complex<double> value-type.
 //
 inline std::ptrdiff_t gges( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const fortran_int_t n,
+ const char sort, external_t* selctg, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda,
         std::complex<double>* b, const fortran_int_t ldb, fortran_int_t& sdim,
         std::complex<double>* alpha, std::complex<double>* beta,
@@ -156,7 +156,7 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename WORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, MatrixA& a, MatrixB& b,
+ const char sort, external_t* selctg, MatrixA& a, MatrixB& b,
             fortran_int_t& sdim, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
             MatrixVSR& vsr, detail::workspace2< WORK, BWORK > work ) {
@@ -242,7 +242,7 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, MatrixA& a, MatrixB& b,
+ const char sort, external_t* selctg, MatrixA& a, MatrixB& b,
             fortran_int_t& sdim, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
             MatrixVSR& vsr, minimal_workspace ) {
@@ -266,7 +266,7 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, MatrixA& a, MatrixB& b,
+ const char sort, external_t* selctg, MatrixA& a, MatrixB& b,
             fortran_int_t& sdim, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
             MatrixVSR& vsr, optimal_workspace ) {
@@ -332,7 +332,7 @@
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename WORK, typename RWORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, MatrixA& a, MatrixB& b,
+ const char sort, external_t* selctg, MatrixA& a, MatrixB& b,
             fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
             MatrixVSL& vsl, MatrixVSR& vsr, detail::workspace3< WORK, RWORK,
             BWORK > work ) {
@@ -414,7 +414,7 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, MatrixA& a, MatrixB& b,
+ const char sort, external_t* selctg, MatrixA& a, MatrixB& b,
             fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
             MatrixVSL& vsl, MatrixVSR& vsr, minimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -438,7 +438,7 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, MatrixA& a, MatrixB& b,
+ const char sort, external_t* selctg, MatrixA& a, MatrixB& b,
             fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
             MatrixVSL& vsl, MatrixVSR& vsr, optimal_workspace ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -515,7 +515,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -537,7 +537,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -559,7 +559,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -581,7 +581,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -603,7 +603,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -625,7 +625,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -647,7 +647,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -669,7 +669,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -691,7 +691,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -713,7 +713,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -735,7 +735,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         Workspace work ) {
@@ -758,7 +758,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -780,7 +780,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         Workspace work ) {
@@ -803,7 +803,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -825,7 +825,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         Workspace work ) {
@@ -848,7 +848,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -870,7 +870,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -892,7 +892,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -914,7 +914,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         Workspace work ) {
@@ -937,7 +937,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -959,7 +959,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         Workspace work ) {
@@ -982,7 +982,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1004,7 +1004,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         Workspace work ) {
@@ -1027,7 +1027,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1049,7 +1049,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1071,7 +1071,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1093,7 +1093,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         Workspace work ) {
@@ -1116,7 +1116,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1138,7 +1138,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         Workspace work ) {
@@ -1161,7 +1161,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1183,7 +1183,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         Workspace work ) {
@@ -1206,7 +1206,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1227,7 +1227,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1248,7 +1248,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl,
         MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1270,7 +1270,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1291,7 +1291,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1313,7 +1313,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1334,7 +1334,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1356,7 +1356,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1377,7 +1377,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1399,7 +1399,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, const MatrixVSL& vsl,
         MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1420,7 +1420,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, const MatrixVSL& vsl,
         MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1442,7 +1442,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1463,7 +1463,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1485,7 +1485,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1506,7 +1506,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1528,7 +1528,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1549,7 +1549,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1571,7 +1571,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl,
         const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1592,7 +1592,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl,
         const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1614,7 +1614,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1635,7 +1635,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1657,7 +1657,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1678,7 +1678,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1700,7 +1700,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1721,7 +1721,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1743,7 +1743,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, const MatrixVSL& vsl,
         const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1764,7 +1764,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, fortran_int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, const MatrixVSL& vsl,
         const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1786,7 +1786,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1807,7 +1807,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1829,7 +1829,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1850,7 +1850,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, const MatrixB& b,
+ external_t* selctg, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<
@@ -1872,7 +1872,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, Workspace work ) {
     return gges_impl< typename bindings::value_type<
@@ -1893,7 +1893,7 @@
 inline typename boost::disable_if< detail::is_workspace< MatrixVSR >,
         std::ptrdiff_t >::type
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const MatrixA& a, const MatrixB& b,
+ external_t* selctg, const MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr ) {
     return gges_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 inline std::ptrdiff_t ggesx( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense,
+ const char sort, external_t* selctg, const char sense,
         const fortran_int_t n, float* a, const fortran_int_t lda, float* b,
         const fortran_int_t ldb, fortran_int_t& sdim, float* alphar,
         float* alphai, float* beta, float* vsl, const fortran_int_t ldvsl,
@@ -75,7 +75,7 @@
 // * double value-type.
 //
 inline std::ptrdiff_t ggesx( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense,
+ const char sort, external_t* selctg, const char sense,
         const fortran_int_t n, double* a, const fortran_int_t lda, double* b,
         const fortran_int_t ldb, fortran_int_t& sdim, double* alphar,
         double* alphai, double* beta, double* vsl, const fortran_int_t ldvsl,
@@ -95,7 +95,7 @@
 // * complex<float> value-type.
 //
 inline std::ptrdiff_t ggesx( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense,
+ const char sort, external_t* selctg, const char sense,
         const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, std::complex<float>* b,
         const fortran_int_t ldb, fortran_int_t& sdim,
@@ -118,7 +118,7 @@
 // * complex<double> value-type.
 //
 inline std::ptrdiff_t ggesx( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense,
+ const char sort, external_t* selctg, const char sense,
         const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, std::complex<double>* b,
         const fortran_int_t ldb, fortran_int_t& sdim,
@@ -163,7 +163,7 @@
             typename MatrixVSR, typename VectorRCONDE, typename VectorRCONDV,
             typename WORK, typename IWORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense, MatrixA& a,
+ const char sort, external_t* selctg, const char sense, MatrixA& a,
             MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
             MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -267,7 +267,7 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename VectorRCONDE, typename VectorRCONDV >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense, MatrixA& a,
+ const char sort, external_t* selctg, const char sense, MatrixA& a,
             MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
             MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -295,7 +295,7 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename VectorRCONDE, typename VectorRCONDV >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense, MatrixA& a,
+ const char sort, external_t* selctg, const char sense, MatrixA& a,
             MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
             MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -383,7 +383,7 @@
             typename VectorRCONDE, typename VectorRCONDV, typename WORK,
             typename RWORK, typename IWORK, typename BWORK >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense, MatrixA& a,
+ const char sort, external_t* selctg, const char sense, MatrixA& a,
             MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
             VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
             VectorRCONDE& rconde, VectorRCONDV& rcondv, detail::workspace4<
@@ -480,7 +480,7 @@
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename VectorRCONDE, typename VectorRCONDV >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense, MatrixA& a,
+ const char sort, external_t* selctg, const char sense, MatrixA& a,
             MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
             VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
             VectorRCONDE& rconde, VectorRCONDV& rcondv, minimal_workspace ) {
@@ -509,7 +509,7 @@
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename VectorRCONDE, typename VectorRCONDV >
     static std::ptrdiff_t invoke( const char jobvsl, const char jobvsr,
- const char sort, logical_t* selctg, const char sense, MatrixA& a,
+ const char sort, external_t* selctg, const char sense, MatrixA& a,
             MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
             VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
             VectorRCONDE& rconde, VectorRCONDV& rcondv, optimal_workspace ) {
@@ -610,7 +610,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -633,7 +633,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -658,7 +658,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -681,7 +681,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -706,7 +706,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -729,7 +729,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -754,7 +754,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
         MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -778,7 +778,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
         MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -803,7 +803,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -826,7 +826,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -851,7 +851,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -874,7 +874,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -899,7 +899,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -922,7 +922,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -947,7 +947,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, const MatrixVSL& vsl,
         MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -971,7 +971,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, const MatrixVSL& vsl,
         MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -996,7 +996,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1019,7 +1019,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1044,7 +1044,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1067,7 +1067,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1092,7 +1092,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1115,7 +1115,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1140,7 +1140,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
         const MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -1164,7 +1164,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
         const MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1189,7 +1189,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1212,7 +1212,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1237,7 +1237,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1260,7 +1260,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1285,7 +1285,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1308,7 +1308,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1333,7 +1333,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, const MatrixVSL& vsl,
         const MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
@@ -1357,7 +1357,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHAR& alphar,
         VectorALPHAI& alphai, VectorBETA& beta, const MatrixVSL& vsl,
         const MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1380,7 +1380,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1403,7 +1403,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1427,7 +1427,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1450,7 +1450,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1474,7 +1474,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1497,7 +1497,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1521,7 +1521,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1544,7 +1544,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1568,7 +1568,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1591,7 +1591,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1615,7 +1615,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1638,7 +1638,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1662,7 +1662,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1685,7 +1685,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1709,7 +1709,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1732,7 +1732,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, const MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1756,7 +1756,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1779,7 +1779,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1803,7 +1803,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1826,7 +1826,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1850,7 +1850,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1873,7 +1873,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1897,7 +1897,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -1920,7 +1920,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
@@ -1944,7 +1944,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -1967,7 +1967,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -1991,7 +1991,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -2014,7 +2014,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, const MatrixA& a, MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -2038,7 +2038,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv, Workspace work ) {
@@ -2061,7 +2061,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, const MatrixB& b,
         fortran_int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         const MatrixVSL& vsl, const MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv ) {
@@ -2085,7 +2085,7 @@
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
@@ -2108,7 +2108,7 @@
 inline typename boost::disable_if< detail::is_workspace< VectorRCONDV >,
         std::ptrdiff_t >::type
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, const MatrixA& a,
+ external_t* selctg, const char sense, const MatrixA& a,
         const MatrixB& b, fortran_int_t& sdim, VectorALPHA& alpha,
         VectorBETA& beta, const MatrixVSL& vsl, const MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/traits/type.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/traits/type.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/traits/type.h 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -42,9 +42,18 @@
 #endif /* BOOST_NUMERIC_BINDINGS_USE_COMPLEX_STRUCT */
 
 /*
- * Define a fortran LOGICAL as a void (for now).
+ * Define a fortran LOGICAL as a bool (for now).
  */
 
-typedef void logical_t ;
+typedef bool logical_t ;
+
+/*
+ * Define a fortran EXTERNAL as void, so that the argument type is void*
+ * and one can pass a function pointer. These functions return bool,
+ * but they don't all take the same type of arguments. So there is no
+ * function pointer definition that would work for all cases.
+ */
+
+typedef void external_t ;
 
 #endif /* BOOST_NUMERIC_BINDINGS_TRAITS_TYPE_H */

Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gees.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gees.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gees.qbk 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -9,12 +9,12 @@
 [heading Prototype]
 There are two prototypes of `gees` available, please see below.
 ``
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         int_t& sdim, VectorWR& wr, VectorWI& wi, MatrixVS& vs );
 ``
 
 ``
-gees( const char jobvs, const char sort, logical_t* select, MatrixA& a,
+gees( const char jobvs, const char sort, external_t* select, MatrixA& a,
         int_t& sdim, VectorW& w, MatrixVS& vs );
 ``
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/geesx.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/geesx.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/geesx.qbk 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -9,13 +9,13 @@
 [heading Prototype]
 There are two prototypes of `geesx` available, please see below.
 ``
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, int_t& sdim, VectorWR& wr,
         VectorWI& wi, MatrixVS& vs, Scalar >, Scalar > );
 ``
 
 ``
-geesx( const char jobvs, const char sort, logical_t* select,
+geesx( const char jobvs, const char sort, external_t* select,
         const char sense, MatrixA& a, int_t& sdim, VectorW& w,
         MatrixVS& vs, Scalar >, Scalar > );
 ``

Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gges.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gges.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/gges.qbk 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -10,14 +10,14 @@
 There are two prototypes of `gges` available, please see below.
 ``
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, int_t& sdim,
         VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr );
 ``
 
 ``
 gges( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, MatrixA& a, MatrixB& b, int_t& sdim,
+ external_t* selctg, MatrixA& a, MatrixB& b, int_t& sdim,
         VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr );
 ``
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/ggesx.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/ggesx.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/driver/ggesx.qbk 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -10,7 +10,7 @@
 There are two prototypes of `ggesx` available, please see below.
 ``
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         int_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
         VectorRCONDE& rconde, VectorRCONDV& rcondv );
@@ -18,7 +18,7 @@
 
 ``
 ggesx( const char jobvsl, const char jobvsr, const char sort,
- logical_t* selctg, const char sense, MatrixA& a, MatrixB& b,
+ external_t* selctg, const char sense, MatrixA& a, MatrixB& b,
         int_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
         MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
         VectorRCONDV& rcondv );

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py 2010-07-17 15:06:18 EDT (Sat, 17 Jul 2010)
@@ -17,24 +17,26 @@
 library_integer_type = '$LIBRARY_INT_TYPE'
 generic_integer_type = 'std::ptrdiff_t'
 
-complex_float_type = 'std::complex<float>'
+complex_float_type = 'std::complex<float>'
 complex_double_type = 'std::complex<double>'
 
 fortran_complex_float_ptr = 'void' # was fcomplex_t
 fortran_complex_double_ptr = 'void' # was dcomplex_t
 
-global_type_map = {
+global_type_map = {
   'CHARACTER': 'char',
   'CHARACTER*1': 'char',
- 'LOGICAL': 'logical_t',
+ 'LOGICAL': 'logical_t',
+ 'EXTERNAL': 'external_t',
   'INTEGER': library_integer_type,
- 'REAL': 'float',
+ 'REAL': 'float',
   'DOUBLE PRECISION': 'double' }
 
 global_type_variant_map = {
   'CHARACTER': None,
   'CHARACTER*1': None,
   'LOGICAL': None,
+ 'EXTERNAL': None,
   'INTEGER': None,
   'REAL': 'real',
   'DOUBLE PRECISION': 'real',
@@ -1042,6 +1044,15 @@
     print "ERROR: Unable to find all argument declarations"
     return None, None
 
+ # Look for an EXTERNAL statement
+ if code_line_nr < len(code) and 'EXTERNAL' in code[ code_line_nr ]:
+ for argument_name in re.findall( '[A-Z0-9_]+', code[ code_line_nr ] ):
+ if argument_name in subroutine_arguments:
+ argument_map[ argument_name ] = {}
+ argument_map[ argument_name ][ 'value_type' ] = 'EXTERNAL'
+ argument_map[ argument_name ][ 'value_type_variant' ] = global_type_variant_map[ 'EXTERNAL' ]
+ argument_map[ argument_name ][ 'type' ] = 'scalar'
+
   # See if we are hard-forcing argument renaming aliases
   # This is needed for BLAS. It has argument names that are tied to the
   # value_type variant of the routine. E.g., daxpy has dx and dy, caxpy has


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk