Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r59139 - in sandbox/numeric_bindings: boost/numeric/bindings boost/numeric/bindings/blas/level2 boost/numeric/bindings/blas/level3 boost/numeric/bindings/detail boost/numeric/bindings/lapack/auxiliary boost/numeric/bindings/lapack/computational boost/numeric/bindings/lapack/detail boost/numeric/bindings/lapack/driver boost/numeric/bindings/std boost/numeric/bindings/ublas libs/numeric/bindings libs/numeric/bindings/atlas libs/numeric/bindings/lapack/test libs/numeric/bindings/tools libs/numeric/bindings/tools/templates libs/numeric/bindings/tools/templates/computational
From: rutger_at_[hidden]
Date: 2010-01-19 09:48:52


Author: rutger
Date: 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
New Revision: 59139
URL: http://svn.boost.org/trac/boost/changeset/59139

Log:
introduced template-based tags in both generators, ported atlas regressions

Added:
   sandbox/numeric_bindings/boost/numeric/bindings/at.hpp (contents, props changed)
   sandbox/numeric_bindings/boost/numeric/bindings/detail/if_left.hpp (contents, props changed)
Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp | 90 +-
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp | 94 +
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp | 40
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp | 50
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp | 34
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp | 32
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp | 40
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp | 44
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp | 38
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp | 26
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp | 34
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp | 38
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp | 30
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp | 38
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp | 62
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp | 62
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp | 63
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp | 63
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp | 70
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp | 70
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp | 90 +-
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp | 90 +-
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp | 58
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp | 36
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp | 164 ++-
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp | 98 +-
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp | 90 +-
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp | 189 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp | 195 ++--
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/langb.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lange.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp | 17
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp | 11
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhs.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp | 29
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp | 19
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp | 24
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp | 11
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp | 11
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp | 11
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larf.hpp | 94 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfb.hpp | 134 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfx.hpp | 94 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp | 42
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp | 6
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp | 6
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp | 32
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp | 50
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp | 6
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp | 6
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp | 6
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp | 17
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp | 1684 ++++++++++++++++++++-------------------
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp | 94 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp | 30
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp | 68
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp | 80 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp | 71
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp | 78
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp | 78
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp | 78
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp | 78
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp | 73
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp | 80
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp | 26
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp | 16
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp | 24
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp | 24
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp | 30
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp | 13
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp | 10
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp | 10
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp | 15
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp | 16
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp | 10
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp | 10
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp | 9
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp | 48
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp | 32
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp | 121 +-
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp | 40
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp | 26
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp | 259 +++---
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp | 44
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp | 34
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp | 30
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp | 6
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp | 87 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp | 71
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp | 71
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp | 71
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp | 71
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp | 71
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp | 80 +
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp | 73
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp | 62
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_option.hpp | 31
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp | 1
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp | 5
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp | 16
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gejsv.hpp | 15
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp | 48
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp | 63
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp | 26
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp | 40
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp | 15
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp | 20
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp | 33
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp | 22
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp | 20
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp | 27
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp | 44
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp | 40
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp | 37
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp | 14
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp | 22
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp | 32
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp | 11
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp | 16
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp | 22
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp | 5
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp | 49
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp | 28
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp | 24
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp | 16
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp | 18
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp | 4
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp | 8
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp | 59
   sandbox/numeric_bindings/boost/numeric/bindings/std/valarray.hpp | 12
   sandbox/numeric_bindings/boost/numeric/bindings/tag.hpp | 1
   sandbox/numeric_bindings/boost/numeric/bindings/ublas/hermitian.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix.hpp | 27
   sandbox/numeric_bindings/boost/numeric/bindings/ublas/symmetric.hpp | 3
   sandbox/numeric_bindings/boost/numeric/bindings/ublas/vector.hpp | 22
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/others.cc | 39
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt2.cc | 30
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt3.cc | 18
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt_gesv.cc | 6
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_cmatr3.cc | 18
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv.cc | 40
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv2.cc | 26
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv3.cc | 12
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv4.cc | 20
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv5.cc | 31
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getrf_getrs.cc | 28
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getri.cc | 22
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3h2k.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3herk.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_matr3.cc | 31
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_posv.cc | 46
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potrf_potrs.cc | 47
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potri.cc | 47
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm2syr.cc | 47
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm32.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm33.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3s2k.cc | 35
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3syrk.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symmc3.cc | 27
   sandbox/numeric_bindings/libs/numeric/bindings/atlas/utils.h | 36
   sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/hseqr.cpp | 3
   sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/ublas_geqrf.cpp | 13
   sandbox/numeric_bindings/libs/numeric/bindings/numeric-bindings.jam | 2
   sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py | 10
   sandbox/numeric_bindings/libs/numeric/bindings/tools/cblas.py | 4
   sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py | 13
   sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py | 63 +
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/orm.hpp | 49
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/un.hpp | 56
   sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp | 3
   259 files changed, 5023 insertions(+), 4416 deletions(-)

Added: sandbox/numeric_bindings/boost/numeric/bindings/at.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/at.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -0,0 +1,71 @@
+//
+// Copyright (c) 2009 Rutger ter Borg
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_NUMERIC_BINDINGS_AT_HPP
+#define BOOST_NUMERIC_BINDINGS_AT_HPP
+
+#include <boost/numeric/bindings/detail/offset.hpp>
+
+namespace boost {
+namespace numeric {
+namespace bindings {
+namespace detail {
+
+template< typename T, typename Enable = void >
+struct at_impl {
+
+ typedef typename bindings::value_type<T>::type& result_type;
+
+ // TODO implement other array structures such as triangular, band, etc.
+ static result_type invoke( T& t, const std::ptrdiff_t i1, std::ptrdiff_t i2 ) {
+ return t( i1, i2 );
+ }
+
+};
+
+template< typename T >
+struct at_impl< T, typename boost::enable_if< bindings::has_linear_array<T> >::type > {
+
+ typedef typename bindings::value_type<T>::type& result_type;
+
+ static result_type invoke( T& t, const std::ptrdiff_t i1 ) {
+ return *( bindings::begin_value(t) + offset(t,i1) );
+ }
+
+ static result_type invoke( T& t, const std::ptrdiff_t i1, std::ptrdiff_t i2 ) {
+ return *( bindings::begin_value(t) + offset(t,i1,i2) );
+ }
+
+};
+
+}
+
+namespace result_of {
+
+template< typename T >
+struct at {
+ typedef typename detail::at_impl<T>::result_type type;
+};
+
+}
+
+template< typename T >
+typename result_of::at<T>::type at( T& t, const std::ptrdiff_t i1 ) {
+ return detail::at_impl<T>::invoke( t, i1 );
+}
+
+template< typename T >
+typename result_of::at<T>::type at( T& t, const std::ptrdiff_t i1, const std::ptrdiff_t i2 ) {
+ return detail::at_impl<T>::invoke( t, i1, i2 );
+}
+
+} // bindings
+} // numeric
+} // boost
+
+#endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gbmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,10 +64,10 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const float alpha, const float* a, const int lda,
- const float* x, const int incx, const float beta, float* y,
- const int incy ) {
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku, const float alpha,
+ const float* a, const int lda, const float* x, const int incx,
+ const float beta, float* y, const int incy ) {
     cblas_sgbmv( cblas_option< Order >::value, cblas_option< Trans >::value,
             m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -78,10 +78,10 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const double alpha, const double* a, const int lda,
- const double* x, const int incx, const double beta, double* y,
- const int incy ) {
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku, const double alpha,
+ const double* a, const int lda, const double* x, const int incx,
+ const double beta, double* y, const int incy ) {
     cblas_dgbmv( cblas_option< Order >::value, cblas_option< Trans >::value,
             m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -92,10 +92,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda,
- const std::complex<float>* x, const int incx,
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     cblas_cgbmv( cblas_option< Order >::value, cblas_option< Trans >::value,
@@ -108,10 +108,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda,
- const std::complex<double>* x, const int incx,
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     cblas_zgbmv( cblas_option< Order >::value, cblas_option< Trans >::value,
@@ -125,10 +125,10 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const float alpha, const float* a, const int lda,
- const float* x, const int incx, const float beta, float* y,
- const int incy ) {
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku, const float alpha,
+ const float* a, const int lda, const float* x, const int incx,
+ const float beta, float* y, const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSgbmv( blas_option< Trans >::value, m, n, kl, ku, alpha, a, lda, x,
             incx, beta, y, incy );
@@ -140,10 +140,10 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const double alpha, const double* a, const int lda,
- const double* x, const int incx, const double beta, double* y,
- const int incy ) {
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku, const double alpha,
+ const double* a, const int lda, const double* x, const int incx,
+ const double beta, double* y, const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -154,10 +154,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda,
- const std::complex<float>* x, const int incx,
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -171,10 +171,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const int m, const int n, const int kl,
- const int ku, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda,
- const std::complex<double>* x, const int incx,
+inline void gbmv( const Order order, const Trans trans, const int m,
+ const int n, const int kl, const int ku,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -188,10 +188,10 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku, const float alpha,
- const float* a, const fortran_int_t lda, const float* x,
- const fortran_int_t incx, const float beta, float* y,
+inline void gbmv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
+ const float alpha, const float* a, const fortran_int_t lda,
+ const float* x, const fortran_int_t incx, const float beta, float* y,
         const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SGBMV( &blas_option< Trans >::value, &m, &n, &kl, &ku, &alpha, a,
@@ -204,11 +204,11 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku, const double alpha,
- const double* a, const fortran_int_t lda, const double* x,
- const fortran_int_t incx, const double beta, double* y,
- const fortran_int_t incy ) {
+inline void gbmv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
+ const double alpha, const double* a, const fortran_int_t lda,
+ const double* x, const fortran_int_t incx, const double beta,
+ double* y, const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DGBMV( &blas_option< Trans >::value, &m, &n, &kl, &ku, &alpha, a,
             &lda, x, &incx, &beta, y, &incy );
@@ -220,8 +220,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku,
+inline void gbmv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
         const std::complex<float> alpha, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* x,
         const fortran_int_t incx, const std::complex<float> beta,
@@ -237,8 +237,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline void gbmv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku,
+inline void gbmv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
         const std::complex<double> alpha, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* x,
         const fortran_int_t incx, const std::complex<double> beta,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gemv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,10 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n, const float alpha,
- const float* a, const int lda, const float* x, const int incx,
- const float beta, float* y, const int incy ) {
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const float alpha, const float* a, const int lda,
+ const float* x, const int incx, const float beta, float* y,
+ const int incy ) {
     cblas_sgemv( cblas_option< Order >::value, cblas_option< Trans >::value,
             m, n, alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -76,9 +77,10 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n, const double alpha,
- const double* a, const int lda, const double* x, const int incx,
- const double beta, double* y, const int incy ) {
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const double alpha, const double* a, const int lda,
+ const double* x, const int incx, const double beta, double* y,
+ const int incy ) {
     cblas_dgemv( cblas_option< Order >::value, cblas_option< Trans >::value,
             m, n, alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -89,9 +91,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* x, const int incx,
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     cblas_cgemv( cblas_option< Order >::value, cblas_option< Trans >::value,
@@ -104,9 +107,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* x, const int incx,
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     cblas_zgemv( cblas_option< Order >::value, cblas_option< Trans >::value,
@@ -120,9 +124,10 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n, const float alpha,
- const float* a, const int lda, const float* x, const int incx,
- const float beta, float* y, const int incy ) {
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const float alpha, const float* a, const int lda,
+ const float* x, const int incx, const float beta, float* y,
+ const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSgemv( blas_option< Trans >::value, m, n, alpha, a, lda, x, incx,
             beta, y, incy );
@@ -134,9 +139,10 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n, const double alpha,
- const double* a, const int lda, const double* x, const int incx,
- const double beta, double* y, const int incy ) {
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const double alpha, const double* a, const int lda,
+ const double* x, const int incx, const double beta, double* y,
+ const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDgemv( blas_option< Trans >::value, m, n, alpha, a, lda, x, incx,
             beta, y, incy );
@@ -148,9 +154,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* x, const int incx,
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -164,9 +171,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const int m, const int n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* x, const int incx,
+inline void gemv( const Order order, const Trans trans, const int m,
+ const int n, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -181,10 +189,10 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const float alpha, const float* a, const fortran_int_t lda,
- const float* x, const fortran_int_t incx, const float beta, float* y,
- const fortran_int_t incy ) {
+inline void gemv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const float alpha, const float* a,
+ const fortran_int_t lda, const float* x, const fortran_int_t incx,
+ const float beta, float* y, const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SGEMV( &blas_option< Trans >::value, &m, &n, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );
@@ -196,10 +204,10 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const double alpha, const double* a, const fortran_int_t lda,
- const double* x, const fortran_int_t incx, const double beta,
- double* y, const fortran_int_t incy ) {
+inline void gemv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const double alpha, const double* a,
+ const fortran_int_t lda, const double* x, const fortran_int_t incx,
+ const double beta, double* y, const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DGEMV( &blas_option< Trans >::value, &m, &n, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );
@@ -211,11 +219,12 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const fortran_int_t lda, const std::complex<float>* x,
- const fortran_int_t incx, const std::complex<float> beta,
- std::complex<float>* y, const fortran_int_t incy ) {
+inline void gemv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<float> alpha,
+ const std::complex<float>* a, const fortran_int_t lda,
+ const std::complex<float>* x, const fortran_int_t incx,
+ const std::complex<float> beta, std::complex<float>* y,
+ const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CGEMV( &blas_option< Trans >::value, &m, &n, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );
@@ -227,11 +236,12 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline void gemv( Order, Trans, const fortran_int_t m, const fortran_int_t n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const fortran_int_t lda, const std::complex<double>* x,
- const fortran_int_t incx, const std::complex<double> beta,
- std::complex<double>* y, const fortran_int_t incy ) {
+inline void gemv( const Order order, const Trans trans, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<double> alpha,
+ const std::complex<double>* a, const fortran_int_t lda,
+ const std::complex<double>* x, const fortran_int_t incx,
+ const std::complex<double> beta, std::complex<double>* y,
+ const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZGEMV( &blas_option< Trans >::value, &m, &n, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/ger.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -62,9 +62,9 @@
 // * float value-type.
 //
 template< typename Order >
-inline void ger( Order, const int m, const int n, const float alpha,
- const float* x, const int incx, const float* y, const int incy,
- float* a, const int lda ) {
+inline void ger( const Order order, const int m, const int n,
+ const float alpha, const float* x, const int incx, const float* y,
+ const int incy, float* a, const int lda ) {
     cblas_sger( cblas_option< Order >::value, m, n, alpha, x, incx, y, incy,
             a, lda );
 }
@@ -75,9 +75,9 @@
 // * double value-type.
 //
 template< typename Order >
-inline void ger( Order, const int m, const int n, const double alpha,
- const double* x, const int incx, const double* y, const int incy,
- double* a, const int lda ) {
+inline void ger( const Order order, const int m, const int n,
+ const double alpha, const double* x, const int incx, const double* y,
+ const int incy, double* a, const int lda ) {
     cblas_dger( cblas_option< Order >::value, m, n, alpha, x, incx, y, incy,
             a, lda );
 }
@@ -89,9 +89,9 @@
 // * float value-type.
 //
 template< typename Order >
-inline void ger( Order, const int m, const int n, const float alpha,
- const float* x, const int incx, const float* y, const int incy,
- float* a, const int lda ) {
+inline void ger( const Order order, const int m, const int n,
+ const float alpha, const float* x, const int incx, const float* y,
+ const int incy, float* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSger( m, n, alpha, x, incx, y, incy, a, lda );
 }
@@ -102,9 +102,9 @@
 // * double value-type.
 //
 template< typename Order >
-inline void ger( Order, const int m, const int n, const double alpha,
- const double* x, const int incx, const double* y, const int incy,
- double* a, const int lda ) {
+inline void ger( const Order order, const int m, const int n,
+ const double alpha, const double* x, const int incx, const double* y,
+ const int incy, double* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDger( m, n, alpha, x, incx, y, incy, a, lda );
 }
@@ -116,10 +116,10 @@
 // * float value-type.
 //
 template< typename Order >
-inline void ger( Order, const fortran_int_t m, const fortran_int_t n,
- const float alpha, const float* x, const fortran_int_t incx,
- const float* y, const fortran_int_t incy, float* a,
- const fortran_int_t lda ) {
+inline void ger( const Order order, const fortran_int_t m,
+ const fortran_int_t n, const float alpha, const float* x,
+ const fortran_int_t incx, const float* y, const fortran_int_t incy,
+ float* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SGER( &m, &n, &alpha, x, &incx, y, &incy, a, &lda );
 }
@@ -130,10 +130,10 @@
 // * double value-type.
 //
 template< typename Order >
-inline void ger( Order, const fortran_int_t m, const fortran_int_t n,
- const double alpha, const double* x, const fortran_int_t incx,
- const double* y, const fortran_int_t incy, double* a,
- const fortran_int_t lda ) {
+inline void ger( const Order order, const fortran_int_t m,
+ const fortran_int_t n, const double alpha, const double* x,
+ const fortran_int_t incx, const double* y, const fortran_int_t incy,
+ double* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DGER( &m, &n, &alpha, x, &incx, y, &incy, a, &lda );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/gerc.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -62,7 +62,7 @@
 // * complex<float> value-type.
 //
 template< typename Order >
-inline void gerc( Order, const int m, const int n,
+inline void gerc( const Order order, const int m, const int n,
         const std::complex<float> alpha, const std::complex<float>* x,
         const int incx, const std::complex<float>* y, const int incy,
         std::complex<float>* a, const int lda ) {
@@ -76,7 +76,7 @@
 // * complex<double> value-type.
 //
 template< typename Order >
-inline void gerc( Order, const int m, const int n,
+inline void gerc( const Order order, const int m, const int n,
         const std::complex<double> alpha, const std::complex<double>* x,
         const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* a, const int lda ) {
@@ -91,7 +91,7 @@
 // * complex<float> value-type.
 //
 template< typename Order >
-inline void gerc( Order, const int m, const int n,
+inline void gerc( const Order order, const int m, const int n,
         const std::complex<float> alpha, const std::complex<float>* x,
         const int incx, const std::complex<float>* y, const int incy,
         std::complex<float>* a, const int lda ) {
@@ -105,7 +105,7 @@
 // * complex<double> value-type.
 //
 template< typename Order >
-inline void gerc( Order, const int m, const int n,
+inline void gerc( const Order order, const int m, const int n,
         const std::complex<double> alpha, const std::complex<double>* x,
         const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* a, const int lda ) {
@@ -120,11 +120,11 @@
 // * complex<float> value-type.
 //
 template< typename Order >
-inline void gerc( Order, const fortran_int_t m, const fortran_int_t n,
- const std::complex<float> alpha, const std::complex<float>* x,
- const fortran_int_t incx, const std::complex<float>* y,
- const fortran_int_t incy, std::complex<float>* a,
- const fortran_int_t lda ) {
+inline void gerc( const Order order, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<float> alpha,
+ const std::complex<float>* x, const fortran_int_t incx,
+ const std::complex<float>* y, const fortran_int_t incy,
+ std::complex<float>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CGERC( &m, &n, &alpha, x, &incx, y, &incy, a, &lda );
 }
@@ -135,11 +135,11 @@
 // * complex<double> value-type.
 //
 template< typename Order >
-inline void gerc( Order, const fortran_int_t m, const fortran_int_t n,
- const std::complex<double> alpha, const std::complex<double>* x,
- const fortran_int_t incx, const std::complex<double>* y,
- const fortran_int_t incy, std::complex<double>* a,
- const fortran_int_t lda ) {
+inline void gerc( const Order order, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<double> alpha,
+ const std::complex<double>* x, const fortran_int_t incx,
+ const std::complex<double>* y, const fortran_int_t incy,
+ std::complex<double>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZGERC( &m, &n, &alpha, x, &incx, y, &incy, a, &lda );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/geru.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -62,7 +62,7 @@
 // * complex<float> value-type.
 //
 template< typename Order >
-inline void geru( Order, const int m, const int n,
+inline void geru( const Order order, const int m, const int n,
         const std::complex<float> alpha, const std::complex<float>* x,
         const int incx, const std::complex<float>* y, const int incy,
         std::complex<float>* a, const int lda ) {
@@ -76,7 +76,7 @@
 // * complex<double> value-type.
 //
 template< typename Order >
-inline void geru( Order, const int m, const int n,
+inline void geru( const Order order, const int m, const int n,
         const std::complex<double> alpha, const std::complex<double>* x,
         const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* a, const int lda ) {
@@ -91,7 +91,7 @@
 // * complex<float> value-type.
 //
 template< typename Order >
-inline void geru( Order, const int m, const int n,
+inline void geru( const Order order, const int m, const int n,
         const std::complex<float> alpha, const std::complex<float>* x,
         const int incx, const std::complex<float>* y, const int incy,
         std::complex<float>* a, const int lda ) {
@@ -105,7 +105,7 @@
 // * complex<double> value-type.
 //
 template< typename Order >
-inline void geru( Order, const int m, const int n,
+inline void geru( const Order order, const int m, const int n,
         const std::complex<double> alpha, const std::complex<double>* x,
         const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* a, const int lda ) {
@@ -120,11 +120,11 @@
 // * complex<float> value-type.
 //
 template< typename Order >
-inline void geru( Order, const fortran_int_t m, const fortran_int_t n,
- const std::complex<float> alpha, const std::complex<float>* x,
- const fortran_int_t incx, const std::complex<float>* y,
- const fortran_int_t incy, std::complex<float>* a,
- const fortran_int_t lda ) {
+inline void geru( const Order order, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<float> alpha,
+ const std::complex<float>* x, const fortran_int_t incx,
+ const std::complex<float>* y, const fortran_int_t incy,
+ std::complex<float>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CGERU( &m, &n, &alpha, x, &incx, y, &incy, a, &lda );
 }
@@ -135,11 +135,11 @@
 // * complex<double> value-type.
 //
 template< typename Order >
-inline void geru( Order, const fortran_int_t m, const fortran_int_t n,
- const std::complex<double> alpha, const std::complex<double>* x,
- const fortran_int_t incx, const std::complex<double>* y,
- const fortran_int_t incy, std::complex<double>* a,
- const fortran_int_t lda ) {
+inline void geru( const Order order, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<double> alpha,
+ const std::complex<double>* x, const fortran_int_t incx,
+ const std::complex<double>* y, const fortran_int_t incy,
+ std::complex<double>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZGERU( &m, &n, &alpha, x, &incx, y, &incy, a, &lda );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hbmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,9 +64,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hbmv( Order, UpLo, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* x, const int incx,
+inline void hbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     cblas_chbmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
@@ -79,9 +80,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hbmv( Order, UpLo, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* x, const int incx,
+inline void hbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     cblas_zhbmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
@@ -95,9 +97,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hbmv( Order, UpLo, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* x, const int incx,
+inline void hbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -111,9 +114,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hbmv( Order, UpLo, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* x, const int incx,
+inline void hbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -127,11 +131,12 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hbmv( Order, UpLo, const fortran_int_t n, const fortran_int_t k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const fortran_int_t lda, const std::complex<float>* x,
- const fortran_int_t incx, const std::complex<float> beta,
- std::complex<float>* y, const fortran_int_t incy ) {
+inline void hbmv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const fortran_int_t k, const std::complex<float> alpha,
+ const std::complex<float>* a, const fortran_int_t lda,
+ const std::complex<float>* x, const fortran_int_t incx,
+ const std::complex<float> beta, std::complex<float>* y,
+ const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CHBMV( &blas_option< UpLo >::value, &n, &k, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );
@@ -143,11 +148,12 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hbmv( Order, UpLo, const fortran_int_t n, const fortran_int_t k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const fortran_int_t lda, const std::complex<double>* x,
- const fortran_int_t incx, const std::complex<double> beta,
- std::complex<double>* y, const fortran_int_t incy ) {
+inline void hbmv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const fortran_int_t k, const std::complex<double> alpha,
+ const std::complex<double>* a, const fortran_int_t lda,
+ const std::complex<double>* x, const fortran_int_t incx,
+ const std::complex<double> beta, std::complex<double>* y,
+ const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZHBMV( &blas_option< UpLo >::value, &n, &k, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hemv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hemv( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda,
- const std::complex<float>* x, const int incx,
+inline void hemv( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     cblas_chemv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
@@ -78,9 +78,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hemv( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda,
- const std::complex<double>* x, const int incx,
+inline void hemv( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     cblas_zhemv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
@@ -94,9 +94,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hemv( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda,
- const std::complex<float>* x, const int incx,
+inline void hemv( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, const std::complex<float>* x, const int incx,
         const std::complex<float> beta, std::complex<float>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -110,9 +110,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hemv( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda,
- const std::complex<double>* x, const int incx,
+inline void hemv( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, const std::complex<double>* x, const int incx,
         const std::complex<double> beta, std::complex<double>* y,
         const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -126,7 +126,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hemv( Order, UpLo, const fortran_int_t n,
+inline void hemv( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<float> alpha, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* x,
         const fortran_int_t incx, const std::complex<float> beta,
@@ -142,7 +142,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hemv( Order, UpLo, const fortran_int_t n,
+inline void hemv( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<double> alpha, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* x,
         const fortran_int_t incx, const std::complex<double> beta,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her( Order, UpLo, const int n, const float alpha,
- const std::complex<float>* x, const int incx, std::complex<float>* a,
- const int lda ) {
+inline void her( const Order order, const UpLo uplo, const int n,
+ const float alpha, const std::complex<float>* x, const int incx,
+ std::complex<float>* a, const int lda ) {
     cblas_cher( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, a, lda );
 }
@@ -76,8 +76,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her( Order, UpLo, const int n, const double alpha,
- const std::complex<double>* x, const int incx,
+inline void her( const Order order, const UpLo uplo, const int n,
+ const double alpha, const std::complex<double>* x, const int incx,
         std::complex<double>* a, const int lda ) {
     cblas_zher( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, a, lda );
@@ -90,9 +90,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her( Order, UpLo, const int n, const float alpha,
- const std::complex<float>* x, const int incx, std::complex<float>* a,
- const int lda ) {
+inline void her( const Order order, const UpLo uplo, const int n,
+ const float alpha, const std::complex<float>* x, const int incx,
+ std::complex<float>* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCher( blas_option< UpLo >::value, n, alpha, x, incx, a, lda );
 }
@@ -103,8 +103,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her( Order, UpLo, const int n, const double alpha,
- const std::complex<double>* x, const int incx,
+inline void her( const Order order, const UpLo uplo, const int n,
+ const double alpha, const std::complex<double>* x, const int incx,
         std::complex<double>* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
@@ -117,9 +117,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her( Order, UpLo, const fortran_int_t n, const float alpha,
- const std::complex<float>* x, const fortran_int_t incx,
- std::complex<float>* a, const fortran_int_t lda ) {
+inline void her( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const std::complex<float>* x,
+ const fortran_int_t incx, std::complex<float>* a,
+ const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CHER( &blas_option< UpLo >::value, &n, &alpha, x, &incx, a, &lda );
 }
@@ -130,9 +131,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her( Order, UpLo, const fortran_int_t n, const double alpha,
- const std::complex<double>* x, const fortran_int_t incx,
- std::complex<double>* a, const fortran_int_t lda ) {
+inline void her( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const std::complex<double>* x,
+ const fortran_int_t incx, std::complex<double>* a,
+ const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZHER( &blas_option< UpLo >::value, &n, &alpha, x, &incx, a, &lda );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/her2.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,10 +63,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her2( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* x, const int incx,
- const std::complex<float>* y, const int incy, std::complex<float>* a,
- const int lda ) {
+inline void her2( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* x,
+ const int incx, const std::complex<float>* y, const int incy,
+ std::complex<float>* a, const int lda ) {
     cblas_cher2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             &alpha, x, incx, y, incy, a, lda );
 }
@@ -77,9 +77,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her2( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* x, const int incx,
- const std::complex<double>* y, const int incy,
+inline void her2( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* x,
+ const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* a, const int lda ) {
     cblas_zher2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             &alpha, x, incx, y, incy, a, lda );
@@ -92,10 +92,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her2( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* x, const int incx,
- const std::complex<float>* y, const int incy, std::complex<float>* a,
- const int lda ) {
+inline void her2( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* x,
+ const int incx, const std::complex<float>* y, const int incy,
+ std::complex<float>* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCher2( blas_option< UpLo >::value, n, alpha, x, incx, y, incy, a,
             lda );
@@ -107,9 +107,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her2( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* x, const int incx,
- const std::complex<double>* y, const int incy,
+inline void her2( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* x,
+ const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
@@ -122,7 +122,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her2( Order, UpLo, const fortran_int_t n,
+inline void her2( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<float> alpha, const std::complex<float>* x,
         const fortran_int_t incx, const std::complex<float>* y,
         const fortran_int_t incy, std::complex<float>* a,
@@ -138,7 +138,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void her2( Order, UpLo, const fortran_int_t n,
+inline void her2( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<double> alpha, const std::complex<double>* x,
         const fortran_int_t incx, const std::complex<double>* y,
         const fortran_int_t incy, std::complex<double>* a,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,10 +63,11 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpmv( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* ap, const std::complex<float>* x,
- const int incx, const std::complex<float> beta,
- std::complex<float>* y, const int incy ) {
+inline void hpmv( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* ap,
+ const std::complex<float>* x, const int incx,
+ const std::complex<float> beta, std::complex<float>* y,
+ const int incy ) {
     cblas_chpmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             &alpha, ap, x, incx, &beta, y, incy );
 }
@@ -77,10 +78,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpmv( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* ap, const std::complex<double>* x,
- const int incx, const std::complex<double> beta,
- std::complex<double>* y, const int incy ) {
+inline void hpmv( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* ap,
+ const std::complex<double>* x, const int incx,
+ const std::complex<double> beta, std::complex<double>* y,
+ const int incy ) {
     cblas_zhpmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             &alpha, ap, x, incx, &beta, y, incy );
 }
@@ -92,10 +94,11 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpmv( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* ap, const std::complex<float>* x,
- const int incx, const std::complex<float> beta,
- std::complex<float>* y, const int incy ) {
+inline void hpmv( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* ap,
+ const std::complex<float>* x, const int incx,
+ const std::complex<float> beta, std::complex<float>* y,
+ const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasChpmv( blas_option< UpLo >::value, n, alpha, ap, x, incx, beta, y,
             incy );
@@ -107,10 +110,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpmv( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* ap, const std::complex<double>* x,
- const int incx, const std::complex<double> beta,
- std::complex<double>* y, const int incy ) {
+inline void hpmv( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* ap,
+ const std::complex<double>* x, const int incx,
+ const std::complex<double> beta, std::complex<double>* y,
+ const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -122,7 +126,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpmv( Order, UpLo, const fortran_int_t n,
+inline void hpmv( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<float> alpha, const std::complex<float>* ap,
         const std::complex<float>* x, const fortran_int_t incx,
         const std::complex<float> beta, std::complex<float>* y,
@@ -138,7 +142,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpmv( Order, UpLo, const fortran_int_t n,
+inline void hpmv( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<double> alpha, const std::complex<double>* ap,
         const std::complex<double>* x, const fortran_int_t incx,
         const std::complex<double> beta, std::complex<double>* y,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,8 +63,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr( Order, UpLo, const int n, const float alpha,
- const std::complex<float>* x, const int incx,
+inline void hpr( const Order order, const UpLo uplo, const int n,
+ const float alpha, const std::complex<float>* x, const int incx,
         std::complex<float>* ap ) {
     cblas_chpr( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, ap );
@@ -76,8 +76,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr( Order, UpLo, const int n, const double alpha,
- const std::complex<double>* x, const int incx,
+inline void hpr( const Order order, const UpLo uplo, const int n,
+ const double alpha, const std::complex<double>* x, const int incx,
         std::complex<double>* ap ) {
     cblas_zhpr( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, ap );
@@ -90,8 +90,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr( Order, UpLo, const int n, const float alpha,
- const std::complex<float>* x, const int incx,
+inline void hpr( const Order order, const UpLo uplo, const int n,
+ const float alpha, const std::complex<float>* x, const int incx,
         std::complex<float>* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasChpr( blas_option< UpLo >::value, n, alpha, x, incx, ap );
@@ -103,8 +103,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr( Order, UpLo, const int n, const double alpha,
- const std::complex<double>* x, const int incx,
+inline void hpr( const Order order, const UpLo uplo, const int n,
+ const double alpha, const std::complex<double>* x, const int incx,
         std::complex<double>* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
@@ -117,9 +117,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr( Order, UpLo, const fortran_int_t n, const float alpha,
- const std::complex<float>* x, const fortran_int_t incx,
- std::complex<float>* ap ) {
+inline void hpr( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const std::complex<float>* x,
+ const fortran_int_t incx, std::complex<float>* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CHPR( &blas_option< UpLo >::value, &n, &alpha, x, &incx, ap );
 }
@@ -130,9 +130,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr( Order, UpLo, const fortran_int_t n, const double alpha,
- const std::complex<double>* x, const fortran_int_t incx,
- std::complex<double>* ap ) {
+inline void hpr( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const std::complex<double>* x,
+ const fortran_int_t incx, std::complex<double>* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZHPR( &blas_option< UpLo >::value, &n, &alpha, x, &incx, ap );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/hpr2.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr2( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* x, const int incx,
- const std::complex<float>* y, const int incy,
+inline void hpr2( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* x,
+ const int incx, const std::complex<float>* y, const int incy,
         std::complex<float>* ap ) {
     cblas_chpr2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             &alpha, x, incx, y, incy, ap );
@@ -77,9 +77,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr2( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* x, const int incx,
- const std::complex<double>* y, const int incy,
+inline void hpr2( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* x,
+ const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* ap ) {
     cblas_zhpr2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             &alpha, x, incx, y, incy, ap );
@@ -92,9 +92,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr2( Order, UpLo, const int n, const std::complex<float> alpha,
- const std::complex<float>* x, const int incx,
- const std::complex<float>* y, const int incy,
+inline void hpr2( const Order order, const UpLo uplo, const int n,
+ const std::complex<float> alpha, const std::complex<float>* x,
+ const int incx, const std::complex<float>* y, const int incy,
         std::complex<float>* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasChpr2( blas_option< UpLo >::value, n, alpha, x, incx, y, incy, ap );
@@ -106,9 +106,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr2( Order, UpLo, const int n, const std::complex<double> alpha,
- const std::complex<double>* x, const int incx,
- const std::complex<double>* y, const int incy,
+inline void hpr2( const Order order, const UpLo uplo, const int n,
+ const std::complex<double> alpha, const std::complex<double>* x,
+ const int incx, const std::complex<double>* y, const int incy,
         std::complex<double>* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
@@ -121,7 +121,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr2( Order, UpLo, const fortran_int_t n,
+inline void hpr2( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<float> alpha, const std::complex<float>* x,
         const fortran_int_t incx, const std::complex<float>* y,
         const fortran_int_t incy, std::complex<float>* ap ) {
@@ -136,7 +136,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline void hpr2( Order, UpLo, const fortran_int_t n,
+inline void hpr2( const Order order, const UpLo uplo, const fortran_int_t n,
         const std::complex<double> alpha, const std::complex<double>* x,
         const fortran_int_t incx, const std::complex<double>* y,
         const fortran_int_t incy, std::complex<double>* ap ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/sbmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,9 +64,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void sbmv( Order, UpLo, const int n, const int k, const float alpha,
- const float* a, const int lda, const float* x, const int incx,
- const float beta, float* y, const int incy ) {
+inline void sbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const float alpha, const float* a, const int lda,
+ const float* x, const int incx, const float beta, float* y,
+ const int incy ) {
     cblas_ssbmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             k, alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -77,9 +78,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void sbmv( Order, UpLo, const int n, const int k, const double alpha,
- const double* a, const int lda, const double* x, const int incx,
- const double beta, double* y, const int incy ) {
+inline void sbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const double alpha, const double* a, const int lda,
+ const double* x, const int incx, const double beta, double* y,
+ const int incy ) {
     cblas_dsbmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             k, alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -91,9 +93,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void sbmv( Order, UpLo, const int n, const int k, const float alpha,
- const float* a, const int lda, const float* x, const int incx,
- const float beta, float* y, const int incy ) {
+inline void sbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const float alpha, const float* a, const int lda,
+ const float* x, const int incx, const float beta, float* y,
+ const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSsbmv( blas_option< UpLo >::value, n, k, alpha, a, lda, x, incx,
             beta, y, incy );
@@ -105,9 +108,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void sbmv( Order, UpLo, const int n, const int k, const double alpha,
- const double* a, const int lda, const double* x, const int incx,
- const double beta, double* y, const int incy ) {
+inline void sbmv( const Order order, const UpLo uplo, const int n,
+ const int k, const double alpha, const double* a, const int lda,
+ const double* x, const int incx, const double beta, double* y,
+ const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -119,10 +123,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void sbmv( Order, UpLo, const fortran_int_t n, const fortran_int_t k,
- const float alpha, const float* a, const fortran_int_t lda,
- const float* x, const fortran_int_t incx, const float beta, float* y,
- const fortran_int_t incy ) {
+inline void sbmv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const fortran_int_t k, const float alpha, const float* a,
+ const fortran_int_t lda, const float* x, const fortran_int_t incx,
+ const float beta, float* y, const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSBMV( &blas_option< UpLo >::value, &n, &k, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );
@@ -134,10 +138,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void sbmv( Order, UpLo, const fortran_int_t n, const fortran_int_t k,
- const double alpha, const double* a, const fortran_int_t lda,
- const double* x, const fortran_int_t incx, const double beta,
- double* y, const fortran_int_t incy ) {
+inline void sbmv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const fortran_int_t k, const double alpha, const double* a,
+ const fortran_int_t lda, const double* x, const fortran_int_t incx,
+ const double beta, double* y, const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSBMV( &blas_option< UpLo >::value, &n, &k, &alpha, a, &lda, x,
             &incx, &beta, y, &incy );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spmv( Order, UpLo, const int n, const float alpha,
- const float* ap, const float* x, const int incx, const float beta,
- float* y, const int incy ) {
+inline void spmv( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* ap, const float* x, const int incx,
+ const float beta, float* y, const int incy ) {
     cblas_sspmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, ap, x, incx, beta, y, incy );
 }
@@ -76,9 +76,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spmv( Order, UpLo, const int n, const double alpha,
- const double* ap, const double* x, const int incx, const double beta,
- double* y, const int incy ) {
+inline void spmv( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* ap, const double* x, const int incx,
+ const double beta, double* y, const int incy ) {
     cblas_dspmv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, ap, x, incx, beta, y, incy );
 }
@@ -90,9 +90,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spmv( Order, UpLo, const int n, const float alpha,
- const float* ap, const float* x, const int incx, const float beta,
- float* y, const int incy ) {
+inline void spmv( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* ap, const float* x, const int incx,
+ const float beta, float* y, const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSspmv( blas_option< UpLo >::value, n, alpha, ap, x, incx, beta, y,
             incy );
@@ -104,9 +104,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spmv( Order, UpLo, const int n, const double alpha,
- const double* ap, const double* x, const int incx, const double beta,
- double* y, const int incy ) {
+inline void spmv( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* ap, const double* x, const int incx,
+ const double beta, double* y, const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -118,9 +118,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spmv( Order, UpLo, const fortran_int_t n, const float alpha,
- const float* ap, const float* x, const fortran_int_t incx,
- const float beta, float* y, const fortran_int_t incy ) {
+inline void spmv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const float* ap, const float* x,
+ const fortran_int_t incx, const float beta, float* y,
+ const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSPMV( &blas_option< UpLo >::value, &n, &alpha, ap, x, &incx, &beta,
             y, &incy );
@@ -132,9 +133,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spmv( Order, UpLo, const fortran_int_t n, const double alpha,
- const double* ap, const double* x, const fortran_int_t incx,
- const double beta, double* y, const fortran_int_t incy ) {
+inline void spmv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const double* ap, const double* x,
+ const fortran_int_t incx, const double beta, double* y,
+ const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSPMV( &blas_option< UpLo >::value, &n, &alpha, ap, x, &incx, &beta,
             y, &incy );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,8 +63,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, float* ap ) {
+inline void spr( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, float* ap ) {
     cblas_sspr( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, ap );
 }
@@ -75,8 +75,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, double* ap ) {
+inline void spr( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, double* ap ) {
     cblas_dspr( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, ap );
 }
@@ -88,8 +88,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, float* ap ) {
+inline void spr( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, float* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSspr( blas_option< UpLo >::value, n, alpha, x, incx, ap );
 }
@@ -100,8 +100,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, double* ap ) {
+inline void spr( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, double* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -113,8 +113,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr( Order, UpLo, const fortran_int_t n, const float alpha,
- const float* x, const fortran_int_t incx, float* ap ) {
+inline void spr( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const float* x, const fortran_int_t incx,
+ float* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSPR( &blas_option< UpLo >::value, &n, &alpha, x, &incx, ap );
 }
@@ -125,8 +126,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr( Order, UpLo, const fortran_int_t n, const double alpha,
- const double* x, const fortran_int_t incx, double* ap ) {
+inline void spr( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const double* x, const fortran_int_t incx,
+ double* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSPR( &blas_option< UpLo >::value, &n, &alpha, x, &incx, ap );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/spr2.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,8 +63,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr2( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, const float* y, const int incy, float* ap ) {
+inline void spr2( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, const float* y,
+ const int incy, float* ap ) {
     cblas_sspr2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, y, incy, ap );
 }
@@ -75,9 +76,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr2( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, const double* y, const int incy,
- double* ap ) {
+inline void spr2( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, const double* y,
+ const int incy, double* ap ) {
     cblas_dspr2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, y, incy, ap );
 }
@@ -89,8 +90,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr2( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, const float* y, const int incy, float* ap ) {
+inline void spr2( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, const float* y,
+ const int incy, float* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSspr2( blas_option< UpLo >::value, n, alpha, x, incx, y, incy, ap );
 }
@@ -101,9 +103,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr2( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, const double* y, const int incy,
- double* ap ) {
+inline void spr2( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, const double* y,
+ const int incy, double* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -115,9 +117,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr2( Order, UpLo, const fortran_int_t n, const float alpha,
- const float* x, const fortran_int_t incx, const float* y,
- const fortran_int_t incy, float* ap ) {
+inline void spr2( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const float* x, const fortran_int_t incx,
+ const float* y, const fortran_int_t incy, float* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSPR2( &blas_option< UpLo >::value, &n, &alpha, x, &incx, y, &incy,
             ap );
@@ -129,9 +131,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void spr2( Order, UpLo, const fortran_int_t n, const double alpha,
- const double* x, const fortran_int_t incx, const double* y,
- const fortran_int_t incy, double* ap ) {
+inline void spr2( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const double* x, const fortran_int_t incx,
+ const double* y, const fortran_int_t incy, double* ap ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSPR2( &blas_option< UpLo >::value, &n, &alpha, x, &incx, y, &incy,
             ap );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/symv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void symv( Order, UpLo, const int n, const float alpha, const float* a,
- const int lda, const float* x, const int incx, const float beta,
- float* y, const int incy ) {
+inline void symv( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* a, const int lda, const float* x,
+ const int incx, const float beta, float* y, const int incy ) {
     cblas_ssymv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -76,9 +76,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void symv( Order, UpLo, const int n, const double alpha,
- const double* a, const int lda, const double* x, const int incx,
- const double beta, double* y, const int incy ) {
+inline void symv( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* a, const int lda, const double* x,
+ const int incx, const double beta, double* y, const int incy ) {
     cblas_dsymv( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, a, lda, x, incx, beta, y, incy );
 }
@@ -90,9 +90,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void symv( Order, UpLo, const int n, const float alpha, const float* a,
- const int lda, const float* x, const int incx, const float beta,
- float* y, const int incy ) {
+inline void symv( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* a, const int lda, const float* x,
+ const int incx, const float beta, float* y, const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSsymv( blas_option< UpLo >::value, n, alpha, a, lda, x, incx, beta,
             y, incy );
@@ -104,9 +104,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void symv( Order, UpLo, const int n, const double alpha,
- const double* a, const int lda, const double* x, const int incx,
- const double beta, double* y, const int incy ) {
+inline void symv( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* a, const int lda, const double* x,
+ const int incx, const double beta, double* y, const int incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -118,9 +118,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void symv( Order, UpLo, const fortran_int_t n, const float alpha,
- const float* a, const fortran_int_t lda, const float* x,
- const fortran_int_t incx, const float beta, float* y,
+inline void symv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const float* a, const fortran_int_t lda,
+ const float* x, const fortran_int_t incx, const float beta, float* y,
         const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSYMV( &blas_option< UpLo >::value, &n, &alpha, a, &lda, x, &incx,
@@ -133,10 +133,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void symv( Order, UpLo, const fortran_int_t n, const double alpha,
- const double* a, const fortran_int_t lda, const double* x,
- const fortran_int_t incx, const double beta, double* y,
- const fortran_int_t incy ) {
+inline void symv( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const double* a, const fortran_int_t lda,
+ const double* x, const fortran_int_t incx, const double beta,
+ double* y, const fortran_int_t incy ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSYMV( &blas_option< UpLo >::value, &n, &alpha, a, &lda, x, &incx,
             &beta, y, &incy );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,8 +63,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, float* a, const int lda ) {
+inline void syr( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, float* a,
+ const int lda ) {
     cblas_ssyr( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, a, lda );
 }
@@ -75,8 +76,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, double* a, const int lda ) {
+inline void syr( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, double* a,
+ const int lda ) {
     cblas_dsyr( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, a, lda );
 }
@@ -88,8 +90,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, float* a, const int lda ) {
+inline void syr( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, float* a,
+ const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSsyr( blas_option< UpLo >::value, n, alpha, x, incx, a, lda );
 }
@@ -100,8 +103,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, double* a, const int lda ) {
+inline void syr( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, double* a,
+ const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDsyr( blas_option< UpLo >::value, n, alpha, x, incx, a, lda );
 }
@@ -113,8 +117,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr( Order, UpLo, const fortran_int_t n, const float alpha,
- const float* x, const fortran_int_t incx, float* a,
+inline void syr( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const float* x, const fortran_int_t incx, float* a,
         const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSYR( &blas_option< UpLo >::value, &n, &alpha, x, &incx, a, &lda );
@@ -126,9 +130,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr( Order, UpLo, const fortran_int_t n, const double alpha,
- const double* x, const fortran_int_t incx, double* a,
- const fortran_int_t lda ) {
+inline void syr( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const double* x, const fortran_int_t incx,
+ double* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSYR( &blas_option< UpLo >::value, &n, &alpha, x, &incx, a, &lda );
 }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/syr2.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,9 +63,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr2( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, const float* y, const int incy, float* a,
- const int lda ) {
+inline void syr2( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, const float* y,
+ const int incy, float* a, const int lda ) {
     cblas_ssyr2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, y, incy, a, lda );
 }
@@ -76,9 +76,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr2( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, const double* y, const int incy,
- double* a, const int lda ) {
+inline void syr2( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, const double* y,
+ const int incy, double* a, const int lda ) {
     cblas_dsyr2( cblas_option< Order >::value, cblas_option< UpLo >::value, n,
             alpha, x, incx, y, incy, a, lda );
 }
@@ -90,9 +90,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr2( Order, UpLo, const int n, const float alpha, const float* x,
- const int incx, const float* y, const int incy, float* a,
- const int lda ) {
+inline void syr2( const Order order, const UpLo uplo, const int n,
+ const float alpha, const float* x, const int incx, const float* y,
+ const int incy, float* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSsyr2( blas_option< UpLo >::value, n, alpha, x, incx, y, incy, a,
             lda );
@@ -104,9 +104,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr2( Order, UpLo, const int n, const double alpha,
- const double* x, const int incx, const double* y, const int incy,
- double* a, const int lda ) {
+inline void syr2( const Order order, const UpLo uplo, const int n,
+ const double alpha, const double* x, const int incx, const double* y,
+ const int incy, double* a, const int lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -118,9 +118,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr2( Order, UpLo, const fortran_int_t n, const float alpha,
- const float* x, const fortran_int_t incx, const float* y,
- const fortran_int_t incy, float* a, const fortran_int_t lda ) {
+inline void syr2( const Order order, const UpLo uplo, const fortran_int_t n,
+ const float alpha, const float* x, const fortran_int_t incx,
+ const float* y, const fortran_int_t incy, float* a,
+ const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSYR2( &blas_option< UpLo >::value, &n, &alpha, x, &incx, y, &incy,
             a, &lda );
@@ -132,9 +133,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline void syr2( Order, UpLo, const fortran_int_t n, const double alpha,
- const double* x, const fortran_int_t incx, const double* y,
- const fortran_int_t incy, double* a, const fortran_int_t lda ) {
+inline void syr2( const Order order, const UpLo uplo, const fortran_int_t n,
+ const double alpha, const double* x, const fortran_int_t incx,
+ const double* y, const fortran_int_t incy, double* a,
+ const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSYR2( &blas_option< UpLo >::value, &n, &alpha, x, &incx, y, &incy,
             a, &lda );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -66,8 +66,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
- const float* a, const int lda, float* x, const int incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const float* a,
+ const int lda, float* x, const int incx ) {
     cblas_stbmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, k,
             a, lda, x, incx );
@@ -79,8 +80,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
- const double* a, const int lda, double* x, const int incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const double* a,
+ const int lda, double* x, const int incx ) {
     cblas_dtbmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, k,
             a, lda, x, incx );
@@ -92,7 +94,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<float>* a, const int lda, std::complex<float>* x,
         const int incx ) {
     cblas_ctbmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
@@ -106,7 +109,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<double>* a, const int lda, std::complex<double>* x,
         const int incx ) {
     cblas_ztbmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
@@ -121,8 +125,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
- const float* a, const int lda, float* x, const int incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const float* a,
+ const int lda, float* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasStbmv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, k, a, lda, x, incx );
@@ -134,8 +139,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
- const double* a, const int lda, double* x, const int incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const double* a,
+ const int lda, double* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -146,7 +152,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<float>* a, const int lda, std::complex<float>* x,
         const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -160,7 +167,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<double>* a, const int lda, std::complex<double>* x,
         const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -174,9 +182,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const float* a, const fortran_int_t lda,
- float* x, const fortran_int_t incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const float* a, const fortran_int_t lda, float* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_STBMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );
@@ -188,9 +197,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const double* a, const fortran_int_t lda,
- double* x, const fortran_int_t incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const double* a, const fortran_int_t lda, double* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DTBMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );
@@ -202,10 +212,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* x,
- const fortran_int_t incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CTBMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );
@@ -217,10 +227,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* x,
- const fortran_int_t incx ) {
+inline void tbmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZTBMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tbsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -66,8 +66,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
- const float* a, const int lda, float* x, const int incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const float* a,
+ const int lda, float* x, const int incx ) {
     cblas_stbsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, k,
             a, lda, x, incx );
@@ -79,8 +80,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
- const double* a, const int lda, double* x, const int incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const double* a,
+ const int lda, double* x, const int incx ) {
     cblas_dtbsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, k,
             a, lda, x, incx );
@@ -92,7 +94,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<float>* a, const int lda, std::complex<float>* x,
         const int incx ) {
     cblas_ctbsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
@@ -106,7 +109,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<double>* a, const int lda, std::complex<double>* x,
         const int incx ) {
     cblas_ztbsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
@@ -121,8 +125,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
- const float* a, const int lda, float* x, const int incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const float* a,
+ const int lda, float* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasStbsv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, k, a, lda, x, incx );
@@ -134,8 +139,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
- const double* a, const int lda, double* x, const int incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k, const double* a,
+ const int lda, double* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -146,7 +152,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<float>* a, const int lda, std::complex<float>* x,
         const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -160,7 +167,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const int n, const int k,
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const int k,
         const std::complex<double>* a, const int lda, std::complex<double>* x,
         const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -174,9 +182,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const float* a, const fortran_int_t lda,
- float* x, const fortran_int_t incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const float* a, const fortran_int_t lda, float* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_STBSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );
@@ -188,9 +197,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const double* a, const fortran_int_t lda,
- double* x, const fortran_int_t incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const double* a, const fortran_int_t lda, double* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DTBSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );
@@ -202,10 +212,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* x,
- const fortran_int_t incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CTBSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );
@@ -217,10 +227,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tbsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* x,
- const fortran_int_t incx ) {
+inline void tbsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZTBSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, &k, a, &lda, x, &incx );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -65,8 +65,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n, const float* ap,
- float* x, const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* ap, float* x,
+ const int incx ) {
     cblas_stpmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -78,8 +79,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n, const double* ap,
- double* x, const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* ap, double* x,
+ const int incx ) {
     cblas_dtpmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -91,9 +93,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* ap, std::complex<float>* x,
- const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* ap,
+ std::complex<float>* x, const int incx ) {
     cblas_ctpmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -105,9 +107,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* ap, std::complex<double>* x,
- const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* ap,
+ std::complex<double>* x, const int incx ) {
     cblas_ztpmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -120,8 +122,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n, const float* ap,
- float* x, const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* ap, float* x,
+ const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasStpmv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, ap, x, incx );
@@ -133,8 +136,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n, const double* ap,
- double* x, const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* ap, double* x,
+ const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -145,9 +149,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* ap, std::complex<float>* x,
- const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* ap,
+ std::complex<float>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCtpmv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, ap, x, incx );
@@ -159,9 +163,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* ap, std::complex<double>* x,
- const int incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* ap,
+ std::complex<double>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -173,8 +177,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const float* ap, float* x, const fortran_int_t incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const float* ap, float* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_STPMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, ap, x, &incx );
@@ -186,8 +191,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const double* ap, double* x, const fortran_int_t incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const double* ap, double* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DTPMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, ap, x, &incx );
@@ -199,9 +205,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const std::complex<float>* ap, std::complex<float>* x,
- const fortran_int_t incx ) {
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const std::complex<float>* ap,
+ std::complex<float>* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CTPMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, ap, x, &incx );
@@ -213,7 +219,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
+inline void tpmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n,
         const std::complex<double>* ap, std::complex<double>* x,
         const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/tpsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -65,8 +65,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n, const float* ap,
- float* x, const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* ap, float* x,
+ const int incx ) {
     cblas_stpsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -78,8 +79,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n, const double* ap,
- double* x, const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* ap, double* x,
+ const int incx ) {
     cblas_dtpsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -91,9 +93,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* ap, std::complex<float>* x,
- const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* ap,
+ std::complex<float>* x, const int incx ) {
     cblas_ctpsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -105,9 +107,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* ap, std::complex<double>* x,
- const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* ap,
+ std::complex<double>* x, const int incx ) {
     cblas_ztpsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, ap,
             x, incx );
@@ -120,8 +122,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n, const float* ap,
- float* x, const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* ap, float* x,
+ const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasStpsv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, ap, x, incx );
@@ -133,8 +136,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n, const double* ap,
- double* x, const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* ap, double* x,
+ const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -145,9 +149,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* ap, std::complex<float>* x,
- const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* ap,
+ std::complex<float>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCtpsv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, ap, x, incx );
@@ -159,9 +163,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* ap, std::complex<double>* x,
- const int incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* ap,
+ std::complex<double>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -173,8 +177,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const float* ap, float* x, const fortran_int_t incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const float* ap, float* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_STPSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, ap, x, &incx );
@@ -186,8 +191,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const double* ap, double* x, const fortran_int_t incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const double* ap, double* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DTPSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, ap, x, &incx );
@@ -199,9 +205,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const std::complex<float>* ap, std::complex<float>* x,
- const fortran_int_t incx ) {
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const std::complex<float>* ap,
+ std::complex<float>* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CTPSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, ap, x, &incx );
@@ -213,7 +219,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void tpsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
+inline void tpsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n,
         const std::complex<double>* ap, std::complex<double>* x,
         const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trmv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -65,8 +65,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n, const float* a,
- const int lda, float* x, const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* a, const int lda, float* x,
+ const int incx ) {
     cblas_strmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -78,8 +79,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n, const double* a,
- const int lda, double* x, const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* a, const int lda,
+ double* x, const int incx ) {
     cblas_dtrmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -91,9 +93,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* a, const int lda, std::complex<float>* x,
- const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* a,
+ const int lda, std::complex<float>* x, const int incx ) {
     cblas_ctrmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -105,9 +107,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* a, const int lda, std::complex<double>* x,
- const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* a,
+ const int lda, std::complex<double>* x, const int incx ) {
     cblas_ztrmv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -120,8 +122,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n, const float* a,
- const int lda, float* x, const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* a, const int lda, float* x,
+ const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasStrmv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, a, lda, x, incx );
@@ -133,8 +136,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n, const double* a,
- const int lda, double* x, const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* a, const int lda,
+ double* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -145,9 +149,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* a, const int lda, std::complex<float>* x,
- const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* a,
+ const int lda, std::complex<float>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -158,9 +162,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* a, const int lda, std::complex<double>* x,
- const int incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* a,
+ const int lda, std::complex<double>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -172,9 +176,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const float* a, const fortran_int_t lda, float* x,
- const fortran_int_t incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const float* a,
+ const fortran_int_t lda, float* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_STRMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );
@@ -186,9 +190,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const double* a, const fortran_int_t lda, double* x,
- const fortran_int_t incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const double* a,
+ const fortran_int_t lda, double* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DTRMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );
@@ -200,9 +204,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const std::complex<float>* a, const fortran_int_t lda,
- std::complex<float>* x, const fortran_int_t incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const std::complex<float>* a,
+ const fortran_int_t lda, std::complex<float>* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CTRMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );
@@ -214,9 +219,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trmv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const std::complex<double>* a, const fortran_int_t lda,
- std::complex<double>* x, const fortran_int_t incx ) {
+inline void trmv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const std::complex<double>* a,
+ const fortran_int_t lda, std::complex<double>* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZTRMV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level2/trsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -65,8 +65,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n, const float* a,
- const int lda, float* x, const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* a, const int lda, float* x,
+ const int incx ) {
     cblas_strsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -78,8 +79,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n, const double* a,
- const int lda, double* x, const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* a, const int lda,
+ double* x, const int incx ) {
     cblas_dtrsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -91,9 +93,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* a, const int lda, std::complex<float>* x,
- const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* a,
+ const int lda, std::complex<float>* x, const int incx ) {
     cblas_ctrsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -105,9 +107,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* a, const int lda, std::complex<double>* x,
- const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* a,
+ const int lda, std::complex<double>* x, const int incx ) {
     cblas_ztrsv( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, cblas_option< Diag >::value, n, a,
             lda, x, incx );
@@ -120,8 +122,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n, const float* a,
- const int lda, float* x, const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const float* a, const int lda, float* x,
+ const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasStrsv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, a, lda, x, incx );
@@ -133,8 +136,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n, const double* a,
- const int lda, double* x, const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const double* a, const int lda,
+ double* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDtrsv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, a, lda, x, incx );
@@ -146,9 +150,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<float>* a, const int lda, std::complex<float>* x,
- const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<float>* a,
+ const int lda, std::complex<float>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCtrsv( blas_option< UpLo >::value, blas_option< Trans >::value,
             blas_option< Diag >::value, n, a, lda, x, incx );
@@ -160,9 +164,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const int n,
- const std::complex<double>* a, const int lda, std::complex<double>* x,
- const int incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const int n, const std::complex<double>* a,
+ const int lda, std::complex<double>* x, const int incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -174,9 +178,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const float* a, const fortran_int_t lda, float* x,
- const fortran_int_t incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const float* a,
+ const fortran_int_t lda, float* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_STRSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );
@@ -188,9 +192,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const double* a, const fortran_int_t lda, double* x,
- const fortran_int_t incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const double* a,
+ const fortran_int_t lda, double* x, const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DTRSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );
@@ -202,9 +206,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const std::complex<float>* a, const fortran_int_t lda,
- std::complex<float>* x, const fortran_int_t incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const std::complex<float>* a,
+ const fortran_int_t lda, std::complex<float>* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CTRSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );
@@ -216,9 +221,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans, typename Diag >
-inline void trsv( Order, UpLo, Trans, Diag, const fortran_int_t n,
- const std::complex<double>* a, const fortran_int_t lda,
- std::complex<double>* x, const fortran_int_t incx ) {
+inline void trsv( const Order order, const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const std::complex<double>* a,
+ const fortran_int_t lda, std::complex<double>* x,
+ const fortran_int_t incx ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZTRSV( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &blas_option< Diag >::value, &n, a, &lda, x, &incx );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/gemm.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -63,10 +63,10 @@
 // * float value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const float alpha, const float* a, const int lda,
- const float* b, const int ldb, const float beta, float* c,
- const int ldc ) {
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k, const float alpha,
+ const float* a, const int lda, const float* b, const int ldb,
+ const float beta, float* c, const int ldc ) {
     cblas_sgemm( cblas_option< Order >::value, cblas_option< TransA >::value,
             cblas_option< TransB >::value, m, n, k, alpha, a, lda, b, ldb,
             beta, c, ldc );
@@ -78,10 +78,10 @@
 // * double value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const double alpha, const double* a, const int lda,
- const double* b, const int ldb, const double beta, double* c,
- const int ldc ) {
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k, const double alpha,
+ const double* a, const int lda, const double* b, const int ldb,
+ const double beta, double* c, const int ldc ) {
     cblas_dgemm( cblas_option< Order >::value, cblas_option< TransA >::value,
             cblas_option< TransB >::value, m, n, k, alpha, a, lda, b, ldb,
             beta, c, ldc );
@@ -93,10 +93,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda,
- const std::complex<float>* b, const int ldb,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     cblas_cgemm( cblas_option< Order >::value, cblas_option< TransA >::value,
@@ -110,10 +110,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda,
- const std::complex<double>* b, const int ldb,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     cblas_zgemm( cblas_option< Order >::value, cblas_option< TransA >::value,
@@ -128,10 +128,10 @@
 // * float value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const float alpha, const float* a, const int lda,
- const float* b, const int ldb, const float beta, float* c,
- const int ldc ) {
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k, const float alpha,
+ const float* a, const int lda, const float* b, const int ldb,
+ const float beta, float* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSgemm( blas_option< TransA >::value, blas_option< TransB >::value,
             m, n, k, alpha, a, lda, b, ldb, beta, c, ldc );
@@ -143,10 +143,10 @@
 // * double value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const double alpha, const double* a, const int lda,
- const double* b, const int ldb, const double beta, double* c,
- const int ldc ) {
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k, const double alpha,
+ const double* a, const int lda, const double* b, const int ldb,
+ const double beta, double* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDgemm( blas_option< TransA >::value, blas_option< TransB >::value,
             m, n, k, alpha, a, lda, b, ldb, beta, c, ldc );
@@ -158,10 +158,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda,
- const std::complex<float>* b, const int ldb,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -175,10 +175,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const int m, const int n,
- const int k, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda,
- const std::complex<double>* b, const int ldb,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const int m, const int n, const int k,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -193,10 +193,10 @@
 // * float value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const float alpha,
- const float* a, const fortran_int_t lda, const float* b,
- const fortran_int_t ldb, const float beta, float* c,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const float alpha, const float* a, const fortran_int_t lda,
+ const float* b, const fortran_int_t ldb, const float beta, float* c,
         const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SGEMM( &blas_option< TransA >::value, &blas_option< TransB >::value,
@@ -209,11 +209,11 @@
 // * double value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const double alpha,
- const double* a, const fortran_int_t lda, const double* b,
- const fortran_int_t ldb, const double beta, double* c,
- const fortran_int_t ldc ) {
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const double alpha, const double* a, const fortran_int_t lda,
+ const double* b, const fortran_int_t ldb, const double beta,
+ double* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DGEMM( &blas_option< TransA >::value, &blas_option< TransB >::value,
             &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
@@ -225,8 +225,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<float> alpha, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* b,
         const fortran_int_t ldb, const std::complex<float> beta,
@@ -242,8 +242,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename TransA, typename TransB >
-inline void gemm( Order, TransA, TransB, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+inline void gemm( const Order order, const TransA transa, const TransB transb,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<double> alpha, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* b,
         const fortran_int_t ldb, const std::complex<double> beta,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/hemm.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -62,10 +62,11 @@
 // * CBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo >
-inline void hemm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void hemm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     cblas_chemm( cblas_option< Order >::value, cblas_option< Side >::value,
@@ -78,10 +79,11 @@
 // * CBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo >
-inline void hemm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void hemm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     cblas_zhemm( cblas_option< Order >::value, cblas_option< Side >::value,
@@ -95,15 +97,16 @@
 // * CUBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo >
-inline void hemm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void hemm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasChemm( side, blas_option< UpLo >::value, m, n, alpha, a, lda, b,
- ldb, beta, c, ldc );
+ cublasChemm( blas_option< Side >::value, blas_option< UpLo >::value, m, n,
+ alpha, a, lda, b, ldb, beta, c, ldc );
 }
 
 //
@@ -111,10 +114,11 @@
 // * CUBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo >
-inline void hemm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void hemm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -127,16 +131,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo >
-inline void hemm( Order, const char side, UpLo, const fortran_int_t m,
- const fortran_int_t n, const std::complex<float> alpha,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float>* b, const fortran_int_t ldb,
- const std::complex<float> beta, std::complex<float>* c,
- const fortran_int_t ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void hemm( const Order order, const Side side, const UpLo uplo,
+ const fortran_int_t m, const fortran_int_t n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float>* b,
+ const fortran_int_t ldb, const std::complex<float> beta,
+ std::complex<float>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_CHEMM( &side, &blas_option< UpLo >::value, &m, &n, &alpha, a, &lda,
- b, &ldb, &beta, c, &ldc );
+ BLAS_CHEMM( &blas_option< Side >::value, &blas_option< UpLo >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
 }
 
 //
@@ -144,16 +148,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo >
-inline void hemm( Order, const char side, UpLo, const fortran_int_t m,
- const fortran_int_t n, const std::complex<double> alpha,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double>* b, const fortran_int_t ldb,
- const std::complex<double> beta, std::complex<double>* c,
- const fortran_int_t ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void hemm( const Order order, const Side side, const UpLo uplo,
+ const fortran_int_t m, const fortran_int_t n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double>* b,
+ const fortran_int_t ldb, const std::complex<double> beta,
+ std::complex<double>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_ZHEMM( &side, &blas_option< UpLo >::value, &m, &n, &alpha, a, &lda,
- b, &ldb, &beta, c, &ldc );
+ BLAS_ZHEMM( &blas_option< Side >::value, &blas_option< UpLo >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
 }
 
 #endif
@@ -176,8 +180,9 @@
     // * Deduces the required arguments for dispatching to BLAS, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename MatrixB, typename MatrixC >
- static return_type invoke( const char side, const value_type alpha,
+ template< typename Side, typename MatrixA, typename MatrixB,
+ typename MatrixC >
+ static return_type invoke( const Side side, const value_type alpha,
             const MatrixA& a, const MatrixB& b, const value_type beta,
             MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -198,7 +203,6 @@
                 bindings::stride_minor(b) == 1 );
         BOOST_ASSERT( bindings::size_minor(c) == 1 ||
                 bindings::stride_minor(c) == 1 );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         detail::hemm( order(), side, uplo(), bindings::size_row(c),
                 bindings::size_column(c), alpha, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(b),
@@ -219,10 +223,10 @@
 // Overloaded function for hemm. Its overload differs for
 // * MatrixC&
 //
-template< typename MatrixA, typename MatrixB, typename MatrixC >
+template< typename Side, typename MatrixA, typename MatrixB, typename MatrixC >
 inline typename hemm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-hemm( const char side, const typename bindings::value_type<
+hemm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, const MatrixB& b,
         const typename bindings::value_type< MatrixA >::type beta,
         MatrixC& c ) {
@@ -234,10 +238,10 @@
 // Overloaded function for hemm. Its overload differs for
 // * const MatrixC&
 //
-template< typename MatrixA, typename MatrixB, typename MatrixC >
+template< typename Side, typename MatrixA, typename MatrixB, typename MatrixC >
 inline typename hemm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-hemm( const char side, const typename bindings::value_type<
+hemm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, const MatrixB& b,
         const typename bindings::value_type< MatrixA >::type beta,
         const MatrixC& c ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/her2k.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,10 +64,11 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void her2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
- const float beta, std::complex<float>* c, const int ldc ) {
+inline void her2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb, const float beta,
+ std::complex<float>* c, const int ldc ) {
     cblas_cher2k( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, &alpha, a, lda, b, ldb, beta,
             c, ldc );
@@ -79,10 +80,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void her2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
- const double beta, std::complex<double>* c, const int ldc ) {
+inline void her2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb, const double beta,
+ std::complex<double>* c, const int ldc ) {
     cblas_zher2k( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, &alpha, a, lda, b, ldb, beta,
             c, ldc );
@@ -95,10 +97,11 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void her2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
- const float beta, std::complex<float>* c, const int ldc ) {
+inline void her2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb, const float beta,
+ std::complex<float>* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCher2k( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, b, ldb, beta, c, ldc );
@@ -110,10 +113,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void her2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
- const double beta, std::complex<double>* c, const int ldc ) {
+inline void her2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb, const double beta,
+ std::complex<double>* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -125,11 +129,12 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void her2k( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float> alpha,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float>* b, const fortran_int_t ldb,
- const float beta, std::complex<float>* c, const fortran_int_t ldc ) {
+inline void her2k( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float>* b,
+ const fortran_int_t ldb, const float beta, std::complex<float>* c,
+ const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CHER2K( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
@@ -141,11 +146,12 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void her2k( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double> alpha,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double>* b, const fortran_int_t ldb,
- const double beta, std::complex<double>* c, const fortran_int_t ldc ) {
+inline void her2k( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double>* b,
+ const fortran_int_t ldb, const double beta, std::complex<double>* c,
+ const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZHER2K( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/herk.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,9 +64,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void herk( Order, UpLo, Trans, const int n, const int k,
- const float alpha, const std::complex<float>* a, const int lda,
- const float beta, std::complex<float>* c, const int ldc ) {
+inline void herk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const float alpha,
+ const std::complex<float>* a, const int lda, const float beta,
+ std::complex<float>* c, const int ldc ) {
     cblas_cherk( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, alpha, a, lda, beta, c, ldc );
 }
@@ -77,9 +78,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void herk( Order, UpLo, Trans, const int n, const int k,
- const double alpha, const std::complex<double>* a, const int lda,
- const double beta, std::complex<double>* c, const int ldc ) {
+inline void herk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const double alpha,
+ const std::complex<double>* a, const int lda, const double beta,
+ std::complex<double>* c, const int ldc ) {
     cblas_zherk( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, alpha, a, lda, beta, c, ldc );
 }
@@ -91,9 +93,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void herk( Order, UpLo, Trans, const int n, const int k,
- const float alpha, const std::complex<float>* a, const int lda,
- const float beta, std::complex<float>* c, const int ldc ) {
+inline void herk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const float alpha,
+ const std::complex<float>* a, const int lda, const float beta,
+ std::complex<float>* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCherk( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, beta, c, ldc );
@@ -105,9 +108,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void herk( Order, UpLo, Trans, const int n, const int k,
- const double alpha, const std::complex<double>* a, const int lda,
- const double beta, std::complex<double>* c, const int ldc ) {
+inline void herk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const double alpha,
+ const std::complex<double>* a, const int lda, const double beta,
+ std::complex<double>* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -119,8 +123,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void herk( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const float alpha,
+inline void herk( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k, const float alpha,
         const std::complex<float>* a, const fortran_int_t lda,
         const float beta, std::complex<float>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -134,8 +138,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void herk( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const double alpha,
+inline void herk( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k, const double alpha,
         const std::complex<double>* a, const fortran_int_t lda,
         const double beta, std::complex<double>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/symm.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -62,10 +62,11 @@
 // * CBLAS backend, and
 // * float value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const float alpha, const float* a, const int lda, const float* b,
- const int ldb, const float beta, float* c, const int ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const float alpha, const float* a,
+ const int lda, const float* b, const int ldb, const float beta,
+ float* c, const int ldc ) {
     cblas_ssymm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, m, n, alpha, a, lda, b, ldb, beta, c,
             ldc );
@@ -76,10 +77,11 @@
 // * CBLAS backend, and
 // * double value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const double alpha, const double* a, const int lda, const double* b,
- const int ldb, const double beta, double* c, const int ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const double alpha, const double* a,
+ const int lda, const double* b, const int ldb, const double beta,
+ double* c, const int ldc ) {
     cblas_dsymm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, m, n, alpha, a, lda, b, ldb, beta, c,
             ldc );
@@ -90,10 +92,11 @@
 // * CBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     cblas_csymm( cblas_option< Order >::value, cblas_option< Side >::value,
@@ -106,10 +109,11 @@
 // * CBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     cblas_zsymm( cblas_option< Order >::value, cblas_option< Side >::value,
@@ -123,13 +127,14 @@
 // * CUBLAS backend, and
 // * float value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const float alpha, const float* a, const int lda, const float* b,
- const int ldb, const float beta, float* c, const int ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const float alpha, const float* a,
+ const int lda, const float* b, const int ldb, const float beta,
+ float* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasSsymm( side, blas_option< UpLo >::value, m, n, alpha, a, lda, b,
- ldb, beta, c, ldc );
+ cublasSsymm( blas_option< Side >::value, blas_option< UpLo >::value, m, n,
+ alpha, a, lda, b, ldb, beta, c, ldc );
 }
 
 //
@@ -137,13 +142,14 @@
 // * CUBLAS backend, and
 // * double value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const double alpha, const double* a, const int lda, const double* b,
- const int ldb, const double beta, double* c, const int ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const double alpha, const double* a,
+ const int lda, const double* b, const int ldb, const double beta,
+ double* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasDsymm( side, blas_option< UpLo >::value, m, n, alpha, a, lda, b,
- ldb, beta, c, ldc );
+ cublasDsymm( blas_option< Side >::value, blas_option< UpLo >::value, m, n,
+ alpha, a, lda, b, ldb, beta, c, ldc );
 }
 
 //
@@ -151,15 +157,16 @@
 // * CUBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasCsymm( side, blas_option< UpLo >::value, m, n, alpha, a, lda, b,
- ldb, beta, c, ldc );
+ cublasCsymm( blas_option< Side >::value, blas_option< UpLo >::value, m, n,
+ alpha, a, lda, b, ldb, beta, c, ldc );
 }
 
 //
@@ -167,10 +174,11 @@
 // * CUBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const int m, const int n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const int m, const int n, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -183,14 +191,15 @@
 // * netlib-compatible BLAS backend (the default), and
 // * float value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const fortran_int_t m,
- const fortran_int_t n, const float alpha, const float* a,
- const fortran_int_t lda, const float* b, const fortran_int_t ldb,
- const float beta, float* c, const fortran_int_t ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const fortran_int_t m, const fortran_int_t n, const float alpha,
+ const float* a, const fortran_int_t lda, const float* b,
+ const fortran_int_t ldb, const float beta, float* c,
+ const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_SSYMM( &side, &blas_option< UpLo >::value, &m, &n, &alpha, a, &lda,
- b, &ldb, &beta, c, &ldc );
+ BLAS_SSYMM( &blas_option< Side >::value, &blas_option< UpLo >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
 }
 
 //
@@ -198,14 +207,15 @@
 // * netlib-compatible BLAS backend (the default), and
 // * double value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const fortran_int_t m,
- const fortran_int_t n, const double alpha, const double* a,
- const fortran_int_t lda, const double* b, const fortran_int_t ldb,
- const double beta, double* c, const fortran_int_t ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const fortran_int_t m, const fortran_int_t n, const double alpha,
+ const double* a, const fortran_int_t lda, const double* b,
+ const fortran_int_t ldb, const double beta, double* c,
+ const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_DSYMM( &side, &blas_option< UpLo >::value, &m, &n, &alpha, a, &lda,
- b, &ldb, &beta, c, &ldc );
+ BLAS_DSYMM( &blas_option< Side >::value, &blas_option< UpLo >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
 }
 
 //
@@ -213,16 +223,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const fortran_int_t m,
- const fortran_int_t n, const std::complex<float> alpha,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float>* b, const fortran_int_t ldb,
- const std::complex<float> beta, std::complex<float>* c,
- const fortran_int_t ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const fortran_int_t m, const fortran_int_t n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float>* b,
+ const fortran_int_t ldb, const std::complex<float> beta,
+ std::complex<float>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_CSYMM( &side, &blas_option< UpLo >::value, &m, &n, &alpha, a, &lda,
- b, &ldb, &beta, c, &ldc );
+ BLAS_CSYMM( &blas_option< Side >::value, &blas_option< UpLo >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
 }
 
 //
@@ -230,16 +240,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo >
-inline void symm( Order, const char side, UpLo, const fortran_int_t m,
- const fortran_int_t n, const std::complex<double> alpha,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double>* b, const fortran_int_t ldb,
- const std::complex<double> beta, std::complex<double>* c,
- const fortran_int_t ldc ) {
+template< typename Order, typename Side, typename UpLo >
+inline void symm( const Order order, const Side side, const UpLo uplo,
+ const fortran_int_t m, const fortran_int_t n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double>* b,
+ const fortran_int_t ldb, const std::complex<double> beta,
+ std::complex<double>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_ZSYMM( &side, &blas_option< UpLo >::value, &m, &n, &alpha, a, &lda,
- b, &ldb, &beta, c, &ldc );
+ BLAS_ZSYMM( &blas_option< Side >::value, &blas_option< UpLo >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
 }
 
 #endif
@@ -262,8 +272,9 @@
     // * Deduces the required arguments for dispatching to BLAS, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename MatrixB, typename MatrixC >
- static return_type invoke( const char side, const value_type alpha,
+ template< typename Side, typename MatrixA, typename MatrixB,
+ typename MatrixC >
+ static return_type invoke( const Side side, const value_type alpha,
             const MatrixA& a, const MatrixB& b, const value_type beta,
             MatrixC& c ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -284,7 +295,6 @@
                 bindings::stride_minor(b) == 1 );
         BOOST_ASSERT( bindings::size_minor(c) == 1 ||
                 bindings::stride_minor(c) == 1 );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         detail::symm( order(), side, uplo(), bindings::size_row(c),
                 bindings::size_column(c), alpha, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(b),
@@ -305,10 +315,10 @@
 // Overloaded function for symm. Its overload differs for
 // * MatrixC&
 //
-template< typename MatrixA, typename MatrixB, typename MatrixC >
+template< typename Side, typename MatrixA, typename MatrixB, typename MatrixC >
 inline typename symm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-symm( const char side, const typename bindings::value_type<
+symm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, const MatrixB& b,
         const typename bindings::value_type< MatrixA >::type beta,
         MatrixC& c ) {
@@ -320,10 +330,10 @@
 // Overloaded function for symm. Its overload differs for
 // * const MatrixC&
 //
-template< typename MatrixA, typename MatrixB, typename MatrixC >
+template< typename Side, typename MatrixA, typename MatrixB, typename MatrixC >
 inline typename symm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-symm( const char side, const typename bindings::value_type<
+symm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, const MatrixB& b,
         const typename bindings::value_type< MatrixA >::type beta,
         const MatrixC& c ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syr2k.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,9 +64,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const float alpha, const float* a, const int lda, const float* b,
- const int ldb, const float beta, float* c, const int ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const float alpha, const float* a,
+ const int lda, const float* b, const int ldb, const float beta,
+ float* c, const int ldc ) {
     cblas_ssyr2k( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, alpha, a, lda, b, ldb, beta,
             c, ldc );
@@ -78,9 +79,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const double alpha, const double* a, const int lda, const double* b,
- const int ldb, const double beta, double* c, const int ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const double alpha, const double* a,
+ const int lda, const double* b, const int ldb, const double beta,
+ double* c, const int ldc ) {
     cblas_dsyr2k( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, alpha, a, lda, b, ldb, beta,
             c, ldc );
@@ -92,9 +94,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     cblas_csyr2k( cblas_option< Order >::value, cblas_option< UpLo >::value,
@@ -108,9 +111,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     cblas_zsyr2k( cblas_option< Order >::value, cblas_option< UpLo >::value,
@@ -125,9 +129,10 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const float alpha, const float* a, const int lda, const float* b,
- const int ldb, const float beta, float* c, const int ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const float alpha, const float* a,
+ const int lda, const float* b, const int ldb, const float beta,
+ float* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSsyr2k( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, b, ldb, beta, c, ldc );
@@ -139,9 +144,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const double alpha, const double* a, const int lda, const double* b,
- const int ldb, const double beta, double* c, const int ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const double alpha, const double* a,
+ const int lda, const double* b, const int ldb, const double beta,
+ double* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDsyr2k( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, b, ldb, beta, c, ldc );
@@ -153,9 +159,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float>* b, const int ldb,
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float>* b, const int ldb,
         const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -169,9 +176,10 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double>* b, const int ldb,
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double>* b, const int ldb,
         const std::complex<double> beta, std::complex<double>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -185,10 +193,11 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const float alpha, const float* a,
- const fortran_int_t lda, const float* b, const fortran_int_t ldb,
- const float beta, float* c, const fortran_int_t ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k, const float alpha,
+ const float* a, const fortran_int_t lda, const float* b,
+ const fortran_int_t ldb, const float beta, float* c,
+ const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSYR2K( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
@@ -200,10 +209,11 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const double alpha, const double* a,
- const fortran_int_t lda, const double* b, const fortran_int_t ldb,
- const double beta, double* c, const fortran_int_t ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k, const double alpha,
+ const double* a, const fortran_int_t lda, const double* b,
+ const fortran_int_t ldb, const double beta, double* c,
+ const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSYR2K( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
@@ -215,12 +225,12 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float> alpha,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float>* b, const fortran_int_t ldb,
- const std::complex<float> beta, std::complex<float>* c,
- const fortran_int_t ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float>* b,
+ const fortran_int_t ldb, const std::complex<float> beta,
+ std::complex<float>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CSYR2K( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );
@@ -232,12 +242,12 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syr2k( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double> alpha,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double>* b, const fortran_int_t ldb,
- const std::complex<double> beta, std::complex<double>* c,
- const fortran_int_t ldc ) {
+inline void syr2k( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double>* b,
+ const fortran_int_t ldb, const std::complex<double> beta,
+ std::complex<double>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZSYR2K( &blas_option< UpLo >::value, &blas_option< Trans >::value,
             &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/syrk.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,9 +64,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const float alpha, const float* a, const int lda, const float beta,
- float* c, const int ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const float alpha, const float* a,
+ const int lda, const float beta, float* c, const int ldc ) {
     cblas_ssyrk( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, alpha, a, lda, beta, c, ldc );
 }
@@ -77,9 +77,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const double alpha, const double* a, const int lda, const double beta,
- double* c, const int ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const double alpha, const double* a,
+ const int lda, const double beta, double* c, const int ldc ) {
     cblas_dsyrk( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, alpha, a, lda, beta, c, ldc );
 }
@@ -90,9 +90,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float> beta, std::complex<float>* c,
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     cblas_csyrk( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, &alpha, a, lda, &beta, c,
@@ -105,10 +106,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double> beta,
- std::complex<double>* c, const int ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double> beta, std::complex<double>* c,
+ const int ldc ) {
     cblas_zsyrk( cblas_option< Order >::value, cblas_option< UpLo >::value,
             cblas_option< Trans >::value, n, k, &alpha, a, lda, &beta, c,
             ldc );
@@ -121,9 +123,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const float alpha, const float* a, const int lda, const float beta,
- float* c, const int ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const float alpha, const float* a,
+ const int lda, const float beta, float* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasSsyrk( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, beta, c, ldc );
@@ -135,9 +137,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const double alpha, const double* a, const int lda, const double beta,
- double* c, const int ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const double alpha, const double* a,
+ const int lda, const double beta, double* c, const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasDsyrk( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, beta, c, ldc );
@@ -149,9 +151,10 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const std::complex<float> alpha, const std::complex<float>* a,
- const int lda, const std::complex<float> beta, std::complex<float>* c,
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<float> alpha,
+ const std::complex<float>* a, const int lda,
+ const std::complex<float> beta, std::complex<float>* c,
         const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasCsyrk( blas_option< UpLo >::value, blas_option< Trans >::value, n,
@@ -164,10 +167,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const int n, const int k,
- const std::complex<double> alpha, const std::complex<double>* a,
- const int lda, const std::complex<double> beta,
- std::complex<double>* c, const int ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const int n, const int k, const std::complex<double> alpha,
+ const std::complex<double>* a, const int lda,
+ const std::complex<double> beta, std::complex<double>* c,
+ const int ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     cublasZsyrk( blas_option< UpLo >::value, blas_option< Trans >::value, n,
             k, alpha, a, lda, beta, c, ldc );
@@ -180,9 +184,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const float alpha, const float* a,
- const fortran_int_t lda, const float beta, float* c,
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k, const float alpha,
+ const float* a, const fortran_int_t lda, const float beta, float* c,
         const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_SSYRK( &blas_option< UpLo >::value, &blas_option< Trans >::value, &n,
@@ -195,10 +199,10 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const double alpha, const double* a,
- const fortran_int_t lda, const double beta, double* c,
- const fortran_int_t ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k, const double alpha,
+ const double* a, const fortran_int_t lda, const double beta,
+ double* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_DSYRK( &blas_option< UpLo >::value, &blas_option< Trans >::value, &n,
             &k, &alpha, a, &lda, &beta, c, &ldc );
@@ -210,11 +214,11 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float> alpha,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float> beta, std::complex<float>* c,
- const fortran_int_t ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float> beta,
+ std::complex<float>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_CSYRK( &blas_option< UpLo >::value, &blas_option< Trans >::value, &n,
             &k, &alpha, a, &lda, &beta, c, &ldc );
@@ -226,11 +230,11 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Trans >
-inline void syrk( Order, UpLo, Trans, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double> alpha,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double> beta, std::complex<double>* c,
- const fortran_int_t ldc ) {
+inline void syrk( const Order order, const UpLo uplo, const Trans trans,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double> beta,
+ std::complex<double>* c, const fortran_int_t ldc ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     BLAS_ZSYRK( &blas_option< UpLo >::value, &blas_option< Trans >::value, &n,
             &k, &alpha, a, &lda, &beta, c, &ldc );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trmm.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,10 +64,12 @@
 // * CBLAS backend, and
 // * float value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const float alpha, const float* a, const int lda,
- float* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const float alpha, const float* a, const int lda, float* b,
+ const int ldb ) {
     cblas_strmm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, alpha, a, lda, b, ldb );
@@ -78,10 +80,12 @@
 // * CBLAS backend, and
 // * double value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const double alpha, const double* a, const int lda,
- double* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const double alpha, const double* a, const int lda, double* b,
+ const int ldb ) {
     cblas_dtrmm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, alpha, a, lda, b, ldb );
@@ -92,11 +96,12 @@
 // * CBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda, std::complex<float>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, std::complex<float>* b, const int ldb ) {
     cblas_ctrmm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, &alpha, a, lda, b, ldb );
@@ -107,11 +112,12 @@
 // * CBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda, std::complex<double>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, std::complex<double>* b, const int ldb ) {
     cblas_ztrmm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, &alpha, a, lda, b, ldb );
@@ -123,14 +129,16 @@
 // * CUBLAS backend, and
 // * float value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const float alpha, const float* a, const int lda,
- float* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const float alpha, const float* a, const int lda, float* b,
+ const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasStrmm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasStrmm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 //
@@ -138,14 +146,16 @@
 // * CUBLAS backend, and
 // * double value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const double alpha, const double* a, const int lda,
- double* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const double alpha, const double* a, const int lda, double* b,
+ const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasDtrmm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasDtrmm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 //
@@ -153,15 +163,16 @@
 // * CUBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda, std::complex<float>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, std::complex<float>* b, const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasCtrmm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasCtrmm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 //
@@ -169,11 +180,12 @@
 // * CUBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda, std::complex<double>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, std::complex<double>* b, const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     // NOT FOUND();
 }
@@ -184,15 +196,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * float value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n, const float alpha,
- const float* a, const fortran_int_t lda, float* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const float alpha, const float* a,
+ const fortran_int_t lda, float* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_STRMM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_STRMM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 //
@@ -200,15 +213,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * double value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n, const double alpha,
- const double* a, const fortran_int_t lda, double* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const double alpha, const double* a,
+ const fortran_int_t lda, double* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_DTRMM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_DTRMM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 //
@@ -216,16 +230,17 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<float> alpha,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_CTRMM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_CTRMM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 //
@@ -233,16 +248,17 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trmm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trmm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<double> alpha,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_ZTRMM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_ZTRMM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 #endif
@@ -265,13 +281,13 @@
     // * Deduces the required arguments for dispatching to BLAS, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename MatrixB >
- static return_type invoke( const char side, const value_type alpha,
+ template< typename Side, typename MatrixA, typename MatrixB >
+ static return_type invoke( const Side side, const value_type alpha,
             const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixB >::type order;
         typedef typename result_of::trans_tag< MatrixA, order >::type transa;
- typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA, transa >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const<
                 typename bindings::value_type< MatrixA >::type >::type,
@@ -282,7 +298,6 @@
                 bindings::stride_minor(a) == 1 );
         BOOST_ASSERT( bindings::size_minor(b) == 1 ||
                 bindings::stride_minor(b) == 1 );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         detail::trmm( order(), side, uplo(), transa(), diag(),
                 bindings::size_row(b), bindings::size_column(b), alpha,
                 bindings::begin_value(a), bindings::stride_major(a),
@@ -302,10 +317,10 @@
 // Overloaded function for trmm. Its overload differs for
 // * MatrixB&
 //
-template< typename MatrixA, typename MatrixB >
+template< typename Side, typename MatrixA, typename MatrixB >
 inline typename trmm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-trmm( const char side, const typename bindings::value_type<
+trmm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, MatrixB& b ) {
     trmm_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, alpha, a, b );
@@ -315,10 +330,10 @@
 // Overloaded function for trmm. Its overload differs for
 // * const MatrixB&
 //
-template< typename MatrixA, typename MatrixB >
+template< typename Side, typename MatrixA, typename MatrixB >
 inline typename trmm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-trmm( const char side, const typename bindings::value_type<
+trmm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, const MatrixB& b ) {
     trmm_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, alpha, a, b );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/level3/trsm.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -64,10 +64,12 @@
 // * CBLAS backend, and
 // * float value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const float alpha, const float* a, const int lda,
- float* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const float alpha, const float* a, const int lda, float* b,
+ const int ldb ) {
     cblas_strsm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, alpha, a, lda, b, ldb );
@@ -78,10 +80,12 @@
 // * CBLAS backend, and
 // * double value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const double alpha, const double* a, const int lda,
- double* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const double alpha, const double* a, const int lda, double* b,
+ const int ldb ) {
     cblas_dtrsm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, alpha, a, lda, b, ldb );
@@ -92,11 +96,12 @@
 // * CBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda, std::complex<float>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, std::complex<float>* b, const int ldb ) {
     cblas_ctrsm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, &alpha, a, lda, b, ldb );
@@ -107,11 +112,12 @@
 // * CBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda, std::complex<double>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, std::complex<double>* b, const int ldb ) {
     cblas_ztrsm( cblas_option< Order >::value, cblas_option< Side >::value,
             cblas_option< UpLo >::value, cblas_option< TransA >::value,
             cblas_option< Diag >::value, m, n, &alpha, a, lda, b, ldb );
@@ -123,14 +129,16 @@
 // * CUBLAS backend, and
 // * float value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const float alpha, const float* a, const int lda,
- float* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const float alpha, const float* a, const int lda, float* b,
+ const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasStrsm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasStrsm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 //
@@ -138,14 +146,16 @@
 // * CUBLAS backend, and
 // * double value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const double alpha, const double* a, const int lda,
- double* b, const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const double alpha, const double* a, const int lda, double* b,
+ const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasDtrsm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasDtrsm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 //
@@ -153,15 +163,16 @@
 // * CUBLAS backend, and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<float> alpha,
- const std::complex<float>* a, const int lda, std::complex<float>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<float> alpha, const std::complex<float>* a,
+ const int lda, std::complex<float>* b, const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasCtrsm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasCtrsm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 //
@@ -169,15 +180,16 @@
 // * CUBLAS backend, and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag, const int m,
- const int n, const std::complex<double> alpha,
- const std::complex<double>* a, const int lda, std::complex<double>* b,
- const int ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const int m, const int n,
+ const std::complex<double> alpha, const std::complex<double>* a,
+ const int lda, std::complex<double>* b, const int ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- cublasZtrsm( side, blas_option< UpLo >::value, blas_option<
- TransA >::value, blas_option< Diag >::value, m, n, alpha, a, lda,
- b, ldb );
+ cublasZtrsm( blas_option< Side >::value, blas_option< UpLo >::value,
+ blas_option< TransA >::value, blas_option< Diag >::value, m, n,
+ alpha, a, lda, b, ldb );
 }
 
 #else
@@ -186,15 +198,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * float value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n, const float alpha,
- const float* a, const fortran_int_t lda, float* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const float alpha, const float* a,
+ const fortran_int_t lda, float* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_STRSM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_STRSM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 //
@@ -202,15 +215,16 @@
 // * netlib-compatible BLAS backend (the default), and
 // * double value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n, const double alpha,
- const double* a, const fortran_int_t lda, double* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const double alpha, const double* a,
+ const fortran_int_t lda, double* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_DTRSM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_DTRSM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 //
@@ -218,16 +232,17 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n,
- const std::complex<float> alpha, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<float> alpha,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_CTRSM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_CTRSM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 //
@@ -235,16 +250,17 @@
 // * netlib-compatible BLAS backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Order, typename UpLo, typename TransA, typename Diag >
-inline void trsm( Order, const char side, UpLo, TransA, Diag,
- const fortran_int_t m, const fortran_int_t n,
- const std::complex<double> alpha, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* b,
- const fortran_int_t ldb ) {
+template< typename Order, typename Side, typename UpLo, typename TransA,
+ typename Diag >
+inline void trsm( const Order order, const Side side, const UpLo uplo,
+ const TransA transa, const Diag diag, const fortran_int_t m,
+ const fortran_int_t n, const std::complex<double> alpha,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
- BLAS_ZTRSM( &side, &blas_option< UpLo >::value, &blas_option<
- TransA >::value, &blas_option< Diag >::value, &m, &n, &alpha, a,
- &lda, b, &ldb );
+ BLAS_ZTRSM( &blas_option< Side >::value, &blas_option< UpLo >::value,
+ &blas_option< TransA >::value, &blas_option< Diag >::value, &m,
+ &n, &alpha, a, &lda, b, &ldb );
 }
 
 #endif
@@ -267,13 +283,13 @@
     // * Deduces the required arguments for dispatching to BLAS, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename MatrixB >
- static return_type invoke( const char side, const value_type alpha,
+ template< typename Side, typename MatrixA, typename MatrixB >
+ static return_type invoke( const Side side, const value_type alpha,
             const MatrixA& a, MatrixB& b ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::data_order< MatrixB >::type order;
         typedef typename result_of::trans_tag< MatrixA, order >::type transa;
- typedef typename result_of::uplo_tag< MatrixA, trans >::type uplo;
+ typedef typename result_of::uplo_tag< MatrixA, transa >::type uplo;
         typedef typename result_of::diag_tag< MatrixA >::type diag;
         BOOST_STATIC_ASSERT( (is_same< typename remove_const<
                 typename bindings::value_type< MatrixA >::type >::type,
@@ -284,7 +300,6 @@
                 bindings::stride_minor(a) == 1 );
         BOOST_ASSERT( bindings::size_minor(b) == 1 ||
                 bindings::stride_minor(b) == 1 );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         detail::trsm( order(), side, uplo(), transa(), diag(),
                 bindings::size_row(b), bindings::size_column(b), alpha,
                 bindings::begin_value(a), bindings::stride_major(a),
@@ -304,10 +319,10 @@
 // Overloaded function for trsm. Its overload differs for
 // * MatrixB&
 //
-template< typename MatrixA, typename MatrixB >
+template< typename Side, typename MatrixA, typename MatrixB >
 inline typename trsm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-trsm( const char side, const typename bindings::value_type<
+trsm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, MatrixB& b ) {
     trsm_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, alpha, a, b );
@@ -317,10 +332,10 @@
 // Overloaded function for trsm. Its overload differs for
 // * const MatrixB&
 //
-template< typename MatrixA, typename MatrixB >
+template< typename Side, typename MatrixA, typename MatrixB >
 inline typename trsm_impl< typename bindings::value_type<
         MatrixA >::type >::return_type
-trsm( const char side, const typename bindings::value_type<
+trsm( const Side side, const typename bindings::value_type<
         MatrixA >::type alpha, const MatrixA& a, const MatrixB& b ) {
     trsm_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, alpha, a, b );

Added: sandbox/numeric_bindings/boost/numeric/bindings/detail/if_left.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/boost/numeric/bindings/detail/if_left.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -0,0 +1,52 @@
+//
+// Copyright (c) 2009 Rutger ter Borg
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_NUMERIC_BINDINGS_DETAIL_IF_LEFT_HPP
+#define BOOST_NUMERIC_BINDINGS_DETAIL_IF_LEFT_HPP
+
+#include <boost/numeric/bindings/tag.hpp>
+
+namespace boost {
+namespace numeric {
+namespace bindings {
+namespace detail {
+
+template< typename Side, typename Left, typename Right >
+struct if_left_impl {
+ typedef Right result_type;
+
+ static result_type invoke( Left left, Right right ) {
+ return right;
+ }
+
+};
+
+template< typename Left, typename Right >
+struct if_left_impl< tag::left, Left, Right > {
+
+ typedef Left result_type;
+
+ static result_type invoke( Left left, Right right ) {
+ return left;
+ }
+
+};
+
+// by-value
+template< typename Side, typename Left, typename Right >
+typename if_left_impl< Side, const Left, const Right >::result_type
+if_left( const Side side, const Left left, const Right right ) {
+ return if_left_impl< Side, const Left, const Right >::invoke( left, right );
+}
+
+} // namespace detail
+} // namespace bindings
+} // namespace numeric
+} // namespace boost
+
+#endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/langb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/langb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/langb.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -171,8 +171,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lange.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lange.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lange.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -166,8 +166,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhb.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lanhb( const char norm, UpLo, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float>* ab,
- const fortran_int_t ldab, float* work ) {
+inline std::ptrdiff_t lanhb( const char norm, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float>* ab, const fortran_int_t ldab,
+ float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANHB( &norm, &lapack_option< UpLo >::value, &n, &k, ab, &ldab,
             work );
@@ -67,9 +68,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lanhb( const char norm, UpLo, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double>* ab,
- const fortran_int_t ldab, double* work ) {
+inline std::ptrdiff_t lanhb( const char norm, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double>* ab, const fortran_int_t ldab,
+ double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANHB( &norm, &lapack_option< UpLo >::value, &n, &k, ab, &ldab,
             work );
@@ -149,8 +151,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhe.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,8 +51,9 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lanhe( const char norm, UpLo, const fortran_int_t n,
- const std::complex<float>* a, const fortran_int_t lda, float* work ) {
+inline std::ptrdiff_t lanhe( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<float>* a,
+ const fortran_int_t lda, float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANHE( &norm, &lapack_option< UpLo >::value, &n, a, &lda, work );
     return info;
@@ -64,9 +65,9 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lanhe( const char norm, UpLo, const fortran_int_t n,
- const std::complex<double>* a, const fortran_int_t lda,
- double* work ) {
+inline std::ptrdiff_t lanhe( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<double>* a,
+ const fortran_int_t lda, double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANHE( &norm, &lapack_option< UpLo >::value, &n, a, &lda, work );
     return info;
@@ -143,8 +144,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhp.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,8 +51,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lanhp( const char norm, UpLo, const fortran_int_t n,
- const std::complex<float>* ap, float* work ) {
+inline std::ptrdiff_t lanhp( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<float>* ap, float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANHP( &norm, &lapack_option< UpLo >::value, &n, ap, work );
     return info;
@@ -64,8 +64,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lanhp( const char norm, UpLo, const fortran_int_t n,
- const std::complex<double>* ap, double* work ) {
+inline std::ptrdiff_t lanhp( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<double>* ap, double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANHP( &norm, &lapack_option< UpLo >::value, &n, ap, work );
     return info;
@@ -138,8 +138,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lanhs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -161,8 +161,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansb.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansb( const char norm, UpLo, const fortran_int_t n,
- const fortran_int_t k, const float* ab, const fortran_int_t ldab,
- float* work ) {
+inline std::ptrdiff_t lansb( const char norm, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t k, const float* ab,
+ const fortran_int_t ldab, float* work ) {
     fortran_int_t info(0);
     LAPACK_SLANSB( &norm, &lapack_option< UpLo >::value, &n, &k, ab, &ldab,
             work );
@@ -67,9 +67,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansb( const char norm, UpLo, const fortran_int_t n,
- const fortran_int_t k, const double* ab, const fortran_int_t ldab,
- double* work ) {
+inline std::ptrdiff_t lansb( const char norm, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t k, const double* ab,
+ const fortran_int_t ldab, double* work ) {
     fortran_int_t info(0);
     LAPACK_DLANSB( &norm, &lapack_option< UpLo >::value, &n, &k, ab, &ldab,
             work );
@@ -82,9 +82,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansb( const char norm, UpLo, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float>* ab,
- const fortran_int_t ldab, float* work ) {
+inline std::ptrdiff_t lansb( const char norm, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float>* ab, const fortran_int_t ldab,
+ float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANSB( &norm, &lapack_option< UpLo >::value, &n, &k, ab, &ldab,
             work );
@@ -97,9 +98,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansb( const char norm, UpLo, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double>* ab,
- const fortran_int_t ldab, double* work ) {
+inline std::ptrdiff_t lansb( const char norm, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double>* ab, const fortran_int_t ldab,
+ double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANSB( &norm, &lapack_option< UpLo >::value, &n, &k, ab, &ldab,
             work );
@@ -179,8 +181,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansp.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,8 +51,8 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansp( const char norm, UpLo, const fortran_int_t n,
- const float* ap, float* work ) {
+inline std::ptrdiff_t lansp( const char norm, const UpLo uplo,
+ const fortran_int_t n, const float* ap, float* work ) {
     fortran_int_t info(0);
     LAPACK_SLANSP( &norm, &lapack_option< UpLo >::value, &n, ap, work );
     return info;
@@ -64,8 +64,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansp( const char norm, UpLo, const fortran_int_t n,
- const double* ap, double* work ) {
+inline std::ptrdiff_t lansp( const char norm, const UpLo uplo,
+ const fortran_int_t n, const double* ap, double* work ) {
     fortran_int_t info(0);
     LAPACK_DLANSP( &norm, &lapack_option< UpLo >::value, &n, ap, work );
     return info;
@@ -77,8 +77,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansp( const char norm, UpLo, const fortran_int_t n,
- const std::complex<float>* ap, float* work ) {
+inline std::ptrdiff_t lansp( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<float>* ap, float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANSP( &norm, &lapack_option< UpLo >::value, &n, ap, work );
     return info;
@@ -90,8 +90,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansp( const char norm, UpLo, const fortran_int_t n,
- const std::complex<double>* ap, double* work ) {
+inline std::ptrdiff_t lansp( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<double>* ap, double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANSP( &norm, &lapack_option< UpLo >::value, &n, ap, work );
     return info;
@@ -164,8 +164,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lansy.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,8 +51,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansy( const char norm, UpLo, const fortran_int_t n,
- const float* a, const fortran_int_t lda, float* work ) {
+inline std::ptrdiff_t lansy( const char norm, const UpLo uplo,
+ const fortran_int_t n, const float* a, const fortran_int_t lda,
+ float* work ) {
     fortran_int_t info(0);
     LAPACK_SLANSY( &norm, &lapack_option< UpLo >::value, &n, a, &lda, work );
     return info;
@@ -64,8 +65,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansy( const char norm, UpLo, const fortran_int_t n,
- const double* a, const fortran_int_t lda, double* work ) {
+inline std::ptrdiff_t lansy( const char norm, const UpLo uplo,
+ const fortran_int_t n, const double* a, const fortran_int_t lda,
+ double* work ) {
     fortran_int_t info(0);
     LAPACK_DLANSY( &norm, &lapack_option< UpLo >::value, &n, a, &lda, work );
     return info;
@@ -77,8 +79,9 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansy( const char norm, UpLo, const fortran_int_t n,
- const std::complex<float>* a, const fortran_int_t lda, float* work ) {
+inline std::ptrdiff_t lansy( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<float>* a,
+ const fortran_int_t lda, float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANSY( &norm, &lapack_option< UpLo >::value, &n, a, &lda, work );
     return info;
@@ -90,9 +93,9 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t lansy( const char norm, UpLo, const fortran_int_t n,
- const std::complex<double>* a, const fortran_int_t lda,
- double* work ) {
+inline std::ptrdiff_t lansy( const char norm, const UpLo uplo,
+ const fortran_int_t n, const std::complex<double>* a,
+ const fortran_int_t lda, double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANSY( &norm, &lapack_option< UpLo >::value, &n, a, &lda, work );
     return info;
@@ -169,8 +172,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantb.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,7 +53,7 @@
 // * float value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantb( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantb( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t k, const float* ab,
         const fortran_int_t ldab, float* work ) {
     fortran_int_t info(0);
@@ -68,7 +68,7 @@
 // * double value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantb( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantb( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t k, const double* ab,
         const fortran_int_t ldab, double* work ) {
     fortran_int_t info(0);
@@ -83,7 +83,7 @@
 // * complex<float> value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantb( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantb( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t k,
         const std::complex<float>* ab, const fortran_int_t ldab,
         float* work ) {
@@ -99,7 +99,7 @@
 // * complex<double> value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantb( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantb( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t k,
         const std::complex<double>* ab, const fortran_int_t ldab,
         double* work ) {
@@ -183,8 +183,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantp.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * float value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantp( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantp( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const float* ap, float* work ) {
     fortran_int_t info(0);
     LAPACK_SLANTP( &norm, &uplo, &lapack_option< Diag >::value, &n, ap, work );
@@ -65,7 +65,7 @@
 // * double value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantp( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantp( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const double* ap, double* work ) {
     fortran_int_t info(0);
     LAPACK_DLANTP( &norm, &uplo, &lapack_option< Diag >::value, &n, ap, work );
@@ -78,7 +78,7 @@
 // * complex<float> value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantp( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantp( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const std::complex<float>* ap, float* work ) {
     fortran_int_t info(0);
     LAPACK_CLANTP( &norm, &uplo, &lapack_option< Diag >::value, &n, ap, work );
@@ -91,7 +91,7 @@
 // * complex<double> value-type.
 //
 template< typename Diag >
-inline std::ptrdiff_t lantp( const char norm, const char uplo, Diag,
+inline std::ptrdiff_t lantp( const char norm, const char uplo, const Diag diag,
         const fortran_int_t n, const std::complex<double>* ap, double* work ) {
     fortran_int_t info(0);
     LAPACK_ZLANTP( &norm, &uplo, &lapack_option< Diag >::value, &n, ap, work );
@@ -165,8 +165,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/lantr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * float value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t lantr( const char norm, UpLo, Diag,
+inline std::ptrdiff_t lantr( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t m, const fortran_int_t n, const float* a,
         const fortran_int_t lda, float* work ) {
     fortran_int_t info(0);
@@ -67,7 +67,7 @@
 // * double value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t lantr( const char norm, UpLo, Diag,
+inline std::ptrdiff_t lantr( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t m, const fortran_int_t n, const double* a,
         const fortran_int_t lda, double* work ) {
     fortran_int_t info(0);
@@ -82,7 +82,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t lantr( const char norm, UpLo, Diag,
+inline std::ptrdiff_t lantr( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t m, const fortran_int_t n,
         const std::complex<float>* a, const fortran_int_t lda, float* work ) {
     fortran_int_t info(0);
@@ -97,7 +97,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t lantr( const char norm, UpLo, Diag,
+inline std::ptrdiff_t lantr( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t m, const fortran_int_t n,
         const std::complex<double>* a, const fortran_int_t lda,
         double* work ) {
@@ -183,8 +183,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,11 +52,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t larf( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larf( const Side side, const fortran_int_t m,
         const fortran_int_t n, const float* v, const fortran_int_t incv,
         const float tau, float* c, const fortran_int_t ldc, float* work ) {
     fortran_int_t info(0);
- LAPACK_SLARF( &side, &m, &n, v, &incv, &tau, c, &ldc, work );
+ LAPACK_SLARF( &lapack_option< Side >::value, &m, &n, v, &incv, &tau, c,
+ &ldc, work );
     return info;
 }
 
@@ -65,11 +67,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t larf( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larf( const Side side, const fortran_int_t m,
         const fortran_int_t n, const double* v, const fortran_int_t incv,
         const double tau, double* c, const fortran_int_t ldc, double* work ) {
     fortran_int_t info(0);
- LAPACK_DLARF( &side, &m, &n, v, &incv, &tau, c, &ldc, work );
+ LAPACK_DLARF( &lapack_option< Side >::value, &m, &n, v, &incv, &tau, c,
+ &ldc, work );
     return info;
 }
 
@@ -78,13 +82,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t larf( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larf( const Side side, const fortran_int_t m,
         const fortran_int_t n, const std::complex<float>* v,
         const fortran_int_t incv, const std::complex<float> tau,
         std::complex<float>* c, const fortran_int_t ldc,
         std::complex<float>* work ) {
     fortran_int_t info(0);
- LAPACK_CLARF( &side, &m, &n, v, &incv, &tau, c, &ldc, work );
+ LAPACK_CLARF( &lapack_option< Side >::value, &m, &n, v, &incv, &tau, c,
+ &ldc, work );
     return info;
 }
 
@@ -93,13 +99,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t larf( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larf( const Side side, const fortran_int_t m,
         const fortran_int_t n, const std::complex<double>* v,
         const fortran_int_t incv, const std::complex<double> tau,
         std::complex<double>* c, const fortran_int_t ldc,
         std::complex<double>* work ) {
     fortran_int_t info(0);
- LAPACK_ZLARF( &side, &m, &n, v, &incv, &tau, c, &ldc, work );
+ LAPACK_ZLARF( &lapack_option< Side >::value, &m, &n, v, &incv, &tau, c,
+ &ldc, work );
     return info;
 }
 
@@ -127,8 +135,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorV, typename MatrixC, typename WORK >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const real_type tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -144,7 +153,6 @@
                 bindings::stride_minor(c) == 1 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::larf( side, bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(v),
                 bindings::stride(v), tau, bindings::begin_value(c),
@@ -159,8 +167,8 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const real_type tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         bindings::detail::array< real_type > tmp_work( min_size_work( side,
@@ -175,8 +183,8 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const real_type tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         return invoke( side, v, tau, c, minimal_workspace() );
@@ -186,7 +194,8 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t n, const std::ptrdiff_t m ) {
         return ( side == 'L' ? n : m );
     }
@@ -207,8 +216,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorV, typename MatrixC, typename WORK >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const value_type tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -224,7 +234,6 @@
                 bindings::stride_minor(c) == 1 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::larf( side, bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(v),
                 bindings::stride(v), tau, bindings::begin_value(c),
@@ -239,8 +248,8 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const value_type tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         bindings::detail::array< value_type > tmp_work( min_size_work( side,
@@ -255,8 +264,8 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const value_type tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         return invoke( side, v, tau, c, minimal_workspace() );
@@ -266,7 +275,8 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t n, const std::ptrdiff_t m ) {
         return ( side == 'L' ? n : m );
     }
@@ -287,10 +297,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, MatrixC& c, Workspace work ) {
     return larf_impl< typename bindings::value_type<
@@ -302,10 +313,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, MatrixC& c ) {
     return larf_impl< typename bindings::value_type<
@@ -317,10 +328,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, const MatrixC& c, Workspace work ) {
     return larf_impl< typename bindings::value_type<
@@ -332,10 +344,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, const MatrixC& c ) {
     return larf_impl< typename bindings::value_type<
@@ -346,10 +358,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau, MatrixC& c,
         Workspace work ) {
     return larf_impl< typename bindings::value_type<
@@ -361,10 +374,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         MatrixC& c ) {
     return larf_impl< typename bindings::value_type<
@@ -376,10 +389,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         const MatrixC& c, Workspace work ) {
     return larf_impl< typename bindings::value_type<
@@ -391,10 +405,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larf( const char side, const VectorV& v,
+larf( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         const MatrixC& c ) {
     return larf_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfb.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfb.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfb.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,15 +53,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t larfb( const char side, Trans, const char direct,
- const char storev, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t k, const float* v, const fortran_int_t ldv,
- const float* t, const fortran_int_t ldt, float* c,
- const fortran_int_t ldc, float* work, const fortran_int_t ldwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t larfb( const Side side, const Trans trans,
+ const char direct, const char storev, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t k, const float* v,
+ const fortran_int_t ldv, const float* t, const fortran_int_t ldt,
+ float* c, const fortran_int_t ldc, float* work,
+ const fortran_int_t ldwork ) {
     fortran_int_t info(0);
- LAPACK_SLARFB( &side, &lapack_option< Trans >::value, &direct, &storev,
- &m, &n, &k, v, &ldv, t, &ldt, c, &ldc, work, &ldwork );
+ LAPACK_SLARFB( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &direct, &storev, &m, &n, &k, v, &ldv, t, &ldt, c,
+ &ldc, work, &ldwork );
     return info;
 }
 
@@ -70,15 +72,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t larfb( const char side, Trans, const char direct,
- const char storev, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t k, const double* v, const fortran_int_t ldv,
- const double* t, const fortran_int_t ldt, double* c,
- const fortran_int_t ldc, double* work, const fortran_int_t ldwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t larfb( const Side side, const Trans trans,
+ const char direct, const char storev, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t k, const double* v,
+ const fortran_int_t ldv, const double* t, const fortran_int_t ldt,
+ double* c, const fortran_int_t ldc, double* work,
+ const fortran_int_t ldwork ) {
     fortran_int_t info(0);
- LAPACK_DLARFB( &side, &lapack_option< Trans >::value, &direct, &storev,
- &m, &n, &k, v, &ldv, t, &ldt, c, &ldc, work, &ldwork );
+ LAPACK_DLARFB( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &direct, &storev, &m, &n, &k, v, &ldv, t, &ldt, c,
+ &ldc, work, &ldwork );
     return info;
 }
 
@@ -87,17 +91,18 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t larfb( const char side, Trans, const char direct,
- const char storev, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t k, const std::complex<float>* v,
- const fortran_int_t ldv, const std::complex<float>* t,
- const fortran_int_t ldt, std::complex<float>* c,
- const fortran_int_t ldc, std::complex<float>* work,
- const fortran_int_t ldwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t larfb( const Side side, const Trans trans,
+ const char direct, const char storev, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<float>* v, const fortran_int_t ldv,
+ const std::complex<float>* t, const fortran_int_t ldt,
+ std::complex<float>* c, const fortran_int_t ldc,
+ std::complex<float>* work, const fortran_int_t ldwork ) {
     fortran_int_t info(0);
- LAPACK_CLARFB( &side, &lapack_option< Trans >::value, &direct, &storev,
- &m, &n, &k, v, &ldv, t, &ldt, c, &ldc, work, &ldwork );
+ LAPACK_CLARFB( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &direct, &storev, &m, &n, &k, v, &ldv, t, &ldt, c,
+ &ldc, work, &ldwork );
     return info;
 }
 
@@ -106,17 +111,18 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t larfb( const char side, Trans, const char direct,
- const char storev, const fortran_int_t m, const fortran_int_t n,
- const fortran_int_t k, const std::complex<double>* v,
- const fortran_int_t ldv, const std::complex<double>* t,
- const fortran_int_t ldt, std::complex<double>* c,
- const fortran_int_t ldc, std::complex<double>* work,
- const fortran_int_t ldwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t larfb( const Side side, const Trans trans,
+ const char direct, const char storev, const fortran_int_t m,
+ const fortran_int_t n, const fortran_int_t k,
+ const std::complex<double>* v, const fortran_int_t ldv,
+ const std::complex<double>* t, const fortran_int_t ldt,
+ std::complex<double>* c, const fortran_int_t ldc,
+ std::complex<double>* work, const fortran_int_t ldwork ) {
     fortran_int_t info(0);
- LAPACK_ZLARFB( &side, &lapack_option< Trans >::value, &direct, &storev,
- &m, &n, &k, v, &ldv, t, &ldt, c, &ldc, work, &ldwork );
+ LAPACK_ZLARFB( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &direct, &storev, &m, &n, &k, v, &ldv, t, &ldt, c,
+ &ldc, work, &ldwork );
     return info;
 }
 
@@ -144,9 +150,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixV, typename MatrixT, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const char direct,
+ template< typename Side, typename MatrixV, typename MatrixT,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char direct,
             const char storev, const MatrixV& v, const MatrixT& t, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -171,7 +177,6 @@
                 bindings::size_row(c)) );
         BOOST_ASSERT( bindings::stride_major(t) >= bindings::size_column(t) );
         BOOST_ASSERT( direct == 'F' || direct == 'B' );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         BOOST_ASSERT( storev == 'C' || storev == 'R' );
         return detail::larfb( side, trans(), direct, storev,
                 bindings::size_row(c), bindings::size_column(c),
@@ -189,8 +194,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixV, typename MatrixT, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char direct,
+ template< typename Side, typename MatrixV, typename MatrixT,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char direct,
             const char storev, const MatrixV& v, const MatrixT& t, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -206,8 +212,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixV, typename MatrixT, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char direct,
+ template< typename Side, typename MatrixV, typename MatrixT,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char direct,
             const char storev, const MatrixV& v, const MatrixT& t, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -218,8 +225,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -238,9 +246,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixV, typename MatrixT, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const char direct,
+ template< typename Side, typename MatrixV, typename MatrixT,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char direct,
             const char storev, const MatrixV& v, const MatrixT& t, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -265,7 +273,6 @@
                 bindings::size_row(c)) );
         BOOST_ASSERT( bindings::stride_major(t) >= bindings::size_column(t) );
         BOOST_ASSERT( direct == 'F' || direct == 'B' );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         BOOST_ASSERT( storev == 'C' || storev == 'R' );
         return detail::larfb( side, trans(), direct, storev,
                 bindings::size_row(c), bindings::size_column(c),
@@ -283,8 +290,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixV, typename MatrixT, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char direct,
+ template< typename Side, typename MatrixV, typename MatrixT,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char direct,
             const char storev, const MatrixV& v, const MatrixT& t, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -300,8 +308,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixV, typename MatrixT, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char direct,
+ template< typename Side, typename MatrixV, typename MatrixT,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char direct,
             const char storev, const MatrixV& v, const MatrixT& t, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -312,8 +321,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -332,11 +342,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixV, typename MatrixT, typename MatrixC,
+template< typename Side, typename MatrixV, typename MatrixT, typename MatrixC,
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larfb( const char side, const char direct, const char storev,
+larfb( const Side side, const char direct, const char storev,
         const MatrixV& v, const MatrixT& t, MatrixC& c, Workspace work ) {
     return larfb_impl< typename bindings::value_type<
             MatrixV >::type >::invoke( side, direct, storev, v, t, c, work );
@@ -347,10 +357,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixV, typename MatrixT, typename MatrixC >
+template< typename Side, typename MatrixV, typename MatrixT, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larfb( const char side, const char direct, const char storev,
+larfb( const Side side, const char direct, const char storev,
         const MatrixV& v, const MatrixT& t, MatrixC& c ) {
     return larfb_impl< typename bindings::value_type<
             MatrixV >::type >::invoke( side, direct, storev, v, t, c,
@@ -362,11 +372,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixV, typename MatrixT, typename MatrixC,
+template< typename Side, typename MatrixV, typename MatrixT, typename MatrixC,
         typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larfb( const char side, const char direct, const char storev,
+larfb( const Side side, const char direct, const char storev,
         const MatrixV& v, const MatrixT& t, const MatrixC& c,
         Workspace work ) {
     return larfb_impl< typename bindings::value_type<
@@ -378,10 +388,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixV, typename MatrixT, typename MatrixC >
+template< typename Side, typename MatrixV, typename MatrixT, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larfb( const char side, const char direct, const char storev,
+larfb( const Side side, const char direct, const char storev,
         const MatrixV& v, const MatrixT& t, const MatrixC& c ) {
     return larfb_impl< typename bindings::value_type<
             MatrixV >::type >::invoke( side, direct, storev, v, t, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/auxiliary/larfx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,11 +52,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t larfx( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larfx( const Side side, const fortran_int_t m,
         const fortran_int_t n, const float* v, const float tau, float* c,
         const fortran_int_t ldc, float* work ) {
     fortran_int_t info(0);
- LAPACK_SLARFX( &side, &m, &n, v, &tau, c, &ldc, work );
+ LAPACK_SLARFX( &lapack_option< Side >::value, &m, &n, v, &tau, c, &ldc,
+ work );
     return info;
 }
 
@@ -65,11 +67,13 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t larfx( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larfx( const Side side, const fortran_int_t m,
         const fortran_int_t n, const double* v, const double tau, double* c,
         const fortran_int_t ldc, double* work ) {
     fortran_int_t info(0);
- LAPACK_DLARFX( &side, &m, &n, v, &tau, c, &ldc, work );
+ LAPACK_DLARFX( &lapack_option< Side >::value, &m, &n, v, &tau, c, &ldc,
+ work );
     return info;
 }
 
@@ -78,12 +82,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t larfx( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larfx( const Side side, const fortran_int_t m,
         const fortran_int_t n, const std::complex<float>* v,
         const std::complex<float> tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work ) {
     fortran_int_t info(0);
- LAPACK_CLARFX( &side, &m, &n, v, &tau, c, &ldc, work );
+ LAPACK_CLARFX( &lapack_option< Side >::value, &m, &n, v, &tau, c, &ldc,
+ work );
     return info;
 }
 
@@ -92,12 +98,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t larfx( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larfx( const Side side, const fortran_int_t m,
         const fortran_int_t n, const std::complex<double>* v,
         const std::complex<double> tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work ) {
     fortran_int_t info(0);
- LAPACK_ZLARFX( &side, &m, &n, v, &tau, c, &ldc, work );
+ LAPACK_ZLARFX( &lapack_option< Side >::value, &m, &n, v, &tau, c, &ldc,
+ work );
     return info;
 }
 
@@ -125,8 +133,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorV, typename MatrixC, typename WORK >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const real_type tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -140,7 +149,6 @@
         BOOST_ASSERT( bindings::size_minor(c) == 1 ||
                 bindings::stride_minor(c) == 1 );
         BOOST_ASSERT( bindings::stride_major(c) >= (ERROR) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::larfx( side, bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(v), tau,
                 bindings::begin_value(c), bindings::stride_major(c),
@@ -154,8 +162,8 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const real_type tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         bindings::detail::array< real_type > tmp_work( min_size_work(
@@ -170,8 +178,8 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const real_type tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         return invoke( side, v, tau, c, minimal_workspace() );
@@ -181,8 +189,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -201,8 +210,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorV, typename MatrixC, typename WORK >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const value_type tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -217,7 +227,6 @@
                 bindings::stride_minor(c) == 1 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::larfx( side, bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(v), tau,
                 bindings::begin_value(c), bindings::stride_major(c),
@@ -231,8 +240,8 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const value_type tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         bindings::detail::array< value_type > tmp_work( min_size_work(
@@ -247,8 +256,8 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const VectorV& v,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const VectorV& v,
             const value_type tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         return invoke( side, v, tau, c, minimal_workspace() );
@@ -258,8 +267,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -278,10 +288,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, MatrixC& c, Workspace work ) {
     return larfx_impl< typename bindings::value_type<
@@ -293,10 +304,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, MatrixC& c ) {
     return larfx_impl< typename bindings::value_type<
@@ -308,10 +319,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, const MatrixC& c, Workspace work ) {
     return larfx_impl< typename bindings::value_type<
@@ -323,10 +335,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, const MatrixC& c ) {
     return larfx_impl< typename bindings::value_type<
@@ -337,10 +349,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau, MatrixC& c,
         Workspace work ) {
     return larfx_impl< typename bindings::value_type<
@@ -352,10 +365,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         MatrixC& c ) {
     return larfx_impl< typename bindings::value_type<
@@ -367,10 +380,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         const MatrixC& c, Workspace work ) {
     return larfx_impl< typename bindings::value_type<
@@ -382,10 +396,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larfx( const char side, const VectorV& v,
+larfx( const Side side, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         const MatrixC& c ) {
     return larfx_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const float* ab, const fortran_int_t ldab,
         const float* afb, const fortran_int_t ldafb,
@@ -75,7 +75,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const double* ab, const fortran_int_t ldab,
         const double* afb, const fortran_int_t ldafb,
@@ -95,7 +95,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const std::complex<float>* ab,
         const fortran_int_t ldab, const std::complex<float>* afb,
@@ -116,7 +116,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const std::complex<double>* ab,
         const fortran_int_t ldab, const std::complex<double>* afb,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,7 +50,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbtrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbtrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const float* ab, const fortran_int_t ldab,
         const fortran_int_t* ipiv, float* b, const fortran_int_t ldb ) {
@@ -66,7 +66,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbtrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbtrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const double* ab, const fortran_int_t ldab,
         const fortran_int_t* ipiv, double* b, const fortran_int_t ldb ) {
@@ -82,7 +82,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbtrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbtrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const std::complex<float>* ab,
         const fortran_int_t ldab, const fortran_int_t* ipiv,
@@ -99,7 +99,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbtrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gbtrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, const std::complex<double>* ab,
         const fortran_int_t ldab, const fortran_int_t* ipiv,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,12 +50,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t gebak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t gebak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const float* scale, const fortran_int_t m,
         float* v, const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_SGEBAK( &job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info );
+ LAPACK_SGEBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi, scale,
+ &m, v, &ldv, &info );
     return info;
 }
 
@@ -64,12 +66,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t gebak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t gebak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const double* scale, const fortran_int_t m,
         double* v, const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_DGEBAK( &job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info );
+ LAPACK_DGEBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi, scale,
+ &m, v, &ldv, &info );
     return info;
 }
 
@@ -78,12 +82,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t gebak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t gebak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const float* scale, const fortran_int_t m,
         std::complex<float>* v, const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_CGEBAK( &job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info );
+ LAPACK_CGEBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi, scale,
+ &m, v, &ldv, &info );
     return info;
 }
 
@@ -92,12 +98,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t gebak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t gebak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const double* scale, const fortran_int_t m,
         std::complex<double>* v, const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_ZGEBAK( &job, &side, &n, &ilo, &ihi, scale, &m, v, &ldv, &info );
+ LAPACK_ZGEBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi, scale,
+ &m, v, &ldv, &info );
     return info;
 }
 
@@ -125,8 +133,8 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSCALE, typename MatrixV >
- static std::ptrdiff_t invoke( const char job, const char side,
+ template< typename Side, typename VectorSCALE, typename MatrixV >
+ static std::ptrdiff_t invoke( const char job, const Side side,
             const fortran_int_t ilo, const fortran_int_t ihi,
             const VectorSCALE& scale, MatrixV& v ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -143,7 +151,6 @@
         BOOST_ASSERT( bindings::stride_major(v) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(v)) );
         BOOST_ASSERT( job == 'N' || job == 'P' || job == 'S' || job == 'B' );
- BOOST_ASSERT( side == 'R' || side == 'L' );
         return detail::gebak( job, side, bindings::size_row(v), ilo, ihi,
                 bindings::begin_value(scale), bindings::size_column(v),
                 bindings::begin_value(v), bindings::stride_major(v) );
@@ -166,8 +173,8 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSCALE, typename MatrixV >
- static std::ptrdiff_t invoke( const char job, const char side,
+ template< typename Side, typename VectorSCALE, typename MatrixV >
+ static std::ptrdiff_t invoke( const char job, const Side side,
             const fortran_int_t ilo, const fortran_int_t ihi,
             const VectorSCALE& scale, MatrixV& v ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -180,7 +187,6 @@
         BOOST_ASSERT( bindings::stride_major(v) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(v)) );
         BOOST_ASSERT( job == 'N' || job == 'P' || job == 'S' || job == 'B' );
- BOOST_ASSERT( side == 'R' || side == 'L' );
         return detail::gebak( job, side, bindings::size_row(v), ilo, ihi,
                 bindings::begin_value(scale), bindings::size_column(v),
                 bindings::begin_value(v), bindings::stride_major(v) );
@@ -202,8 +208,8 @@
 // Overloaded function for gebak. Its overload differs for
 // * MatrixV&
 //
-template< typename VectorSCALE, typename MatrixV >
-inline std::ptrdiff_t gebak( const char job, const char side,
+template< typename Side, typename VectorSCALE, typename MatrixV >
+inline std::ptrdiff_t gebak( const char job, const Side side,
         const fortran_int_t ilo, const fortran_int_t ihi,
         const VectorSCALE& scale, MatrixV& v ) {
     return gebak_impl< typename bindings::value_type<
@@ -214,8 +220,8 @@
 // Overloaded function for gebak. Its overload differs for
 // * const MatrixV&
 //
-template< typename VectorSCALE, typename MatrixV >
-inline std::ptrdiff_t gebak( const char job, const char side,
+template< typename Side, typename VectorSCALE, typename MatrixV >
+inline std::ptrdiff_t gebak( const char job, const Side side,
         const fortran_int_t ilo, const fortran_int_t ihi,
         const VectorSCALE& scale, const MatrixV& v ) {
     return gebak_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -194,8 +194,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -282,8 +283,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gerfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gerfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
         const float* af, const fortran_int_t ldaf, const fortran_int_t* ipiv,
         const float* b, const fortran_int_t ldb, float* x,
@@ -72,7 +72,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gerfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gerfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
         const double* af, const fortran_int_t ldaf, const fortran_int_t* ipiv,
         const double* b, const fortran_int_t ldb, double* x,
@@ -90,7 +90,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gerfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gerfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* af,
         const fortran_int_t ldaf, const fortran_int_t* ipiv,
@@ -109,7 +109,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gerfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gerfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* af,
         const fortran_int_t ldaf, const fortran_int_t* ipiv,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -194,8 +194,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -282,8 +283,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -58,9 +58,9 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const int n, const int nrhs,
- const float* a, const int lda, const int* ipiv, float* b,
- const int ldb ) {
+inline std::ptrdiff_t getrs( Order, const Trans trans, const int n,
+ const int nrhs, const float* a, const int lda, const int* ipiv,
+ float* b, const int ldb ) {
     return clapack_sgetrs
    ( clapack_option< Order >::value, clapack_option< Trans >::value, n, nrhs,
            a, lda, ipiv, b, ldb );
@@ -72,9 +72,9 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const int n, const int nrhs,
- const double* a, const int lda, const int* ipiv, double* b,
- const int ldb ) {
+inline std::ptrdiff_t getrs( Order, const Trans trans, const int n,
+ const int nrhs, const double* a, const int lda, const int* ipiv,
+ double* b, const int ldb ) {
     return clapack_dgetrs
    ( clapack_option< Order >::value, clapack_option< Trans >::value, n, nrhs,
            a, lda, ipiv, b, ldb );
@@ -86,9 +86,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const int n, const int nrhs,
- const std::complex<float>* a, const int lda, const int* ipiv,
- std::complex<float>* b, const int ldb ) {
+inline std::ptrdiff_t getrs( Order, const Trans trans, const int n,
+ const int nrhs, const std::complex<float>* a, const int lda,
+ const int* ipiv, std::complex<float>* b, const int ldb ) {
     return clapack_cgetrs
    ( clapack_option< Order >::value, clapack_option< Trans >::value, n, nrhs,
            a, lda, ipiv, b, ldb );
@@ -100,9 +100,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const int n, const int nrhs,
- const std::complex<double>* a, const int lda, const int* ipiv,
- std::complex<double>* b, const int ldb ) {
+inline std::ptrdiff_t getrs( Order, const Trans trans, const int n,
+ const int nrhs, const std::complex<double>* a, const int lda,
+ const int* ipiv, std::complex<double>* b, const int ldb ) {
     return clapack_zgetrs
    ( clapack_option< Order >::value, clapack_option< Trans >::value, n, nrhs,
            a, lda, ipiv, b, ldb );
@@ -115,7 +115,7 @@
 // * float value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const fortran_int_t n,
+inline std::ptrdiff_t getrs( Order, const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, float* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -131,7 +131,7 @@
 // * double value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const fortran_int_t n,
+inline std::ptrdiff_t getrs( Order, const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, double* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -147,7 +147,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const fortran_int_t n,
+inline std::ptrdiff_t getrs( Order, const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const fortran_int_t* ipiv,
         std::complex<float>* b, const fortran_int_t ldb ) {
@@ -164,7 +164,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename Trans >
-inline std::ptrdiff_t getrs( Order, Trans, const fortran_int_t n,
+inline std::ptrdiff_t getrs( Order, const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const fortran_int_t* ipiv,
         std::complex<double>* b, const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,13 +50,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t ggbak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t ggbak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const float* lscale, const float* rscale,
         const fortran_int_t m, float* v, const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_SGGBAK( &job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv,
- &info );
+ LAPACK_SGGBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi,
+ lscale, rscale, &m, v, &ldv, &info );
     return info;
 }
 
@@ -65,13 +66,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t ggbak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t ggbak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const double* lscale, const double* rscale,
         const fortran_int_t m, double* v, const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_DGGBAK( &job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv,
- &info );
+ LAPACK_DGGBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi,
+ lscale, rscale, &m, v, &ldv, &info );
     return info;
 }
 
@@ -80,14 +82,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t ggbak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t ggbak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const float* lscale, const float* rscale,
         const fortran_int_t m, std::complex<float>* v,
         const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_CGGBAK( &job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv,
- &info );
+ LAPACK_CGGBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi,
+ lscale, rscale, &m, v, &ldv, &info );
     return info;
 }
 
@@ -96,14 +99,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t ggbak( const char job, const char side,
+template< typename Side >
+inline std::ptrdiff_t ggbak( const char job, const Side side,
         const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const double* lscale, const double* rscale,
         const fortran_int_t m, std::complex<double>* v,
         const fortran_int_t ldv ) {
     fortran_int_t info(0);
- LAPACK_ZGGBAK( &job, &side, &n, &ilo, &ihi, lscale, rscale, &m, v, &ldv,
- &info );
+ LAPACK_ZGGBAK( &job, &lapack_option< Side >::value, &n, &ilo, &ihi,
+ lscale, rscale, &m, v, &ldv, &info );
     return info;
 }
 
@@ -131,8 +135,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorLSCALE, typename VectorRSCALE, typename MatrixV >
- static std::ptrdiff_t invoke( const char job, const char side,
+ template< typename Side, typename VectorLSCALE, typename VectorRSCALE,
+ typename MatrixV >
+ static std::ptrdiff_t invoke( const char job, const Side side,
             const fortran_int_t ilo, const fortran_int_t ihi,
             const VectorLSCALE& lscale, const VectorRSCALE& rscale,
             MatrixV& v ) {
@@ -155,7 +160,6 @@
         BOOST_ASSERT( bindings::stride_major(v) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(v)) );
         BOOST_ASSERT( job == 'N' || job == 'P' || job == 'S' || job == 'B' );
- BOOST_ASSERT( side == 'R' || side == 'L' );
         return detail::ggbak( job, side, bindings::size_row(v), ilo, ihi,
                 bindings::begin_value(lscale), bindings::begin_value(rscale),
                 bindings::size_column(v), bindings::begin_value(v),
@@ -179,8 +183,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorLSCALE, typename VectorRSCALE, typename MatrixV >
- static std::ptrdiff_t invoke( const char job, const char side,
+ template< typename Side, typename VectorLSCALE, typename VectorRSCALE,
+ typename MatrixV >
+ static std::ptrdiff_t invoke( const char job, const Side side,
             const fortran_int_t ilo, const fortran_int_t ihi,
             const VectorLSCALE& lscale, const VectorRSCALE& rscale,
             MatrixV& v ) {
@@ -199,7 +204,6 @@
         BOOST_ASSERT( bindings::stride_major(v) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(v)) );
         BOOST_ASSERT( job == 'N' || job == 'P' || job == 'S' || job == 'B' );
- BOOST_ASSERT( side == 'R' || side == 'L' );
         return detail::ggbak( job, side, bindings::size_row(v), ilo, ihi,
                 bindings::begin_value(lscale), bindings::begin_value(rscale),
                 bindings::size_column(v), bindings::begin_value(v),
@@ -222,8 +226,9 @@
 // Overloaded function for ggbak. Its overload differs for
 // * MatrixV&
 //
-template< typename VectorLSCALE, typename VectorRSCALE, typename MatrixV >
-inline std::ptrdiff_t ggbak( const char job, const char side,
+template< typename Side, typename VectorLSCALE, typename VectorRSCALE,
+ typename MatrixV >
+inline std::ptrdiff_t ggbak( const char job, const Side side,
         const fortran_int_t ilo, const fortran_int_t ihi,
         const VectorLSCALE& lscale, const VectorRSCALE& rscale, MatrixV& v ) {
     return ggbak_impl< typename bindings::value_type<
@@ -235,8 +240,9 @@
 // Overloaded function for ggbak. Its overload differs for
 // * const MatrixV&
 //
-template< typename VectorLSCALE, typename VectorRSCALE, typename MatrixV >
-inline std::ptrdiff_t ggbak( const char job, const char side,
+template< typename Side, typename VectorLSCALE, typename VectorRSCALE,
+ typename MatrixV >
+inline std::ptrdiff_t ggbak( const char job, const Side side,
         const fortran_int_t ilo, const fortran_int_t ihi,
         const VectorLSCALE& lscale, const VectorRSCALE& rscale,
         const MatrixV& v ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -215,8 +215,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -315,8 +316,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -229,8 +229,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -342,8 +343,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -229,8 +229,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -342,8 +343,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gtrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const float* dl, const float* d,
         const float* du, const float* dlf, const float* df, const float* duf,
         const float* du2, const fortran_int_t* ipiv, const float* b,
@@ -73,7 +73,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gtrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const double* dl, const double* d,
         const double* du, const double* dlf, const double* df,
         const double* duf, const double* du2, const fortran_int_t* ipiv,
@@ -93,7 +93,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gtrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* dl,
         const std::complex<float>* d, const std::complex<float>* du,
         const std::complex<float>* dlf, const std::complex<float>* df,
@@ -115,7 +115,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtrfs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gtrfs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* dl,
         const std::complex<double>* d, const std::complex<double>* du,
         const std::complex<double>* dlf, const std::complex<double>* df,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gttrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gttrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const float* dl, const float* d,
         const float* du, const float* du2, const fortran_int_t* ipiv,
         float* b, const fortran_int_t ldb ) {
@@ -65,7 +65,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gttrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gttrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const double* dl, const double* d,
         const double* du, const double* du2, const fortran_int_t* ipiv,
         double* b, const fortran_int_t ldb ) {
@@ -81,7 +81,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gttrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gttrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* dl,
         const std::complex<float>* d, const std::complex<float>* du,
         const std::complex<float>* du2, const fortran_int_t* ipiv,
@@ -98,7 +98,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gttrs( Trans, const fortran_int_t n,
+inline std::ptrdiff_t gttrs( const Trans trans, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* dl,
         const std::complex<double>* d, const std::complex<double>* du,
         const std::complex<double>* du2, const fortran_int_t* ipiv,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgst( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb,
+inline std::ptrdiff_t hbgst( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
         std::complex<float>* ab, const fortran_int_t ldab,
         const std::complex<float>* bb, const fortran_int_t ldbb,
         std::complex<float>* x, const fortran_int_t ldx,
@@ -70,8 +70,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgst( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb,
+inline std::ptrdiff_t hbgst( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
         std::complex<double>* ab, const fortran_int_t ldab,
         const std::complex<double>* bb, const fortran_int_t ldbb,
         std::complex<double>* x, const fortran_int_t ldx,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,11 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbtrd( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t kd, std::complex<float>* ab,
- const fortran_int_t ldab, float* d, float* e, std::complex<float>* q,
- const fortran_int_t ldq, std::complex<float>* work ) {
+inline std::ptrdiff_t hbtrd( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ std::complex<float>* ab, const fortran_int_t ldab, float* d, float* e,
+ std::complex<float>* q, const fortran_int_t ldq,
+ std::complex<float>* work ) {
     fortran_int_t info(0);
     LAPACK_CHBTRD( &vect, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
             d, e, q, &ldq, work, &info );
@@ -68,10 +69,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbtrd( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t kd, std::complex<double>* ab,
- const fortran_int_t ldab, double* d, double* e,
- std::complex<double>* q, const fortran_int_t ldq,
+inline std::ptrdiff_t hbtrd( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ std::complex<double>* ab, const fortran_int_t ldab, double* d,
+ double* e, std::complex<double>* q, const fortran_int_t ldq,
         std::complex<double>* work ) {
     fortran_int_t info(0);
     LAPACK_ZHBTRD( &vect, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hecon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hecon( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, const float anorm, float& rcond,
         std::complex<float>* work ) {
@@ -67,7 +67,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hecon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hecon( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, const double anorm, double& rcond,
         std::complex<double>* work ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hegst( const fortran_int_t itype, UpLo,
+inline std::ptrdiff_t hegst( const fortran_int_t itype, const UpLo uplo,
         const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -65,7 +65,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hegst( const fortran_int_t itype, UpLo,
+inline std::ptrdiff_t hegst( const fortran_int_t itype, const UpLo uplo,
         const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t herfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t herfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* af,
         const fortran_int_t ldaf, const fortran_int_t* ipiv,
@@ -70,7 +70,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t herfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t herfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* af,
         const fortran_int_t ldaf, const fortran_int_t* ipiv,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetrd( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda, float* d, float* e,
         std::complex<float>* tau, std::complex<float>* work,
         const fortran_int_t lwork ) {
@@ -68,7 +68,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetrd( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda, double* d,
         double* e, std::complex<double>* tau, std::complex<double>* work,
         const fortran_int_t lwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetrf( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda, fortran_int_t* ipiv,
         std::complex<float>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
@@ -66,7 +66,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetrf( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda, fortran_int_t* ipiv,
         std::complex<double>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetri( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, std::complex<float>* work ) {
     fortran_int_t info(0);
@@ -66,7 +66,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetri( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, std::complex<double>* work ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const fortran_int_t* ipiv,
         std::complex<float>* b, const fortran_int_t ldb ) {
@@ -65,7 +65,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hetrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hetrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const fortran_int_t* ipiv,
         std::complex<double>* b, const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hpcon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpcon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hpcon( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* ap, const fortran_int_t* ipiv,
         const float anorm, float& rcond, std::complex<float>* work ) {
     fortran_int_t info(0);
@@ -66,7 +66,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpcon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hpcon( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* ap, const fortran_int_t* ipiv,
         const double anorm, double& rcond, std::complex<double>* work ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* ap,
         const std::complex<float>* afp, const fortran_int_t* ipiv,
         const std::complex<float>* b, const fortran_int_t ldb,
@@ -69,7 +69,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* ap,
         const std::complex<double>* afp, const fortran_int_t* ipiv,
         const std::complex<double>* b, const fortran_int_t ldb,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptrd( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap, float* d, float* e,
         std::complex<float>* tau ) {
     fortran_int_t info(0);
@@ -63,7 +63,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptrd( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap, double* d, double* e,
         std::complex<double>* tau ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptrf( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap, fortran_int_t* ipiv ) {
     fortran_int_t info(0);
     LAPACK_CHPTRF( &lapack_option< UpLo >::value, &n, ap, ipiv, &info );
@@ -62,7 +62,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptrf( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap, fortran_int_t* ipiv ) {
     fortran_int_t info(0);
     LAPACK_ZHPTRF( &lapack_option< UpLo >::value, &n, ap, ipiv, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptri( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap, const fortran_int_t* ipiv,
         std::complex<float>* work ) {
     fortran_int_t info(0);
@@ -65,7 +65,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptri( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap, const fortran_int_t* ipiv,
         std::complex<double>* work ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* ap,
         const fortran_int_t* ipiv, std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -65,7 +65,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* ap,
         const fortran_int_t* ipiv, std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,15 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t hsein( const char side, const char eigsrc,
+template< typename Side >
+inline std::ptrdiff_t hsein( const Side side, const char eigsrc,
         const char initv, logical_t* select, const fortran_int_t n,
         const float* h, const fortran_int_t ldh, float* wr, const float* wi,
         float* vl, const fortran_int_t ldvl, float* vr,
         const fortran_int_t ldvr, const fortran_int_t mm, fortran_int_t& m,
         float* work, fortran_int_t* ifaill, fortran_int_t* ifailr ) {
     fortran_int_t info(0);
- LAPACK_SHSEIN( &side, &eigsrc, &initv, select, &n, h, &ldh, wr, wi, vl,
- &ldvl, vr, &ldvr, &mm, &m, work, ifaill, ifailr, &info );
+ LAPACK_SHSEIN( &lapack_option< Side >::value, &eigsrc, &initv, select, &n,
+ h, &ldh, wr, wi, vl, &ldvl, vr, &ldvr, &mm, &m, work, ifaill,
+ ifailr, &info );
     return info;
 }
 
@@ -69,15 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t hsein( const char side, const char eigsrc,
+template< typename Side >
+inline std::ptrdiff_t hsein( const Side side, const char eigsrc,
         const char initv, logical_t* select, const fortran_int_t n,
         const double* h, const fortran_int_t ldh, double* wr,
         const double* wi, double* vl, const fortran_int_t ldvl, double* vr,
         const fortran_int_t ldvr, const fortran_int_t mm, fortran_int_t& m,
         double* work, fortran_int_t* ifaill, fortran_int_t* ifailr ) {
     fortran_int_t info(0);
- LAPACK_DHSEIN( &side, &eigsrc, &initv, select, &n, h, &ldh, wr, wi, vl,
- &ldvl, vr, &ldvr, &mm, &m, work, ifaill, ifailr, &info );
+ LAPACK_DHSEIN( &lapack_option< Side >::value, &eigsrc, &initv, select, &n,
+ h, &ldh, wr, wi, vl, &ldvl, vr, &ldvr, &mm, &m, work, ifaill,
+ ifailr, &info );
     return info;
 }
 
@@ -86,7 +90,8 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t hsein( const char side, const char eigsrc,
+template< typename Side >
+inline std::ptrdiff_t hsein( const Side side, const char eigsrc,
         const char initv, const logical_t* select, const fortran_int_t n,
         const std::complex<float>* h, const fortran_int_t ldh,
         std::complex<float>* w, std::complex<float>* vl,
@@ -95,8 +100,9 @@
         std::complex<float>* work, float* rwork, fortran_int_t* ifaill,
         fortran_int_t* ifailr ) {
     fortran_int_t info(0);
- LAPACK_CHSEIN( &side, &eigsrc, &initv, select, &n, h, &ldh, w, vl, &ldvl,
- vr, &ldvr, &mm, &m, work, rwork, ifaill, ifailr, &info );
+ LAPACK_CHSEIN( &lapack_option< Side >::value, &eigsrc, &initv, select, &n,
+ h, &ldh, w, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, ifaill,
+ ifailr, &info );
     return info;
 }
 
@@ -105,7 +111,8 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t hsein( const char side, const char eigsrc,
+template< typename Side >
+inline std::ptrdiff_t hsein( const Side side, const char eigsrc,
         const char initv, const logical_t* select, const fortran_int_t n,
         const std::complex<double>* h, const fortran_int_t ldh,
         std::complex<double>* w, std::complex<double>* vl,
@@ -114,8 +121,9 @@
         std::complex<double>* work, double* rwork, fortran_int_t* ifaill,
         fortran_int_t* ifailr ) {
     fortran_int_t info(0);
- LAPACK_ZHSEIN( &side, &eigsrc, &initv, select, &n, h, &ldh, w, vl, &ldvl,
- vr, &ldvr, &mm, &m, work, rwork, ifaill, ifailr, &info );
+ LAPACK_ZHSEIN( &lapack_option< Side >::value, &eigsrc, &initv, select, &n,
+ h, &ldh, w, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, ifaill,
+ ifailr, &info );
     return info;
 }
 
@@ -143,10 +151,11 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename WORK >
- static std::ptrdiff_t invoke( const char side, const char eigsrc,
+ template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char eigsrc,
             const char initv, VectorSELECT& select, const MatrixH& h,
             VectorWR& wr, const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
             const fortran_int_t mm, fortran_int_t& m,
@@ -195,7 +204,6 @@
                 bindings::size_column(h)) );
         BOOST_ASSERT( eigsrc == 'Q' || eigsrc == 'N' );
         BOOST_ASSERT( initv == 'N' || initv == 'U' );
- BOOST_ASSERT( side == 'R' || side == 'L' || side == 'B' );
         return detail::hsein( side, eigsrc, initv,
                 bindings::begin_value(select), bindings::size_column(h),
                 bindings::begin_value(h), bindings::stride_major(h),
@@ -213,10 +221,10 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
- static std::ptrdiff_t invoke( const char side, const char eigsrc,
+ template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
+ static std::ptrdiff_t invoke( const Side side, const char eigsrc,
             const char initv, VectorSELECT& select, const MatrixH& h,
             VectorWR& wr, const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
             const fortran_int_t mm, fortran_int_t& m,
@@ -236,10 +244,10 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
- static std::ptrdiff_t invoke( const char side, const char eigsrc,
+ template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
+ static std::ptrdiff_t invoke( const Side side, const char eigsrc,
             const char initv, VectorSELECT& select, const MatrixH& h,
             VectorWR& wr, const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
             const fortran_int_t mm, fortran_int_t& m,
@@ -274,10 +282,11 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename WORK, typename RWORK >
- static std::ptrdiff_t invoke( const char side, const char eigsrc,
+ template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename WORK,
+ typename RWORK >
+ static std::ptrdiff_t invoke( const Side side, const char eigsrc,
             const char initv, const VectorSELECT& select, const MatrixH& h,
             VectorW& w, MatrixVL& vl, MatrixVR& vr,
             const fortran_int_t mm, fortran_int_t& m,
@@ -322,7 +331,6 @@
                 bindings::size_column(h)) );
         BOOST_ASSERT( eigsrc == 'Q' || eigsrc == 'N' );
         BOOST_ASSERT( initv == 'N' || initv == 'U' );
- BOOST_ASSERT( side == 'R' || side == 'L' || side == 'B' );
         return detail::hsein( side, eigsrc, initv,
                 bindings::begin_value(select), bindings::size_column(h),
                 bindings::begin_value(h), bindings::stride_major(h),
@@ -341,10 +349,10 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
- static std::ptrdiff_t invoke( const char side, const char eigsrc,
+ template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
+ static std::ptrdiff_t invoke( const Side side, const char eigsrc,
             const char initv, const VectorSELECT& select, const MatrixH& h,
             VectorW& w, MatrixVL& vl, MatrixVR& vr,
             const fortran_int_t mm, fortran_int_t& m,
@@ -366,10 +374,10 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
- static std::ptrdiff_t invoke( const char side, const char eigsrc,
+ template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
+ static std::ptrdiff_t invoke( const Side side, const char eigsrc,
             const char initv, const VectorSELECT& select, const MatrixH& h,
             VectorW& w, MatrixVL& vl, MatrixVR& vr,
             const fortran_int_t mm, fortran_int_t& m,
@@ -417,12 +425,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -442,12 +451,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -467,12 +476,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -492,12 +502,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -517,12 +527,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -542,12 +553,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -567,12 +578,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -592,12 +604,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -617,12 +629,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -642,12 +655,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -667,12 +680,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -692,12 +706,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -717,12 +731,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -742,12 +757,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -767,12 +782,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -792,12 +808,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -817,12 +833,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -842,12 +859,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -867,12 +884,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -892,12 +910,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -917,12 +935,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -942,12 +961,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -967,12 +986,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -992,12 +1012,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1017,12 +1037,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1042,12 +1063,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1067,12 +1088,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1092,12 +1114,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1117,12 +1139,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1142,12 +1165,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1167,12 +1190,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1192,12 +1216,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1217,12 +1241,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1242,12 +1267,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1267,12 +1292,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1292,12 +1318,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1317,12 +1343,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1342,12 +1369,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1367,12 +1394,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1392,12 +1420,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1417,12 +1445,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1442,12 +1471,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1467,12 +1496,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1492,12 +1522,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1517,12 +1547,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1542,12 +1573,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1567,12 +1598,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1592,12 +1624,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1617,12 +1649,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1642,12 +1675,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1667,12 +1700,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1692,12 +1726,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1717,12 +1751,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1742,12 +1777,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1767,12 +1802,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1792,12 +1828,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1817,12 +1853,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1842,12 +1879,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1867,12 +1904,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1892,12 +1930,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1917,12 +1955,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1942,12 +1981,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1967,12 +2006,13 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -1992,12 +2032,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2017,12 +2057,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2042,12 +2083,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2067,12 +2108,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2092,12 +2134,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2117,12 +2159,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2142,12 +2185,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2167,12 +2210,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2192,12 +2236,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2217,12 +2261,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2242,12 +2287,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2267,12 +2312,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2292,12 +2338,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2317,12 +2363,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2342,12 +2389,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2367,12 +2414,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2392,12 +2440,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2417,12 +2465,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2442,12 +2491,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2467,12 +2516,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2492,12 +2542,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2517,12 +2567,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2542,12 +2593,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2567,12 +2618,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2592,12 +2644,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2617,12 +2669,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2642,12 +2695,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2667,12 +2720,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2692,12 +2746,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2717,12 +2771,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2742,12 +2797,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2767,12 +2822,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2792,12 +2848,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2817,12 +2873,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2843,12 +2900,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2868,12 +2925,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2894,12 +2952,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2919,12 +2977,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2945,12 +3004,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2970,12 +3029,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -2996,12 +3056,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3021,12 +3081,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3047,12 +3108,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3072,12 +3133,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3098,12 +3160,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3123,12 +3185,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3149,12 +3212,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3174,12 +3237,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3200,12 +3264,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3225,12 +3289,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3251,12 +3316,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3276,12 +3341,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3302,12 +3368,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3327,12 +3393,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3353,12 +3420,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3378,12 +3445,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3404,12 +3472,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3429,12 +3497,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3455,12 +3524,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3480,12 +3549,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3506,12 +3576,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3531,12 +3601,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3557,12 +3628,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3582,12 +3653,13 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3608,12 +3680,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorWR,
- typename VectorWI, typename MatrixVL, typename MatrixVR,
- typename VectorIFAILL, typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorWR, typename VectorWI, typename MatrixVL,
+ typename MatrixVR, typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorWR& wr,
         const VectorWI& wi, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m,
@@ -3631,12 +3703,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3655,12 +3727,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3678,12 +3750,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3702,12 +3774,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3725,12 +3797,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3749,12 +3821,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3772,12 +3844,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3796,12 +3868,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3819,12 +3891,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3843,12 +3915,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3866,12 +3938,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3890,12 +3962,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3913,12 +3985,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3937,12 +4009,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -3960,12 +4032,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr,
@@ -3984,12 +4056,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill, VectorIFAILR& ifailr ) {
@@ -4007,12 +4079,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4031,12 +4103,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4055,12 +4127,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4079,12 +4151,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4103,12 +4175,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4127,12 +4199,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4151,12 +4223,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4175,12 +4247,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4199,12 +4271,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4223,12 +4295,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4247,12 +4319,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4271,12 +4343,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4295,12 +4367,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4319,12 +4391,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4343,12 +4415,12 @@
 // * VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4367,12 +4439,12 @@
 // * VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4391,12 +4463,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4415,12 +4487,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4439,12 +4511,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4463,12 +4535,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4487,12 +4559,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4511,12 +4583,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4535,12 +4607,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4559,12 +4631,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4583,12 +4655,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4607,12 +4679,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4631,12 +4703,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4655,12 +4727,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4679,12 +4751,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4703,12 +4775,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4727,12 +4799,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4751,12 +4823,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, VectorIFAILL& ifaill,
@@ -4775,12 +4847,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4799,12 +4871,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4823,12 +4895,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4847,12 +4919,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4871,12 +4943,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4895,12 +4967,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4919,12 +4991,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4943,12 +5015,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4967,12 +5039,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -4991,12 +5063,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -5015,12 +5087,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -5039,12 +5111,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -5063,12 +5135,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -5087,12 +5159,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -5111,12 +5183,12 @@
 // * const VectorIFAILR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,
@@ -5135,12 +5207,12 @@
 // * const VectorIFAILR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixH, typename VectorW,
- typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
- typename VectorIFAILR >
+template< typename Side, typename VectorSELECT, typename MatrixH,
+ typename VectorW, typename MatrixVL, typename MatrixVR,
+ typename VectorIFAILL, typename VectorIFAILR >
 inline typename boost::disable_if< detail::is_workspace< VectorIFAILR >,
         std::ptrdiff_t >::type
-hsein( const char side, const char eigsrc, const char initv,
+hsein( const Side side, const char eigsrc, const char initv,
         const VectorSELECT& select, const MatrixH& h, const VectorW& w,
         const MatrixVL& vl, const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, const VectorIFAILL& ifaill,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,12 +52,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t larz( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larz( const Side side, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t l, const float* v,
         const fortran_int_t incv, const float tau, float* c,
         const fortran_int_t ldc, float* work ) {
     fortran_int_t info(0);
- LAPACK_SLARZ( &side, &m, &n, &l, v, &incv, &tau, c, &ldc, work );
+ LAPACK_SLARZ( &lapack_option< Side >::value, &m, &n, &l, v, &incv, &tau,
+ c, &ldc, work );
     return info;
 }
 
@@ -66,12 +68,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t larz( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larz( const Side side, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t l, const double* v,
         const fortran_int_t incv, const double tau, double* c,
         const fortran_int_t ldc, double* work ) {
     fortran_int_t info(0);
- LAPACK_DLARZ( &side, &m, &n, &l, v, &incv, &tau, c, &ldc, work );
+ LAPACK_DLARZ( &lapack_option< Side >::value, &m, &n, &l, v, &incv, &tau,
+ c, &ldc, work );
     return info;
 }
 
@@ -80,13 +84,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t larz( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larz( const Side side, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t l,
         const std::complex<float>* v, const fortran_int_t incv,
         const std::complex<float> tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work ) {
     fortran_int_t info(0);
- LAPACK_CLARZ( &side, &m, &n, &l, v, &incv, &tau, c, &ldc, work );
+ LAPACK_CLARZ( &lapack_option< Side >::value, &m, &n, &l, v, &incv, &tau,
+ c, &ldc, work );
     return info;
 }
 
@@ -95,13 +101,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t larz( const char side, const fortran_int_t m,
+template< typename Side >
+inline std::ptrdiff_t larz( const Side side, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t l,
         const std::complex<double>* v, const fortran_int_t incv,
         const std::complex<double> tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work ) {
     fortran_int_t info(0);
- LAPACK_ZLARZ( &side, &m, &n, &l, v, &incv, &tau, c, &ldc, work );
+ LAPACK_ZLARZ( &lapack_option< Side >::value, &m, &n, &l, v, &incv, &tau,
+ c, &ldc, work );
     return info;
 }
 
@@ -129,8 +137,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorV, typename MatrixC, typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t l,
+ template< typename Side, typename VectorV, typename MatrixC,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t l,
             const VectorV& v, const real_type tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -146,7 +155,6 @@
                 bindings::stride_minor(c) == 1 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::larz( side, bindings::size_row(c),
                 bindings::size_column(c), l, bindings::begin_value(v),
                 bindings::stride(v), tau, bindings::begin_value(c),
@@ -161,8 +169,8 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t l,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t l,
             const VectorV& v, const real_type tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -178,8 +186,8 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t l,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t l,
             const VectorV& v, const real_type tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -190,7 +198,8 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
         if ( side == 'L' )
             return n;
@@ -214,8 +223,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorV, typename MatrixC, typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t l,
+ template< typename Side, typename VectorV, typename MatrixC,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t l,
             const VectorV& v, const value_type tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -231,7 +241,6 @@
                 bindings::stride_minor(c) == 1 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::larz( side, bindings::size_row(c),
                 bindings::size_column(c), l, bindings::begin_value(v),
                 bindings::stride(v), tau, bindings::begin_value(c),
@@ -246,8 +255,8 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t l,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t l,
             const VectorV& v, const value_type tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -263,8 +272,8 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorV, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t l,
+ template< typename Side, typename VectorV, typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t l,
             const VectorV& v, const value_type tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -275,7 +284,8 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
         if ( side == 'L' )
             return n;
@@ -299,10 +309,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, MatrixC& c, Workspace work ) {
     return larz_impl< typename bindings::value_type<
@@ -314,10 +325,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, MatrixC& c ) {
     return larz_impl< typename bindings::value_type<
@@ -330,10 +341,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, const MatrixC& c, Workspace work ) {
     return larz_impl< typename bindings::value_type<
@@ -345,10 +357,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename remove_imaginary< typename bindings::value_type<
         VectorV >::type >::type tau, const MatrixC& c ) {
     return larz_impl< typename bindings::value_type<
@@ -360,10 +372,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau, MatrixC& c,
         Workspace work ) {
     return larz_impl< typename bindings::value_type<
@@ -375,10 +388,10 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         MatrixC& c ) {
     return larz_impl< typename bindings::value_type<
@@ -391,10 +404,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorV, typename MatrixC, typename Workspace >
+template< typename Side, typename VectorV, typename MatrixC,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         const MatrixC& c, Workspace work ) {
     return larz_impl< typename bindings::value_type<
@@ -406,10 +420,10 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorV, typename MatrixC >
+template< typename Side, typename VectorV, typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-larz( const char side, const fortran_int_t l, const VectorV& v,
+larz( const Side side, const fortran_int_t l, const VectorV& v,
         const typename bindings::value_type< VectorV >::type tau,
         const MatrixC& c ) {
     return larz_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t latrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t latrd( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nb, float* a, const fortran_int_t lda, float* e,
         float* tau, float* w, const fortran_int_t ldw ) {
     fortran_int_t info(0);
@@ -67,7 +67,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t latrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t latrd( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nb, double* a, const fortran_int_t lda, double* e,
         double* tau, double* w, const fortran_int_t ldw ) {
     fortran_int_t info(0);
@@ -82,7 +82,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t latrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t latrd( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nb, std::complex<float>* a,
         const fortran_int_t lda, float* e, std::complex<float>* tau,
         std::complex<float>* w, const fortran_int_t ldw ) {
@@ -98,7 +98,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t latrd( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t latrd( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nb, std::complex<double>* a,
         const fortran_int_t lda, double* e, std::complex<double>* tau,
         std::complex<double>* w, const fortran_int_t ldw ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,9 +54,10 @@
 // * float value-type.
 //
 template< typename Trans, typename Diag >
-inline std::ptrdiff_t latrs( const char uplo, Trans, Diag, const char normin,
- const fortran_int_t n, const float* a, const fortran_int_t lda,
- float* x, float& scale, float* cnorm ) {
+inline std::ptrdiff_t latrs( const char uplo, const Trans trans,
+ const Diag diag, const char normin, const fortran_int_t n,
+ const float* a, const fortran_int_t lda, float* x, float& scale,
+ float* cnorm ) {
     fortran_int_t info(0);
     LAPACK_SLATRS( &uplo, &lapack_option< Trans >::value, &lapack_option<
             Diag >::value, &normin, &n, a, &lda, x, &scale, cnorm, &info );
@@ -69,9 +70,10 @@
 // * double value-type.
 //
 template< typename Trans, typename Diag >
-inline std::ptrdiff_t latrs( const char uplo, Trans, Diag, const char normin,
- const fortran_int_t n, const double* a, const fortran_int_t lda,
- double* x, double& scale, double* cnorm ) {
+inline std::ptrdiff_t latrs( const char uplo, const Trans trans,
+ const Diag diag, const char normin, const fortran_int_t n,
+ const double* a, const fortran_int_t lda, double* x, double& scale,
+ double* cnorm ) {
     fortran_int_t info(0);
     LAPACK_DLATRS( &uplo, &lapack_option< Trans >::value, &lapack_option<
             Diag >::value, &normin, &n, a, &lda, x, &scale, cnorm, &info );
@@ -84,10 +86,10 @@
 // * complex<float> value-type.
 //
 template< typename Trans, typename Diag >
-inline std::ptrdiff_t latrs( const char uplo, Trans, Diag, const char normin,
- const fortran_int_t n, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* x, float& scale,
- float* cnorm ) {
+inline std::ptrdiff_t latrs( const char uplo, const Trans trans,
+ const Diag diag, const char normin, const fortran_int_t n,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* x, float& scale, float* cnorm ) {
     fortran_int_t info(0);
     LAPACK_CLATRS( &uplo, &lapack_option< Trans >::value, &lapack_option<
             Diag >::value, &normin, &n, a, &lda, x, &scale, cnorm, &info );
@@ -100,10 +102,10 @@
 // * complex<double> value-type.
 //
 template< typename Trans, typename Diag >
-inline std::ptrdiff_t latrs( const char uplo, Trans, Diag, const char normin,
- const fortran_int_t n, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* x, double& scale,
- double* cnorm ) {
+inline std::ptrdiff_t latrs( const char uplo, const Trans trans,
+ const Diag diag, const char normin, const fortran_int_t n,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* x, double& scale, double* cnorm ) {
     fortran_int_t info(0);
     LAPACK_ZLATRS( &uplo, &lapack_option< Trans >::value, &lapack_option<
             Diag >::value, &normin, &n, a, &lda, x, &scale, cnorm, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,13 +51,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t opmtr( const char side, const char uplo, Trans,
- const fortran_int_t m, const fortran_int_t n, const float* ap,
- const float* tau, float* c, const fortran_int_t ldc, float* work ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t opmtr( const Side side, const char uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const float* ap, const float* tau, float* c, const fortran_int_t ldc,
+ float* work ) {
     fortran_int_t info(0);
- LAPACK_SOPMTR( &side, &uplo, &lapack_option< Trans >::value, &m, &n, ap,
- tau, c, &ldc, work, &info );
+ LAPACK_SOPMTR( &lapack_option< Side >::value, &uplo, &lapack_option<
+ Trans >::value, &m, &n, ap, tau, c, &ldc, work, &info );
     return info;
 }
 
@@ -66,13 +67,14 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t opmtr( const char side, const char uplo, Trans,
- const fortran_int_t m, const fortran_int_t n, const double* ap,
- const double* tau, double* c, const fortran_int_t ldc, double* work ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t opmtr( const Side side, const char uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const double* ap, const double* tau, double* c,
+ const fortran_int_t ldc, double* work ) {
     fortran_int_t info(0);
- LAPACK_DOPMTR( &side, &uplo, &lapack_option< Trans >::value, &m, &n, ap,
- tau, c, &ldc, work, &info );
+ LAPACK_DOPMTR( &lapack_option< Side >::value, &uplo, &lapack_option<
+ Trans >::value, &m, &n, ap, tau, c, &ldc, work, &info );
     return info;
 }
 
@@ -94,9 +96,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorAP, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const char uplo,
+ template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char uplo,
             const VectorAP& ap, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -118,7 +120,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::opmtr( side, uplo, trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(ap),
                 bindings::begin_value(tau), bindings::begin_value(c),
@@ -133,8 +134,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorAP, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char uplo,
+ template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char uplo,
             const VectorAP& ap, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -150,8 +152,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorAP, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char uplo,
+ template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char uplo,
             const VectorAP& ap, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -162,7 +165,8 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
         if ( side == 'L' )
             return n;
@@ -186,11 +190,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-opmtr( const char side, const char uplo, const VectorAP& ap,
+opmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return opmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c, work );
@@ -201,10 +205,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-opmtr( const char side, const char uplo, const VectorAP& ap,
+opmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, MatrixC& c ) {
     return opmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c,
@@ -216,11 +221,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-opmtr( const char side, const char uplo, const VectorAP& ap,
+opmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return opmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c, work );
@@ -231,10 +236,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-opmtr( const char side, const char uplo, const VectorAP& ap,
+opmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, const MatrixC& c ) {
     return opmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -156,8 +156,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t orgtr( UpLo, const fortran_int_t n, float* a,
+inline std::ptrdiff_t orgtr( const UpLo uplo, const fortran_int_t n, float* a,
         const fortran_int_t lda, const float* tau, float* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
@@ -67,7 +67,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t orgtr( UpLo, const fortran_int_t n, double* a,
+inline std::ptrdiff_t orgtr( const UpLo uplo, const fortran_int_t n, double* a,
         const fortran_int_t lda, const double* tau, double* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,14 +52,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormbr( const char vect, const char side, Trans,
- const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
- const float* a, const fortran_int_t lda, const float* tau, float* c,
- const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormbr( const char vect, const Side side,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const fortran_int_t k, const float* a, const fortran_int_t lda,
+ const float* tau, float* c, const fortran_int_t ldc, float* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMBR( &vect, &side, &lapack_option< Trans >::value, &m, &n, &k,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMBR( &vect, &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -67,15 +70,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormbr( const char vect, const char side, Trans,
- const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
- const double* a, const fortran_int_t lda, const double* tau,
- double* c, const fortran_int_t ldc, double* work,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormbr( const char vect, const Side side,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const fortran_int_t k, const double* a, const fortran_int_t lda,
+ const double* tau, double* c, const fortran_int_t ldc, double* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMBR( &vect, &side, &lapack_option< Trans >::value, &m, &n, &k,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMBR( &vect, &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -97,9 +101,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char vect, const char side,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const char vect, const Side side,
             const fortran_int_t k, const MatrixA& a, const VectorTAU& tau,
             MatrixC& c, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -127,7 +131,6 @@
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
         BOOST_ASSERT( k >= 0 );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         BOOST_ASSERT( vect == 'Q' || vect == 'P' );
         return detail::ormbr( vect, side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
@@ -144,8 +147,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char vect, const char side,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const char vect, const Side side,
             const fortran_int_t k, const MatrixA& a, const VectorTAU& tau,
             MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -162,8 +166,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char vect, const char side,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const char vect, const Side side,
             const fortran_int_t k, const MatrixA& a, const VectorTAU& tau,
             MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -183,12 +188,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -207,11 +211,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormbr( const char vect, const char side, const fortran_int_t k,
+ormbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return ormbr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( vect, side, k, a, tau, c, work );
@@ -222,10 +226,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormbr( const char vect, const char side, const fortran_int_t k,
+ormbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, MatrixC& c ) {
     return ormbr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( vect, side, k, a, tau, c,
@@ -237,11 +242,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormbr( const char vect, const char side, const fortran_int_t k,
+ormbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, const MatrixC& c,
         Workspace work ) {
     return ormbr_impl< typename bindings::value_type<
@@ -253,10 +258,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormbr( const char vect, const char side, const fortran_int_t k,
+ormbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, const MatrixC& c ) {
     return ormbr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( vect, side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,15 +52,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormhr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t ilo,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormhr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const float* a, const fortran_int_t lda,
         const float* tau, float* c, const fortran_int_t ldc, float* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMHR( &side, &lapack_option< Trans >::value, &m, &n, &ilo, &ihi,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMHR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -68,15 +70,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormhr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t ilo,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormhr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const double* a, const fortran_int_t lda,
         const double* tau, double* c, const fortran_int_t ldc, double* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMHR( &side, &lapack_option< Trans >::value, &m, &n, &ilo, &ihi,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMHR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -98,9 +101,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t ilo,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t ilo,
             const fortran_int_t ihi, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
@@ -126,7 +129,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormhr( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), ilo, ihi, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -142,8 +144,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t ilo,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t ilo,
             const fortran_int_t ihi, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -160,8 +163,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t ilo,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t ilo,
             const fortran_int_t ihi, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -181,12 +185,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -205,11 +208,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormhr( const char side, const fortran_int_t ilo,
+ormhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c, Workspace work ) {
     return ormhr_impl< typename bindings::value_type<
@@ -221,10 +224,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormhr( const char side, const fortran_int_t ilo,
+ormhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c ) {
     return ormhr_impl< typename bindings::value_type<
@@ -237,11 +241,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormhr( const char side, const fortran_int_t ilo,
+ormhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c, Workspace work ) {
     return ormhr_impl< typename bindings::value_type<
@@ -253,10 +257,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormhr( const char side, const fortran_int_t ilo,
+ormhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c ) {
     return ormhr_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,14 +52,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormlq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const float* a,
- const fortran_int_t lda, const float* tau, float* c,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormlq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const float* a, const fortran_int_t lda, const float* tau, float* c,
         const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMLQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMLQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -67,14 +69,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormlq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const double* a,
- const fortran_int_t lda, const double* tau, double* c,
- const fortran_int_t ldc, double* work, const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormlq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const double* a, const fortran_int_t lda, const double* tau,
+ double* c, const fortran_int_t ldc, double* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMLQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMLQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -96,9 +100,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -126,7 +130,6 @@
                 k) );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormlq( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -142,8 +145,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -160,8 +164,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -181,12 +186,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -205,11 +209,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormlq( const char side, const fortran_int_t k, const MatrixA& a,
+ormlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return ormlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -220,10 +224,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormlq( const char side, const fortran_int_t k, const MatrixA& a,
+ormlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return ormlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -235,11 +240,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormlq( const char side, const fortran_int_t k, const MatrixA& a,
+ormlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return ormlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -250,10 +255,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormlq( const char side, const fortran_int_t k, const MatrixA& a,
+ormlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return ormlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,14 +52,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormql( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const float* a,
- const fortran_int_t lda, const float* tau, float* c,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormql( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const float* a, const fortran_int_t lda, const float* tau, float* c,
         const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMQL( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMQL( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -67,14 +69,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormql( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const double* a,
- const fortran_int_t lda, const double* tau, double* c,
- const fortran_int_t ldc, double* work, const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormql( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const double* a, const fortran_int_t lda, const double* tau,
+ double* c, const fortran_int_t ldc, double* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMQL( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMQL( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -96,9 +100,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -124,7 +128,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormql( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -140,8 +143,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -158,8 +162,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -179,12 +184,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -203,11 +207,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormql( const char side, const fortran_int_t k, const MatrixA& a,
+ormql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return ormql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -218,10 +222,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormql( const char side, const fortran_int_t k, const MatrixA& a,
+ormql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return ormql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -233,11 +238,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormql( const char side, const fortran_int_t k, const MatrixA& a,
+ormql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return ormql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -248,10 +253,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormql( const char side, const fortran_int_t k, const MatrixA& a,
+ormql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return ormql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,14 +52,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormqr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const float* a,
- const fortran_int_t lda, const float* tau, float* c,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormqr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const float* a, const fortran_int_t lda, const float* tau, float* c,
         const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMQR( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMQR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -67,14 +69,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormqr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const double* a,
- const fortran_int_t lda, const double* tau, double* c,
- const fortran_int_t ldc, double* work, const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormqr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const double* a, const fortran_int_t lda, const double* tau,
+ double* c, const fortran_int_t ldc, double* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMQR( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMQR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -96,9 +100,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -124,7 +128,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormqr( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::size(tau),
                 bindings::begin_value(a), bindings::stride_major(a),
@@ -141,8 +144,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -158,8 +162,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -178,12 +183,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -202,11 +206,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormqr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c, Workspace work ) {
     return ormqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -217,10 +221,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormqr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c ) {
     return ormqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );
@@ -231,11 +236,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormqr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c, Workspace work ) {
     return ormqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -246,10 +251,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormqr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c ) {
     return ormqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,14 +52,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormrq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const float* a,
- const fortran_int_t lda, const float* tau, float* c,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormrq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const float* a, const fortran_int_t lda, const float* tau, float* c,
         const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMRQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMRQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -67,14 +69,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormrq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const double* a,
- const fortran_int_t lda, const double* tau, double* c,
- const fortran_int_t ldc, double* work, const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormrq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const double* a, const fortran_int_t lda, const double* tau,
+ double* c, const fortran_int_t ldc, double* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMRQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMRQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -96,9 +100,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -126,7 +130,6 @@
                 k) );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormrq( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -142,8 +145,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -160,8 +164,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -181,12 +186,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -205,11 +209,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormrq( const char side, const fortran_int_t k, const MatrixA& a,
+ormrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return ormrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -220,10 +224,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormrq( const char side, const fortran_int_t k, const MatrixA& a,
+ormrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return ormrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -235,11 +240,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormrq( const char side, const fortran_int_t k, const MatrixA& a,
+ormrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return ormrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -250,10 +255,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormrq( const char side, const fortran_int_t k, const MatrixA& a,
+ormrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return ormrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,14 +51,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormrz( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const fortran_int_t l,
- const float* a, const fortran_int_t lda, const float* tau, float* c,
- const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormrz( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const fortran_int_t l, const float* a, const fortran_int_t lda,
+ const float* tau, float* c, const fortran_int_t ldc, float* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMRZ( &side, &lapack_option< Trans >::value, &m, &n, &k, &l, a,
- &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_SORMRZ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -67,15 +69,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t ormrz( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const fortran_int_t l,
- const double* a, const fortran_int_t lda, const double* tau,
- double* c, const fortran_int_t ldc, double* work,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t ormrz( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const fortran_int_t l, const double* a, const fortran_int_t lda,
+ const double* tau, double* c, const fortran_int_t ldc, double* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMRZ( &side, &lapack_option< Trans >::value, &m, &n, &k, &l, a,
- &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_DORMRZ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -97,9 +100,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -126,7 +129,6 @@
                 k) );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormrz( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::size_column_op(a,
                 trans()), bindings::begin_value(a), bindings::stride_major(a),
@@ -143,8 +145,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -161,8 +164,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -182,8 +186,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -202,11 +207,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormrz( const char side, const fortran_int_t k, const MatrixA& a,
+ormrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return ormrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -217,10 +222,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormrz( const char side, const fortran_int_t k, const MatrixA& a,
+ormrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return ormrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -232,11 +238,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormrz( const char side, const fortran_int_t k, const MatrixA& a,
+ormrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return ormrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -247,10 +253,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormrz( const char side, const fortran_int_t k, const MatrixA& a,
+ormrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return ormrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -52,15 +53,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-template< typename UpLo, typename Trans >
-inline std::ptrdiff_t ormtr( const char side, UpLo, Trans,
- const fortran_int_t m, const fortran_int_t n, const float* a,
- const fortran_int_t lda, const float* tau, float* c,
+template< typename Side, typename UpLo, typename Trans >
+inline std::ptrdiff_t ormtr( const Side side, const UpLo uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const float* a, const fortran_int_t lda, const float* tau, float* c,
         const fortran_int_t ldc, float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_SORMTR( &side, &lapack_option< UpLo >::value, &lapack_option<
- Trans >::value, &m, &n, a, &lda, tau, c, &ldc, work, &lwork,
- &info );
+ LAPACK_SORMTR( &lapack_option< Side >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Trans >::value, &m, &n, a, &lda,
+ tau, c, &ldc, work, &lwork, &info );
     return info;
 }
 
@@ -69,15 +70,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-template< typename UpLo, typename Trans >
-inline std::ptrdiff_t ormtr( const char side, UpLo, Trans,
- const fortran_int_t m, const fortran_int_t n, const double* a,
- const fortran_int_t lda, const double* tau, double* c,
- const fortran_int_t ldc, double* work, const fortran_int_t lwork ) {
+template< typename Side, typename UpLo, typename Trans >
+inline std::ptrdiff_t ormtr( const Side side, const UpLo uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const double* a, const fortran_int_t lda, const double* tau,
+ double* c, const fortran_int_t ldc, double* work,
+ const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_DORMTR( &side, &lapack_option< UpLo >::value, &lapack_option<
- Trans >::value, &m, &n, a, &lda, tau, c, &ldc, work, &lwork,
- &info );
+ LAPACK_DORMTR( &lapack_option< Side >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Trans >::value, &m, &n, a, &lda,
+ tau, c, &ldc, work, &lwork, &info );
     return info;
 }
 
@@ -99,9 +101,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -127,7 +129,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::ormtr( side, uplo(), trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -143,8 +144,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -161,8 +163,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -182,12 +185,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -206,11 +208,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormtr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c, Workspace work ) {
     return ormtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -221,10 +223,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormtr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c ) {
     return ormtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );
@@ -235,11 +238,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-ormtr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c, Workspace work ) {
     return ormtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -250,10 +253,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-ormtr( const char side, const MatrixA& a, const VectorTAU& tau,
+ormtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c ) {
     return ormtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,7 +53,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbequ( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbequ( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const float* ab, const fortran_int_t ldab,
         float* s, float& scond, float& amax ) {
     fortran_int_t info(0);
@@ -68,7 +68,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbequ( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbequ( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const double* ab, const fortran_int_t ldab,
         double* s, double& scond, double& amax ) {
     fortran_int_t info(0);
@@ -83,7 +83,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbequ( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbequ( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const std::complex<float>* ab,
         const fortran_int_t ldab, float* s, float& scond, float& amax ) {
     fortran_int_t info(0);
@@ -98,7 +98,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbequ( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbequ( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const std::complex<double>* ab,
         const fortran_int_t ldab, double* s, double& scond, double& amax ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs, const float* ab,
         const fortran_int_t ldab, const float* afb, const fortran_int_t ldafb,
         const float* b, const fortran_int_t ldb, float* x,
@@ -73,7 +73,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs, const double* ab,
         const fortran_int_t ldab, const double* afb,
         const fortran_int_t ldafb, const double* b, const fortran_int_t ldb,
@@ -91,7 +91,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs,
         const std::complex<float>* ab, const fortran_int_t ldab,
         const std::complex<float>* afb, const fortran_int_t ldafb,
@@ -110,7 +110,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs,
         const std::complex<double>* ab, const fortran_int_t ldab,
         const std::complex<double>* afb, const fortran_int_t ldafb,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,7 +50,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbstf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbstf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, float* ab, const fortran_int_t ldab ) {
     fortran_int_t info(0);
     LAPACK_SPBSTF( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &info );
@@ -63,7 +63,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbstf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbstf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, double* ab, const fortran_int_t ldab ) {
     fortran_int_t info(0);
     LAPACK_DPBSTF( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &info );
@@ -76,7 +76,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbstf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbstf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, std::complex<float>* ab,
         const fortran_int_t ldab ) {
     fortran_int_t info(0);
@@ -90,7 +90,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbstf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbstf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, std::complex<double>* ab,
         const fortran_int_t ldab ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,7 +50,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbtrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbtrf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, float* ab, const fortran_int_t ldab ) {
     fortran_int_t info(0);
     LAPACK_SPBTRF( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &info );
@@ -63,7 +63,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbtrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbtrf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, double* ab, const fortran_int_t ldab ) {
     fortran_int_t info(0);
     LAPACK_DPBTRF( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &info );
@@ -76,7 +76,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbtrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbtrf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, std::complex<float>* ab,
         const fortran_int_t ldab ) {
     fortran_int_t info(0);
@@ -90,7 +90,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbtrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbtrf( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, std::complex<double>* ab,
         const fortran_int_t ldab ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,9 +49,9 @@
 // * float value-type.
 //
 template< typename TransR >
-inline std::ptrdiff_t pftrs( TransR, const char uplo, const fortran_int_t n,
- const fortran_int_t nrhs, const float* a, float* b,
- const fortran_int_t ldb ) {
+inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, const float* a,
+ float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_SPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
             &ldb, &info );
@@ -64,9 +64,9 @@
 // * double value-type.
 //
 template< typename TransR >
-inline std::ptrdiff_t pftrs( TransR, const char uplo, const fortran_int_t n,
- const fortran_int_t nrhs, const double* a, double* b,
- const fortran_int_t ldb ) {
+inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, const double* a,
+ double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_DPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
             &ldb, &info );
@@ -79,9 +79,10 @@
 // * complex<float> value-type.
 //
 template< typename TransR >
-inline std::ptrdiff_t pftrs( TransR, const char uplo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* a,
- std::complex<float>* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* a, std::complex<float>* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_CPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
             &ldb, &info );
@@ -94,9 +95,10 @@
 // * complex<double> value-type.
 //
 template< typename TransR >
-inline std::ptrdiff_t pftrs( TransR, const char uplo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* a,
- std::complex<double>* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* a, std::complex<double>* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_ZPFTRS( &lapack_option< TransR >::value, &uplo, &n, &nrhs, a, b,
             &ldb, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,9 +54,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pocon( UpLo, const fortran_int_t n, const float* a,
- const fortran_int_t lda, const float anorm, float& rcond, float* work,
- fortran_int_t* iwork ) {
+inline std::ptrdiff_t pocon( const UpLo uplo, const fortran_int_t n,
+ const float* a, const fortran_int_t lda, const float anorm,
+ float& rcond, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SPOCON( &lapack_option< UpLo >::value, &n, a, &lda, &anorm, &rcond,
             work, iwork, &info );
@@ -69,9 +69,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pocon( UpLo, const fortran_int_t n, const double* a,
- const fortran_int_t lda, const double anorm, double& rcond,
- double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t pocon( const UpLo uplo, const fortran_int_t n,
+ const double* a, const fortran_int_t lda, const double anorm,
+ double& rcond, double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DPOCON( &lapack_option< UpLo >::value, &n, a, &lda, &anorm, &rcond,
             work, iwork, &info );
@@ -84,7 +84,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pocon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pocon( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* a, const fortran_int_t lda,
         const float anorm, float& rcond, std::complex<float>* work,
         float* rwork ) {
@@ -100,7 +100,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pocon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pocon( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* a, const fortran_int_t lda,
         const double anorm, double& rcond, std::complex<double>* work,
         double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t porfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t porfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
         const float* af, const fortran_int_t ldaf, const float* b,
         const fortran_int_t ldb, float* x, const fortran_int_t ldx,
@@ -71,7 +71,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t porfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t porfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
         const double* af, const fortran_int_t ldaf, const double* b,
         const fortran_int_t ldb, double* x, const fortran_int_t ldx,
@@ -88,7 +88,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t porfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t porfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* af,
         const fortran_int_t ldaf, const std::complex<float>* b,
@@ -107,7 +107,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t porfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t porfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* af,
         const fortran_int_t ldaf, const std::complex<double>* b,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -58,7 +58,7 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const int n, float* a,
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const int n, float* a,
         const int lda ) {
     return clapack_spotrf( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
@@ -70,7 +70,7 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const int n, double* a,
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const int n, double* a,
         const int lda ) {
     return clapack_dpotrf( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
@@ -82,8 +82,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const int n, std::complex<float>* a,
- const int lda ) {
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const int n,
+ std::complex<float>* a, const int lda ) {
     return clapack_cpotrf( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
 }
@@ -94,8 +94,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const int n, std::complex<double>* a,
- const int lda ) {
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const int n,
+ std::complex<double>* a, const int lda ) {
     return clapack_zpotrf( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
 }
@@ -107,8 +107,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const fortran_int_t n, float* a,
- const fortran_int_t lda ) {
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const fortran_int_t n,
+ float* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_SPOTRF( &lapack_option< UpLo >::value, &n, a, &lda, &info );
@@ -121,8 +121,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const fortran_int_t n, double* a,
- const fortran_int_t lda ) {
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const fortran_int_t n,
+ double* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_DPOTRF( &lapack_option< UpLo >::value, &n, a, &lda, &info );
@@ -135,7 +135,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
@@ -149,7 +149,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrf( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potrf( Order, const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -58,7 +58,7 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const int n, float* a,
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const int n, float* a,
         const int lda ) {
     return clapack_spotri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
@@ -70,7 +70,7 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const int n, double* a,
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const int n, double* a,
         const int lda ) {
     return clapack_dpotri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
@@ -82,8 +82,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const int n, std::complex<float>* a,
- const int lda ) {
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const int n,
+ std::complex<float>* a, const int lda ) {
     return clapack_cpotri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
 }
@@ -94,8 +94,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const int n, std::complex<double>* a,
- const int lda ) {
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const int n,
+ std::complex<double>* a, const int lda ) {
     return clapack_zpotri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, a, lda );
 }
@@ -107,8 +107,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const fortran_int_t n, float* a,
- const fortran_int_t lda ) {
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const fortran_int_t n,
+ float* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_SPOTRI( &lapack_option< UpLo >::value, &n, a, &lda, &info );
@@ -121,8 +121,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const fortran_int_t n, double* a,
- const fortran_int_t lda ) {
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const fortran_int_t n,
+ double* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_DPOTRI( &lapack_option< UpLo >::value, &n, a, &lda, &info );
@@ -135,7 +135,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
@@ -149,7 +149,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potri( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potri( Order, const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -58,8 +58,9 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const int n, const int nrhs,
- const float* a, const int lda, float* b, const int ldb ) {
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const int n,
+ const int nrhs, const float* a, const int lda, float* b,
+ const int ldb ) {
     return clapack_spotrs( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -70,8 +71,9 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const int n, const int nrhs,
- const double* a, const int lda, double* b, const int ldb ) {
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const int n,
+ const int nrhs, const double* a, const int lda, double* b,
+ const int ldb ) {
     return clapack_dpotrs( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -82,9 +84,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const int n, const int nrhs,
- const std::complex<float>* a, const int lda, std::complex<float>* b,
- const int ldb ) {
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const int n,
+ const int nrhs, const std::complex<float>* a, const int lda,
+ std::complex<float>* b, const int ldb ) {
     return clapack_cpotrs( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -95,9 +97,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const int n, const int nrhs,
- const std::complex<double>* a, const int lda, std::complex<double>* b,
- const int ldb ) {
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const int n,
+ const int nrhs, const std::complex<double>* a, const int lda,
+ std::complex<double>* b, const int ldb ) {
     return clapack_zpotrs( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -109,7 +111,7 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
         float* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -125,7 +127,7 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
         double* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -141,7 +143,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -158,7 +160,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t potrs( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t potrs( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppcon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,8 +54,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppcon( UpLo, const fortran_int_t n, const float* ap,
- const float anorm, float& rcond, float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t ppcon( const UpLo uplo, const fortran_int_t n,
+ const float* ap, const float anorm, float& rcond, float* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SPPCON( &lapack_option< UpLo >::value, &n, ap, &anorm, &rcond,
             work, iwork, &info );
@@ -68,8 +69,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppcon( UpLo, const fortran_int_t n, const double* ap,
- const double anorm, double& rcond, double* work,
+inline std::ptrdiff_t ppcon( const UpLo uplo, const fortran_int_t n,
+ const double* ap, const double anorm, double& rcond, double* work,
         fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DPPCON( &lapack_option< UpLo >::value, &n, ap, &anorm, &rcond,
@@ -83,7 +84,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppcon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppcon( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* ap, const float anorm, float& rcond,
         std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -98,7 +99,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppcon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppcon( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* ap, const double anorm, double& rcond,
         std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ppequ.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppequ( UpLo, const fortran_int_t n, const float* ap,
- float* s, float& scond, float& amax ) {
+inline std::ptrdiff_t ppequ( const UpLo uplo, const fortran_int_t n,
+ const float* ap, float* s, float& scond, float& amax ) {
     fortran_int_t info(0);
     LAPACK_SPPEQU( &lapack_option< UpLo >::value, &n, ap, s, &scond, &amax,
             &info );
@@ -66,8 +66,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppequ( UpLo, const fortran_int_t n, const double* ap,
- double* s, double& scond, double& amax ) {
+inline std::ptrdiff_t ppequ( const UpLo uplo, const fortran_int_t n,
+ const double* ap, double* s, double& scond, double& amax ) {
     fortran_int_t info(0);
     LAPACK_DPPEQU( &lapack_option< UpLo >::value, &n, ap, s, &scond, &amax,
             &info );
@@ -80,7 +80,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppequ( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppequ( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* ap, float* s, float& scond, float& amax ) {
     fortran_int_t info(0);
     LAPACK_CPPEQU( &lapack_option< UpLo >::value, &n, ap, s, &scond, &amax,
@@ -94,7 +94,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppequ( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppequ( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* ap, double* s, double& scond,
         double& amax ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* ap, const float* afp,
         const float* b, const fortran_int_t ldb, float* x,
         const fortran_int_t ldx, float* ferr, float* berr, float* work,
@@ -71,7 +71,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* ap, const double* afp,
         const double* b, const fortran_int_t ldb, double* x,
         const fortran_int_t ldx, double* ferr, double* berr, double* work,
@@ -88,7 +88,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* ap,
         const std::complex<float>* afp, const std::complex<float>* b,
         const fortran_int_t ldb, std::complex<float>* x,
@@ -106,7 +106,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* ap,
         const std::complex<double>* afp, const std::complex<double>* b,
         const fortran_int_t ldb, std::complex<double>* x,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,8 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrf( UpLo, const fortran_int_t n, float* ap ) {
+inline std::ptrdiff_t pptrf( const UpLo uplo, const fortran_int_t n,
+ float* ap ) {
     fortran_int_t info(0);
     LAPACK_SPPTRF( &lapack_option< UpLo >::value, &n, ap, &info );
     return info;
@@ -61,7 +62,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrf( UpLo, const fortran_int_t n, double* ap ) {
+inline std::ptrdiff_t pptrf( const UpLo uplo, const fortran_int_t n,
+ double* ap ) {
     fortran_int_t info(0);
     LAPACK_DPPTRF( &lapack_option< UpLo >::value, &n, ap, &info );
     return info;
@@ -73,7 +75,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptrf( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap ) {
     fortran_int_t info(0);
     LAPACK_CPPTRF( &lapack_option< UpLo >::value, &n, ap, &info );
@@ -86,7 +88,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptrf( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap ) {
     fortran_int_t info(0);
     LAPACK_ZPPTRF( &lapack_option< UpLo >::value, &n, ap, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,8 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptri( UpLo, const fortran_int_t n, float* ap ) {
+inline std::ptrdiff_t pptri( const UpLo uplo, const fortran_int_t n,
+ float* ap ) {
     fortran_int_t info(0);
     LAPACK_SPPTRI( &lapack_option< UpLo >::value, &n, ap, &info );
     return info;
@@ -61,7 +62,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptri( UpLo, const fortran_int_t n, double* ap ) {
+inline std::ptrdiff_t pptri( const UpLo uplo, const fortran_int_t n,
+ double* ap ) {
     fortran_int_t info(0);
     LAPACK_DPPTRI( &lapack_option< UpLo >::value, &n, ap, &info );
     return info;
@@ -73,7 +75,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptri( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap ) {
     fortran_int_t info(0);
     LAPACK_CPPTRI( &lapack_option< UpLo >::value, &n, ap, &info );
@@ -86,7 +88,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptri( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap ) {
     fortran_int_t info(0);
     LAPACK_ZPPTRI( &lapack_option< UpLo >::value, &n, ap, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* ap, float* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -64,7 +64,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* ap, double* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -79,7 +79,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* ap,
         std::complex<float>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -94,7 +94,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* ap,
         std::complex<double>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,11 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgst( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb, float* ab,
- const fortran_int_t ldab, const float* bb, const fortran_int_t ldbb,
- float* x, const fortran_int_t ldx, float* work ) {
+inline std::ptrdiff_t sbgst( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
+ float* ab, const fortran_int_t ldab, const float* bb,
+ const fortran_int_t ldbb, float* x, const fortran_int_t ldx,
+ float* work ) {
     fortran_int_t info(0);
     LAPACK_SSBGST( &vect, &lapack_option< UpLo >::value, &n, &ka, &kb, ab,
             &ldab, bb, &ldbb, x, &ldx, work, &info );
@@ -68,10 +69,11 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgst( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb, double* ab,
- const fortran_int_t ldab, const double* bb, const fortran_int_t ldbb,
- double* x, const fortran_int_t ldx, double* work ) {
+inline std::ptrdiff_t sbgst( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
+ double* ab, const fortran_int_t ldab, const double* bb,
+ const fortran_int_t ldbb, double* x, const fortran_int_t ldx,
+ double* work ) {
     fortran_int_t info(0);
     LAPACK_DSBGST( &vect, &lapack_option< UpLo >::value, &n, &ka, &kb, ab,
             &ldab, bb, &ldbb, x, &ldx, work, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,10 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbtrd( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t kd, float* ab, const fortran_int_t ldab, float* d,
- float* e, float* q, const fortran_int_t ldq, float* work ) {
+inline std::ptrdiff_t sbtrd( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd, float* ab,
+ const fortran_int_t ldab, float* d, float* e, float* q,
+ const fortran_int_t ldq, float* work ) {
     fortran_int_t info(0);
     LAPACK_SSBTRD( &vect, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
             d, e, q, &ldq, work, &info );
@@ -67,10 +68,10 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbtrd( const char vect, UpLo, const fortran_int_t n,
- const fortran_int_t kd, double* ab, const fortran_int_t ldab,
- double* d, double* e, double* q, const fortran_int_t ldq,
- double* work ) {
+inline std::ptrdiff_t sbtrd( const char vect, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd, double* ab,
+ const fortran_int_t ldab, double* d, double* e, double* q,
+ const fortran_int_t ldq, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSBTRD( &vect, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
             d, e, q, &ldq, work, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/spcon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,9 +54,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spcon( UpLo, const fortran_int_t n, const float* ap,
- const fortran_int_t* ipiv, const float anorm, float& rcond,
- float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t spcon( const UpLo uplo, const fortran_int_t n,
+ const float* ap, const fortran_int_t* ipiv, const float anorm,
+ float& rcond, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SSPCON( &lapack_option< UpLo >::value, &n, ap, ipiv, &anorm,
             &rcond, work, iwork, &info );
@@ -69,9 +69,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spcon( UpLo, const fortran_int_t n, const double* ap,
- const fortran_int_t* ipiv, const double anorm, double& rcond,
- double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t spcon( const UpLo uplo, const fortran_int_t n,
+ const double* ap, const fortran_int_t* ipiv, const double anorm,
+ double& rcond, double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DSPCON( &lapack_option< UpLo >::value, &n, ap, ipiv, &anorm,
             &rcond, work, iwork, &info );
@@ -84,7 +84,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spcon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t spcon( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* ap, const fortran_int_t* ipiv,
         const float anorm, float& rcond, std::complex<float>* work ) {
     fortran_int_t info(0);
@@ -99,7 +99,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spcon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t spcon( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* ap, const fortran_int_t* ipiv,
         const double anorm, double& rcond, std::complex<double>* work ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* ap, const float* afp,
         const fortran_int_t* ipiv, const float* b, const fortran_int_t ldb,
         float* x, const fortran_int_t ldx, float* ferr, float* berr,
@@ -71,7 +71,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* ap, const double* afp,
         const fortran_int_t* ipiv, const double* b, const fortran_int_t ldb,
         double* x, const fortran_int_t ldx, double* ferr, double* berr,
@@ -88,7 +88,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* ap,
         const std::complex<float>* afp, const fortran_int_t* ipiv,
         const std::complex<float>* b, const fortran_int_t ldb,
@@ -106,7 +106,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sprfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sprfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* ap,
         const std::complex<double>* afp, const fortran_int_t* ipiv,
         const std::complex<double>* b, const fortran_int_t ldb,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,8 +49,8 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrd( UpLo, const fortran_int_t n, float* ap, float* d,
- float* e, float* tau ) {
+inline std::ptrdiff_t sptrd( const UpLo uplo, const fortran_int_t n, float* ap,
+ float* d, float* e, float* tau ) {
     fortran_int_t info(0);
     LAPACK_SSPTRD( &lapack_option< UpLo >::value, &n, ap, d, e, tau, &info );
     return info;
@@ -62,8 +62,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrd( UpLo, const fortran_int_t n, double* ap,
- double* d, double* e, double* tau ) {
+inline std::ptrdiff_t sptrd( const UpLo uplo, const fortran_int_t n,
+ double* ap, double* d, double* e, double* tau ) {
     fortran_int_t info(0);
     LAPACK_DSPTRD( &lapack_option< UpLo >::value, &n, ap, d, e, tau, &info );
     return info;

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrf( UpLo, const fortran_int_t n, float* ap,
+inline std::ptrdiff_t sptrf( const UpLo uplo, const fortran_int_t n, float* ap,
         fortran_int_t* ipiv ) {
     fortran_int_t info(0);
     LAPACK_SSPTRF( &lapack_option< UpLo >::value, &n, ap, ipiv, &info );
@@ -62,8 +62,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrf( UpLo, const fortran_int_t n, double* ap,
- fortran_int_t* ipiv ) {
+inline std::ptrdiff_t sptrf( const UpLo uplo, const fortran_int_t n,
+ double* ap, fortran_int_t* ipiv ) {
     fortran_int_t info(0);
     LAPACK_DSPTRF( &lapack_option< UpLo >::value, &n, ap, ipiv, &info );
     return info;
@@ -75,7 +75,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptrf( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap, fortran_int_t* ipiv ) {
     fortran_int_t info(0);
     LAPACK_CSPTRF( &lapack_option< UpLo >::value, &n, ap, ipiv, &info );
@@ -88,7 +88,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptrf( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap, fortran_int_t* ipiv ) {
     fortran_int_t info(0);
     LAPACK_ZSPTRF( &lapack_option< UpLo >::value, &n, ap, ipiv, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptri( UpLo, const fortran_int_t n, float* ap,
+inline std::ptrdiff_t sptri( const UpLo uplo, const fortran_int_t n, float* ap,
         const fortran_int_t* ipiv, float* work ) {
     fortran_int_t info(0);
     LAPACK_SSPTRI( &lapack_option< UpLo >::value, &n, ap, ipiv, work, &info );
@@ -67,8 +67,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptri( UpLo, const fortran_int_t n, double* ap,
- const fortran_int_t* ipiv, double* work ) {
+inline std::ptrdiff_t sptri( const UpLo uplo, const fortran_int_t n,
+ double* ap, const fortran_int_t* ipiv, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSPTRI( &lapack_option< UpLo >::value, &n, ap, ipiv, work, &info );
     return info;
@@ -80,7 +80,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptri( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap, const fortran_int_t* ipiv,
         std::complex<float>* work ) {
     fortran_int_t info(0);
@@ -94,7 +94,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptri( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap, const fortran_int_t* ipiv,
         std::complex<double>* work ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* ap, const fortran_int_t* ipiv,
         float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -64,7 +64,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* ap, const fortran_int_t* ipiv,
         double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -79,7 +79,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* ap,
         const fortran_int_t* ipiv, std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -95,7 +95,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sptrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sptrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* ap,
         const fortran_int_t* ipiv, std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -215,8 +215,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
@@ -332,16 +333,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array rwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_rwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,9 +54,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sycon( UpLo, const fortran_int_t n, const float* a,
- const fortran_int_t lda, const fortran_int_t* ipiv, const float anorm,
- float& rcond, float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t sycon( const UpLo uplo, const fortran_int_t n,
+ const float* a, const fortran_int_t lda, const fortran_int_t* ipiv,
+ const float anorm, float& rcond, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SSYCON( &lapack_option< UpLo >::value, &n, a, &lda, ipiv, &anorm,
             &rcond, work, iwork, &info );
@@ -69,8 +69,8 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sycon( UpLo, const fortran_int_t n, const double* a,
- const fortran_int_t lda, const fortran_int_t* ipiv,
+inline std::ptrdiff_t sycon( const UpLo uplo, const fortran_int_t n,
+ const double* a, const fortran_int_t lda, const fortran_int_t* ipiv,
         const double anorm, double& rcond, double* work,
         fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -85,7 +85,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sycon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sycon( const UpLo uplo, const fortran_int_t n,
         const std::complex<float>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, const float anorm, float& rcond,
         std::complex<float>* work ) {
@@ -101,7 +101,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sycon( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sycon( const UpLo uplo, const fortran_int_t n,
         const std::complex<double>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, const double anorm, double& rcond,
         std::complex<double>* work ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sygst( const fortran_int_t itype, UpLo,
+inline std::ptrdiff_t sygst( const fortran_int_t itype, const UpLo uplo,
         const fortran_int_t n, float* a, const fortran_int_t lda,
         const float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -64,7 +64,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sygst( const fortran_int_t itype, UpLo,
+inline std::ptrdiff_t sygst( const fortran_int_t itype, const UpLo uplo,
         const fortran_int_t n, double* a, const fortran_int_t lda,
         const double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t syrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
         const float* af, const fortran_int_t ldaf, const fortran_int_t* ipiv,
         const float* b, const fortran_int_t ldb, float* x,
@@ -72,7 +72,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t syrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
         const double* af, const fortran_int_t ldaf, const fortran_int_t* ipiv,
         const double* b, const fortran_int_t ldb, double* x,
@@ -90,7 +90,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t syrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* af,
         const fortran_int_t ldaf, const fortran_int_t* ipiv,
@@ -109,7 +109,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syrfs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t syrfs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* af,
         const fortran_int_t ldaf, const fortran_int_t* ipiv,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrd( UpLo, const fortran_int_t n, float* a,
+inline std::ptrdiff_t sytrd( const UpLo uplo, const fortran_int_t n, float* a,
         const fortran_int_t lda, float* d, float* e, float* tau, float* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
@@ -67,7 +67,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrd( UpLo, const fortran_int_t n, double* a,
+inline std::ptrdiff_t sytrd( const UpLo uplo, const fortran_int_t n, double* a,
         const fortran_int_t lda, double* d, double* e, double* tau,
         double* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrf( UpLo, const fortran_int_t n, float* a,
+inline std::ptrdiff_t sytrf( const UpLo uplo, const fortran_int_t n, float* a,
         const fortran_int_t lda, fortran_int_t* ipiv, float* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
@@ -70,7 +70,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrf( UpLo, const fortran_int_t n, double* a,
+inline std::ptrdiff_t sytrf( const UpLo uplo, const fortran_int_t n, double* a,
         const fortran_int_t lda, fortran_int_t* ipiv, double* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
@@ -85,7 +85,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytrf( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda, fortran_int_t* ipiv,
         std::complex<float>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
@@ -100,7 +100,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrf( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytrf( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda, fortran_int_t* ipiv,
         std::complex<double>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,7 +54,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytri( UpLo, const fortran_int_t n, float* a,
+inline std::ptrdiff_t sytri( const UpLo uplo, const fortran_int_t n, float* a,
         const fortran_int_t lda, const fortran_int_t* ipiv, float* work ) {
     fortran_int_t info(0);
     LAPACK_SSYTRI( &lapack_option< UpLo >::value, &n, a, &lda, ipiv, work,
@@ -68,7 +68,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytri( UpLo, const fortran_int_t n, double* a,
+inline std::ptrdiff_t sytri( const UpLo uplo, const fortran_int_t n, double* a,
         const fortran_int_t lda, const fortran_int_t* ipiv, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSYTRI( &lapack_option< UpLo >::value, &n, a, &lda, ipiv, work,
@@ -82,7 +82,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytri( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, std::complex<float>* work ) {
     fortran_int_t info(0);
@@ -97,7 +97,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytri( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytri( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, std::complex<double>* work ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -64,7 +64,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
         const fortran_int_t* ipiv, double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -79,7 +79,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<float>* a,
         const fortran_int_t lda, const fortran_int_t* ipiv,
         std::complex<float>* b, const fortran_int_t ldb ) {
@@ -95,7 +95,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sytrs( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sytrs( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, const std::complex<double>* a,
         const fortran_int_t lda, const fortran_int_t* ipiv,
         std::complex<double>* b, const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -56,7 +56,7 @@
 // * float value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tbcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tbcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t kd, const float* ab,
         const fortran_int_t ldab, float& rcond, float* work,
         fortran_int_t* iwork ) {
@@ -72,7 +72,7 @@
 // * double value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tbcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tbcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t kd, const double* ab,
         const fortran_int_t ldab, double& rcond, double* work,
         fortran_int_t* iwork ) {
@@ -88,7 +88,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tbcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tbcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t kd,
         const std::complex<float>* ab, const fortran_int_t ldab, float& rcond,
         std::complex<float>* work, float* rwork ) {
@@ -104,7 +104,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tbcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tbcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const fortran_int_t kd,
         const std::complex<double>* ab, const fortran_int_t ldab,
         double& rcond, std::complex<double>* work, double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -57,11 +57,12 @@
 // * float value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs, const float* ab,
- const fortran_int_t ldab, const float* b, const fortran_int_t ldb,
- const float* x, const fortran_int_t ldx, float* ferr, float* berr,
- float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t tbrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const float* ab, const fortran_int_t ldab,
+ const float* b, const fortran_int_t ldb, const float* x,
+ const fortran_int_t ldx, float* ferr, float* berr, float* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_STBRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,
@@ -75,11 +76,12 @@
 // * double value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs, const double* ab,
- const fortran_int_t ldab, const double* b, const fortran_int_t ldb,
- const double* x, const fortran_int_t ldx, double* ferr, double* berr,
- double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t tbrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const double* ab, const fortran_int_t ldab,
+ const double* b, const fortran_int_t ldb, const double* x,
+ const fortran_int_t ldx, double* ferr, double* berr, double* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DTBRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,
@@ -93,12 +95,13 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs,
- const std::complex<float>* ab, const fortran_int_t ldab,
- const std::complex<float>* b, const fortran_int_t ldb,
- const std::complex<float>* x, const fortran_int_t ldx, float* ferr,
- float* berr, std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t tbrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const std::complex<float>* ab,
+ const fortran_int_t ldab, const std::complex<float>* b,
+ const fortran_int_t ldb, const std::complex<float>* x,
+ const fortran_int_t ldx, float* ferr, float* berr,
+ std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CTBRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,
@@ -112,12 +115,13 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs,
- const std::complex<double>* ab, const fortran_int_t ldab,
- const std::complex<double>* b, const fortran_int_t ldb,
- const std::complex<double>* x, const fortran_int_t ldx, double* ferr,
- double* berr, std::complex<double>* work, double* rwork ) {
+inline std::ptrdiff_t tbrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const std::complex<double>* ab,
+ const fortran_int_t ldab, const std::complex<double>* b,
+ const fortran_int_t ldb, const std::complex<double>* x,
+ const fortran_int_t ldx, double* ferr, double* berr,
+ std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZTBRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,10 @@
 // * float value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs, const float* ab,
- const fortran_int_t ldab, float* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t tbtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const float* ab, const fortran_int_t ldab,
+ float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_STBTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,
@@ -68,9 +69,10 @@
 // * double value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs, const double* ab,
- const fortran_int_t ldab, double* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t tbtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const double* ab, const fortran_int_t ldab,
+ double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_DTBTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,
@@ -84,10 +86,11 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs,
- const std::complex<float>* ab, const fortran_int_t ldab,
- std::complex<float>* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t tbtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const std::complex<float>* ab,
+ const fortran_int_t ldab, std::complex<float>* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_CTBTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,
@@ -101,10 +104,11 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tbtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs,
- const std::complex<double>* ab, const fortran_int_t ldab,
- std::complex<double>* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t tbtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, const std::complex<double>* ab,
+ const fortran_int_t ldab, std::complex<double>* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_ZTBTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &kd, &nrhs, ab,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,15 +52,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t tgevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t tgevc( const Side side, const char howmny,
         const logical_t* select, const fortran_int_t n, const float* s,
         const fortran_int_t lds, const float* p, const fortran_int_t ldp,
         float* vl, const fortran_int_t ldvl, float* vr,
         const fortran_int_t ldvr, const fortran_int_t mm, fortran_int_t& m,
         float* work ) {
     fortran_int_t info(0);
- LAPACK_STGEVC( &side, &howmny, select, &n, s, &lds, p, &ldp, vl, &ldvl,
- vr, &ldvr, &mm, &m, work, &info );
+ LAPACK_STGEVC( &lapack_option< Side >::value, &howmny, select, &n, s,
+ &lds, p, &ldp, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info );
     return info;
 }
 
@@ -69,15 +70,16 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t tgevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t tgevc( const Side side, const char howmny,
         const logical_t* select, const fortran_int_t n, const double* s,
         const fortran_int_t lds, const double* p, const fortran_int_t ldp,
         double* vl, const fortran_int_t ldvl, double* vr,
         const fortran_int_t ldvr, const fortran_int_t mm, fortran_int_t& m,
         double* work ) {
     fortran_int_t info(0);
- LAPACK_DTGEVC( &side, &howmny, select, &n, s, &lds, p, &ldp, vl, &ldvl,
- vr, &ldvr, &mm, &m, work, &info );
+ LAPACK_DTGEVC( &lapack_option< Side >::value, &howmny, select, &n, s,
+ &lds, p, &ldp, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info );
     return info;
 }
 
@@ -86,7 +88,8 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t tgevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t tgevc( const Side side, const char howmny,
         const logical_t* select, const fortran_int_t n,
         const std::complex<float>* s, const fortran_int_t lds,
         const std::complex<float>* p, const fortran_int_t ldp,
@@ -95,8 +98,8 @@
         const fortran_int_t mm, fortran_int_t& m, std::complex<float>* work,
         float* rwork ) {
     fortran_int_t info(0);
- LAPACK_CTGEVC( &side, &howmny, select, &n, s, &lds, p, &ldp, vl, &ldvl,
- vr, &ldvr, &mm, &m, work, rwork, &info );
+ LAPACK_CTGEVC( &lapack_option< Side >::value, &howmny, select, &n, s,
+ &lds, p, &ldp, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info );
     return info;
 }
 
@@ -105,7 +108,8 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t tgevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t tgevc( const Side side, const char howmny,
         const logical_t* select, const fortran_int_t n,
         const std::complex<double>* s, const fortran_int_t lds,
         const std::complex<double>* p, const fortran_int_t ldp,
@@ -114,8 +118,8 @@
         const fortran_int_t mm, fortran_int_t& m, std::complex<double>* work,
         double* rwork ) {
     fortran_int_t info(0);
- LAPACK_ZTGEVC( &side, &howmny, select, &n, s, &lds, p, &ldp, vl, &ldvl,
- vr, &ldvr, &mm, &m, work, rwork, &info );
+ LAPACK_ZTGEVC( &lapack_option< Side >::value, &howmny, select, &n, s,
+ &lds, p, &ldp, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info );
     return info;
 }
 
@@ -143,9 +147,10 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR, typename WORK >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR,
+ typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, const MatrixS& s, const MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
             fortran_int_t& m, detail::workspace1< WORK > work ) {
@@ -180,7 +185,6 @@
         BOOST_ASSERT( bindings::stride_major(s) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_column(s)) );
         BOOST_ASSERT( howmny == 'A' || howmny == 'B' || howmny == 'S' );
- BOOST_ASSERT( side == 'R' || side == 'L' || side == 'B' );
         return detail::tgevc( side, howmny, bindings::begin_value(select),
                 bindings::size_column(s), bindings::begin_value(s),
                 bindings::stride_major(s), bindings::begin_value(p),
@@ -197,9 +201,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, const MatrixS& s, const MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
             fortran_int_t& m, minimal_workspace work ) {
@@ -217,9 +221,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, const MatrixS& s, const MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
             fortran_int_t& m, optimal_workspace work ) {
@@ -252,10 +256,10 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR, typename WORK,
- typename RWORK >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR,
+ typename WORK, typename RWORK >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, const MatrixS& s, const MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
             fortran_int_t& m, detail::workspace2< WORK, RWORK > work ) {
@@ -292,7 +296,6 @@
         BOOST_ASSERT( bindings::stride_major(s) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_column(s)) );
         BOOST_ASSERT( howmny == 'A' || howmny == 'B' || howmny == 'S' );
- BOOST_ASSERT( side == 'R' || side == 'L' || side == 'B' );
         return detail::tgevc( side, howmny, bindings::begin_value(select),
                 bindings::size_column(s), bindings::begin_value(s),
                 bindings::stride_major(s), bindings::begin_value(p),
@@ -310,9 +313,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, const MatrixS& s, const MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
             fortran_int_t& m, minimal_workspace work ) {
@@ -332,9 +335,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, const MatrixS& s, const MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
             fortran_int_t& m, optimal_workspace work ) {
@@ -376,11 +379,12 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return tgevc_impl< typename bindings::value_type<
@@ -394,11 +398,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return tgevc_impl< typename bindings::value_type<
@@ -412,11 +416,12 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return tgevc_impl< typename bindings::value_type<
@@ -430,11 +435,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return tgevc_impl< typename bindings::value_type<
@@ -448,11 +453,12 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return tgevc_impl< typename bindings::value_type<
@@ -466,11 +472,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return tgevc_impl< typename bindings::value_type<
@@ -484,11 +490,12 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR,
+ typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, const MatrixVL& vl,
         const MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
         Workspace work ) {
@@ -503,11 +510,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixS, typename MatrixP,
- typename MatrixVL, typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixS,
+ typename MatrixP, typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-tgevc( const char side, const char howmny, const VectorSELECT& select,
+tgevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixS& s, const MatrixP& p, const MatrixVL& vl,
         const MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -304,16 +304,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array iwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_iwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -468,16 +470,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array iwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_iwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -272,16 +272,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array iwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_iwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -408,16 +410,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array iwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_iwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t tgsyl( Trans, const fortran_int_t ijob,
+inline std::ptrdiff_t tgsyl( const Trans trans, const fortran_int_t ijob,
         const fortran_int_t m, const fortran_int_t n, const float* a,
         const fortran_int_t lda, const float* b, const fortran_int_t ldb,
         float* c, const fortran_int_t ldc, const float* d,
@@ -75,7 +75,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t tgsyl( Trans, const fortran_int_t ijob,
+inline std::ptrdiff_t tgsyl( const Trans trans, const fortran_int_t ijob,
         const fortran_int_t m, const fortran_int_t n, const double* a,
         const fortran_int_t lda, const double* b, const fortran_int_t ldb,
         double* c, const fortran_int_t ldc, const double* d,
@@ -95,7 +95,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t tgsyl( Trans, const fortran_int_t ijob,
+inline std::ptrdiff_t tgsyl( const Trans trans, const fortran_int_t ijob,
         const fortran_int_t m, const fortran_int_t n,
         const std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* b, const fortran_int_t ldb,
@@ -118,7 +118,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t tgsyl( Trans, const fortran_int_t ijob,
+inline std::ptrdiff_t tgsyl( const Trans trans, const fortran_int_t ijob,
         const fortran_int_t m, const fortran_int_t n,
         const std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* b, const fortran_int_t ldb,
@@ -282,8 +282,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
@@ -434,8 +435,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tpcon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tpcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tpcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const float* ap, float& rcond, float* work,
         fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -70,7 +70,7 @@
 // * double value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tpcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tpcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const double* ap, double& rcond, double* work,
         fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -85,7 +85,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tpcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tpcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const std::complex<float>* ap, float& rcond,
         std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -100,7 +100,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tpcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t tpcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const std::complex<double>* ap, double& rcond,
         std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -56,10 +56,11 @@
 // * float value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tprfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const float* ap, const float* b,
- const fortran_int_t ldb, const float* x, const fortran_int_t ldx,
- float* ferr, float* berr, float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t tprfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const float* ap, const float* b, const fortran_int_t ldb,
+ const float* x, const fortran_int_t ldx, float* ferr, float* berr,
+ float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_STPRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,
@@ -73,10 +74,11 @@
 // * double value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tprfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const double* ap, const double* b,
- const fortran_int_t ldb, const double* x, const fortran_int_t ldx,
- double* ferr, double* berr, double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t tprfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const double* ap, const double* b, const fortran_int_t ldb,
+ const double* x, const fortran_int_t ldx, double* ferr, double* berr,
+ double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DTPRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,
@@ -90,11 +92,12 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tprfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* ap,
- const std::complex<float>* b, const fortran_int_t ldb,
- const std::complex<float>* x, const fortran_int_t ldx, float* ferr,
- float* berr, std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t tprfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* ap, const std::complex<float>* b,
+ const fortran_int_t ldb, const std::complex<float>* x,
+ const fortran_int_t ldx, float* ferr, float* berr,
+ std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CTPRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,
@@ -108,11 +111,12 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tprfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* ap,
- const std::complex<double>* b, const fortran_int_t ldb,
- const std::complex<double>* x, const fortran_int_t ldx, double* ferr,
- double* berr, std::complex<double>* work, double* rwork ) {
+inline std::ptrdiff_t tprfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* ap, const std::complex<double>* b,
+ const fortran_int_t ldb, const std::complex<double>* x,
+ const fortran_int_t ldx, double* ferr, double* berr,
+ std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZTPRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,7 +50,8 @@
 // * float value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tptri( UpLo, Diag, const fortran_int_t n, float* ap ) {
+inline std::ptrdiff_t tptri( const UpLo uplo, const Diag diag,
+ const fortran_int_t n, float* ap ) {
     fortran_int_t info(0);
     LAPACK_STPTRI( &lapack_option< UpLo >::value, &lapack_option<
             Diag >::value, &n, ap, &info );
@@ -63,7 +64,8 @@
 // * double value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tptri( UpLo, Diag, const fortran_int_t n, double* ap ) {
+inline std::ptrdiff_t tptri( const UpLo uplo, const Diag diag,
+ const fortran_int_t n, double* ap ) {
     fortran_int_t info(0);
     LAPACK_DTPTRI( &lapack_option< UpLo >::value, &lapack_option<
             Diag >::value, &n, ap, &info );
@@ -76,8 +78,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tptri( UpLo, Diag, const fortran_int_t n,
- std::complex<float>* ap ) {
+inline std::ptrdiff_t tptri( const UpLo uplo, const Diag diag,
+ const fortran_int_t n, std::complex<float>* ap ) {
     fortran_int_t info(0);
     LAPACK_CTPTRI( &lapack_option< UpLo >::value, &lapack_option<
             Diag >::value, &n, ap, &info );
@@ -90,8 +92,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t tptri( UpLo, Diag, const fortran_int_t n,
- std::complex<double>* ap ) {
+inline std::ptrdiff_t tptri( const UpLo uplo, const Diag diag,
+ const fortran_int_t n, std::complex<double>* ap ) {
     fortran_int_t info(0);
     LAPACK_ZTPTRI( &lapack_option< UpLo >::value, &lapack_option<
             Diag >::value, &n, ap, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,9 +51,9 @@
 // * float value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tptrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const float* ap, float* b,
- const fortran_int_t ldb ) {
+inline std::ptrdiff_t tptrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const float* ap, float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_STPTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,
@@ -67,9 +67,9 @@
 // * double value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tptrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const double* ap, double* b,
- const fortran_int_t ldb ) {
+inline std::ptrdiff_t tptrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const double* ap, double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_DTPTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,
@@ -83,9 +83,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tptrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* ap,
- std::complex<float>* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t tptrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* ap, std::complex<float>* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_CTPTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,
@@ -99,9 +100,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t tptrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* ap,
- std::complex<double>* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t tptrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* ap, std::complex<double>* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_ZTPTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, ap, b,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t trcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t trcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const float* a, const fortran_int_t lda,
         float& rcond, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -70,7 +70,7 @@
 // * double value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t trcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t trcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const double* a, const fortran_int_t lda,
         double& rcond, double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -85,7 +85,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t trcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t trcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const std::complex<float>* a,
         const fortran_int_t lda, float& rcond, std::complex<float>* work,
         float* rwork ) {
@@ -101,7 +101,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Diag >
-inline std::ptrdiff_t trcon( const char norm, UpLo, Diag,
+inline std::ptrdiff_t trcon( const char norm, const UpLo uplo, const Diag diag,
         const fortran_int_t n, const std::complex<double>* a,
         const fortran_int_t lda, double& rcond, std::complex<double>* work,
         double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,14 +52,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * float value-type.
 //
-inline std::ptrdiff_t trevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t trevc( const Side side, const char howmny,
         logical_t* select, const fortran_int_t n, const float* t,
         const fortran_int_t ldt, float* vl, const fortran_int_t ldvl,
         float* vr, const fortran_int_t ldvr, const fortran_int_t mm,
         fortran_int_t& m, float* work ) {
     fortran_int_t info(0);
- LAPACK_STREVC( &side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr,
- &mm, &m, work, &info );
+ LAPACK_STREVC( &lapack_option< Side >::value, &howmny, select, &n, t,
+ &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info );
     return info;
 }
 
@@ -68,14 +69,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * double value-type.
 //
-inline std::ptrdiff_t trevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t trevc( const Side side, const char howmny,
         logical_t* select, const fortran_int_t n, const double* t,
         const fortran_int_t ldt, double* vl, const fortran_int_t ldvl,
         double* vr, const fortran_int_t ldvr, const fortran_int_t mm,
         fortran_int_t& m, double* work ) {
     fortran_int_t info(0);
- LAPACK_DTREVC( &side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr,
- &mm, &m, work, &info );
+ LAPACK_DTREVC( &lapack_option< Side >::value, &howmny, select, &n, t,
+ &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, &info );
     return info;
 }
 
@@ -84,7 +86,8 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-inline std::ptrdiff_t trevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t trevc( const Side side, const char howmny,
         const logical_t* select, const fortran_int_t n,
         std::complex<float>* t, const fortran_int_t ldt,
         std::complex<float>* vl, const fortran_int_t ldvl,
@@ -92,8 +95,8 @@
         const fortran_int_t mm, fortran_int_t& m, std::complex<float>* work,
         float* rwork ) {
     fortran_int_t info(0);
- LAPACK_CTREVC( &side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr,
- &mm, &m, work, rwork, &info );
+ LAPACK_CTREVC( &lapack_option< Side >::value, &howmny, select, &n, t,
+ &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info );
     return info;
 }
 
@@ -102,7 +105,8 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-inline std::ptrdiff_t trevc( const char side, const char howmny,
+template< typename Side >
+inline std::ptrdiff_t trevc( const Side side, const char howmny,
         const logical_t* select, const fortran_int_t n,
         std::complex<double>* t, const fortran_int_t ldt,
         std::complex<double>* vl, const fortran_int_t ldvl,
@@ -110,8 +114,8 @@
         const fortran_int_t mm, fortran_int_t& m, std::complex<double>* work,
         double* rwork ) {
     fortran_int_t info(0);
- LAPACK_ZTREVC( &side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr,
- &mm, &m, work, rwork, &info );
+ LAPACK_ZTREVC( &lapack_option< Side >::value, &howmny, select, &n, t,
+ &ldt, vl, &ldvl, vr, &ldvr, &mm, &m, work, rwork, &info );
     return info;
 }
 
@@ -139,9 +143,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename WORK >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             VectorSELECT& select, const MatrixT& t, MatrixVL& vl,
             MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
             detail::workspace1< WORK > work ) {
@@ -169,7 +173,6 @@
         BOOST_ASSERT( bindings::stride_major(t) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_column(t)) );
         BOOST_ASSERT( howmny == 'A' || howmny == 'B' || howmny == 'S' );
- BOOST_ASSERT( side == 'R' || side == 'L' || side == 'B' );
         return detail::trevc( side, howmny, bindings::begin_value(select),
                 bindings::size_column(t), bindings::begin_value(t),
                 bindings::stride_major(t), bindings::begin_value(vl),
@@ -185,9 +188,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             VectorSELECT& select, const MatrixT& t, MatrixVL& vl,
             MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
             minimal_workspace work ) {
@@ -205,9 +208,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             VectorSELECT& select, const MatrixT& t, MatrixVL& vl,
             MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
             optimal_workspace work ) {
@@ -240,9 +243,10 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename WORK, typename RWORK >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename WORK,
+ typename RWORK >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, MatrixT& t, MatrixVL& vl,
             MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
             detail::workspace2< WORK, RWORK > work ) {
@@ -272,7 +276,6 @@
         BOOST_ASSERT( bindings::stride_major(t) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_column(t)) );
         BOOST_ASSERT( howmny == 'A' || howmny == 'B' || howmny == 'S' );
- BOOST_ASSERT( side == 'R' || side == 'L' || side == 'B' );
         return detail::trevc( side, howmny, bindings::begin_value(select),
                 bindings::size_column(t), bindings::begin_value(t),
                 bindings::stride_major(t), bindings::begin_value(vl),
@@ -289,9 +292,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, MatrixT& t, MatrixVL& vl,
             MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
             minimal_workspace work ) {
@@ -311,9 +314,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
- static std::ptrdiff_t invoke( const char side, const char howmny,
+ template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
+ static std::ptrdiff_t invoke( const Side side, const char howmny,
             const VectorSELECT& select, MatrixT& t, MatrixVL& vl,
             MatrixVR& vr, const fortran_int_t mm, fortran_int_t& m,
             optimal_workspace work ) {
@@ -357,11 +360,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -377,11 +380,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -397,11 +400,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -417,11 +420,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, MatrixVR& vr, const fortran_int_t mm,
         fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -437,11 +440,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -457,11 +460,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -477,11 +480,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -497,11 +500,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -517,11 +520,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -537,11 +540,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -557,11 +560,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -577,11 +580,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -597,11 +600,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -617,11 +620,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -637,11 +640,11 @@
 // * MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -657,11 +660,11 @@
 // * MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -677,11 +680,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -697,11 +700,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -717,11 +720,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -737,11 +740,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -757,11 +760,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -777,11 +780,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -797,11 +800,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -817,11 +820,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -837,11 +840,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -857,11 +860,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -877,11 +880,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -897,11 +900,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -917,11 +920,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -937,11 +940,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, VectorSELECT& select,
+trevc( const Side side, const char howmny, VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<
@@ -957,11 +960,11 @@
 // * const MatrixVR&
 // * User-defined workspace
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR, typename Workspace >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m, Workspace work ) {
     return trevc_impl< typename bindings::value_type<
@@ -977,11 +980,11 @@
 // * const MatrixVR&
 // * Default workspace-type (optimal)
 //
-template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
- typename MatrixVR >
+template< typename Side, typename VectorSELECT, typename MatrixT,
+ typename MatrixVL, typename MatrixVR >
 inline typename boost::disable_if< detail::is_workspace< MatrixVR >,
         std::ptrdiff_t >::type
-trevc( const char side, const char howmny, const VectorSELECT& select,
+trevc( const Side side, const char howmny, const VectorSELECT& select,
         const MatrixT& t, const MatrixVL& vl, const MatrixVR& vr,
         const fortran_int_t mm, fortran_int_t& m ) {
     return trevc_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -56,11 +56,11 @@
 // * float value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
- const float* b, const fortran_int_t ldb, const float* x,
- const fortran_int_t ldx, float* ferr, float* berr, float* work,
- fortran_int_t* iwork ) {
+inline std::ptrdiff_t trrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const float* a, const fortran_int_t lda, const float* b,
+ const fortran_int_t ldb, const float* x, const fortran_int_t ldx,
+ float* ferr, float* berr, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_STRRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,
@@ -74,11 +74,11 @@
 // * double value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
- const double* b, const fortran_int_t ldb, const double* x,
- const fortran_int_t ldx, double* ferr, double* berr, double* work,
- fortran_int_t* iwork ) {
+inline std::ptrdiff_t trrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const double* a, const fortran_int_t lda, const double* b,
+ const fortran_int_t ldb, const double* x, const fortran_int_t ldx,
+ double* ferr, double* berr, double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DTRRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,
@@ -92,12 +92,12 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* a,
- const fortran_int_t lda, const std::complex<float>* b,
- const fortran_int_t ldb, const std::complex<float>* x,
- const fortran_int_t ldx, float* ferr, float* berr,
- std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t trrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* a, const fortran_int_t lda,
+ const std::complex<float>* b, const fortran_int_t ldb,
+ const std::complex<float>* x, const fortran_int_t ldx, float* ferr,
+ float* berr, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CTRRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,
@@ -111,12 +111,12 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trrfs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* a,
- const fortran_int_t lda, const std::complex<double>* b,
- const fortran_int_t ldb, const std::complex<double>* x,
- const fortran_int_t ldx, double* ferr, double* berr,
- std::complex<double>* work, double* rwork ) {
+inline std::ptrdiff_t trrfs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* a, const fortran_int_t lda,
+ const std::complex<double>* b, const fortran_int_t ldb,
+ const std::complex<double>* x, const fortran_int_t ldx, double* ferr,
+ double* berr, std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZTRRFS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -186,8 +186,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -240,16 +240,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array iwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_iwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -362,16 +364,18 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array rwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_rwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -59,8 +59,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const int n, float* a,
- const int lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const int n, float* a, const int lda ) {
     return clapack_strtri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, clapack_option< Diag >::value, n, a, lda );
 }
@@ -71,8 +71,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const int n, double* a,
- const int lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const int n, double* a, const int lda ) {
     return clapack_dtrtri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, clapack_option< Diag >::value, n, a, lda );
 }
@@ -83,8 +83,8 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const int n,
- std::complex<float>* a, const int lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const int n, std::complex<float>* a, const int lda ) {
     return clapack_ctrtri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, clapack_option< Diag >::value, n, a, lda );
 }
@@ -95,8 +95,8 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const int n,
- std::complex<double>* a, const int lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const int n, std::complex<double>* a, const int lda ) {
     return clapack_ztrtri( clapack_option< Order >::value, clapack_option<
             UpLo >::value, clapack_option< Diag >::value, n, a, lda );
 }
@@ -108,8 +108,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const fortran_int_t n,
- float* a, const fortran_int_t lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const fortran_int_t n, float* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_STRTRI( &lapack_option< UpLo >::value, &lapack_option<
@@ -123,8 +123,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const fortran_int_t n,
- double* a, const fortran_int_t lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const fortran_int_t n, double* a, const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_DTRTRI( &lapack_option< UpLo >::value, &lapack_option<
@@ -138,8 +138,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const fortran_int_t n,
- std::complex<float>* a, const fortran_int_t lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const fortran_int_t n, std::complex<float>* a,
+ const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_CTRTRI( &lapack_option< UpLo >::value, &lapack_option<
@@ -153,8 +154,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo, typename Diag >
-inline std::ptrdiff_t trtri( Order, UpLo, Diag, const fortran_int_t n,
- std::complex<double>* a, const fortran_int_t lda ) {
+inline std::ptrdiff_t trtri( Order, const UpLo uplo, const Diag diag,
+ const fortran_int_t n, std::complex<double>* a,
+ const fortran_int_t lda ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
     fortran_int_t info(0);
     LAPACK_ZTRTRI( &lapack_option< UpLo >::value, &lapack_option<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,9 +51,10 @@
 // * float value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
- float* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t trtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const float* a, const fortran_int_t lda, float* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_STRTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,
@@ -67,9 +68,10 @@
 // * double value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
- double* b, const fortran_int_t ldb ) {
+inline std::ptrdiff_t trtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const double* a, const fortran_int_t lda, double* b,
+ const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_DTRTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,
@@ -83,10 +85,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* b,
- const fortran_int_t ldb ) {
+inline std::ptrdiff_t trtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_CTRTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,
@@ -100,10 +102,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo, typename Trans, typename Diag >
-inline std::ptrdiff_t trtrs( UpLo, Trans, Diag, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* b,
- const fortran_int_t ldb ) {
+inline std::ptrdiff_t trtrs( const UpLo uplo, const Trans trans,
+ const Diag diag, const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
     LAPACK_ZTRTRS( &lapack_option< UpLo >::value, &lapack_option<
             Trans >::value, &lapack_option< Diag >::value, &n, &nrhs, a, &lda,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -192,8 +192,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -278,8 +279,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -158,8 +158,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -52,7 +53,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ungtr( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ungtr( const UpLo uplo, const fortran_int_t n,
         std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* tau, std::complex<float>* work,
         const fortran_int_t lwork ) {
@@ -68,7 +69,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ungtr( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ungtr( const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* tau, std::complex<double>* work,
         const fortran_int_t lwork ) {
@@ -161,12 +162,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const std::ptrdiff_t side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,16 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmbr( const char vect, const char side, Trans,
- const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float>* tau, std::complex<float>* c,
- const fortran_int_t ldc, std::complex<float>* work,
- const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmbr( const char vect, const Side side,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const fortran_int_t k, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float>* tau,
+ std::complex<float>* c, const fortran_int_t ldc,
+ std::complex<float>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMBR( &vect, &side, &lapack_option< Trans >::value, &m, &n, &k,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMBR( &vect, &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -69,16 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmbr( const char vect, const char side, Trans,
- const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double>* tau, std::complex<double>* c,
- const fortran_int_t ldc, std::complex<double>* work,
- const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmbr( const char vect, const Side side,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
+ const fortran_int_t k, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double>* tau,
+ std::complex<double>* c, const fortran_int_t ldc,
+ std::complex<double>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMBR( &vect, &side, &lapack_option< Trans >::value, &m, &n, &k,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMBR( &vect, &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -100,9 +103,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char vect, const char side,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const char vect, const Side side,
             const fortran_int_t k, const MatrixA& a, const VectorTAU& tau,
             MatrixC& c, detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -130,7 +133,6 @@
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
         BOOST_ASSERT( k >= 0 );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         BOOST_ASSERT( vect == 'Q' || vect == 'P' );
         return detail::unmbr( vect, side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
@@ -147,8 +149,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char vect, const char side,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const char vect, const Side side,
             const fortran_int_t k, const MatrixA& a, const VectorTAU& tau,
             MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -165,8 +168,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char vect, const char side,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const char vect, const Side side,
             const fortran_int_t k, const MatrixA& a, const VectorTAU& tau,
             MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -186,12 +190,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -210,11 +213,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmbr( const char vect, const char side, const fortran_int_t k,
+unmbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return unmbr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( vect, side, k, a, tau, c, work );
@@ -225,10 +228,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmbr( const char vect, const char side, const fortran_int_t k,
+unmbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, MatrixC& c ) {
     return unmbr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( vect, side, k, a, tau, c,
@@ -240,11 +244,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmbr( const char vect, const char side, const fortran_int_t k,
+unmbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, const MatrixC& c,
         Workspace work ) {
     return unmbr_impl< typename bindings::value_type<
@@ -256,10 +260,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmbr( const char vect, const char side, const fortran_int_t k,
+unmbr( const char vect, const Side side, const fortran_int_t k,
         const MatrixA& a, const VectorTAU& tau, const MatrixC& c ) {
     return unmbr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( vect, side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,16 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmhr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t ilo,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmhr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const std::complex<float>* a,
         const fortran_int_t lda, const std::complex<float>* tau,
         std::complex<float>* c, const fortran_int_t ldc,
         std::complex<float>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMHR( &side, &lapack_option< Trans >::value, &m, &n, &ilo, &ihi,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMHR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -69,16 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmhr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t ilo,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmhr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t ilo,
         const fortran_int_t ihi, const std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* tau,
         std::complex<double>* c, const fortran_int_t ldc,
         std::complex<double>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMHR( &side, &lapack_option< Trans >::value, &m, &n, &ilo, &ihi,
- a, &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMHR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &ilo, &ihi, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -100,9 +103,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t ilo,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t ilo,
             const fortran_int_t ihi, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
@@ -128,7 +131,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmhr( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), ilo, ihi, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -144,8 +146,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t ilo,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t ilo,
             const fortran_int_t ihi, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -162,8 +165,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t ilo,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t ilo,
             const fortran_int_t ihi, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -183,12 +187,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -207,11 +210,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmhr( const char side, const fortran_int_t ilo,
+unmhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c, Workspace work ) {
     return unmhr_impl< typename bindings::value_type<
@@ -223,10 +226,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmhr( const char side, const fortran_int_t ilo,
+unmhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c ) {
     return unmhr_impl< typename bindings::value_type<
@@ -239,11 +243,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmhr( const char side, const fortran_int_t ilo,
+unmhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c, Workspace work ) {
     return unmhr_impl< typename bindings::value_type<
@@ -255,10 +259,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmhr( const char side, const fortran_int_t ilo,
+unmhr( const Side side, const fortran_int_t ilo,
         const fortran_int_t ihi, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c ) {
     return unmhr_impl< typename bindings::value_type<

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,16 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmlq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmlq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMLQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMLQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -69,16 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmlq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmlq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMLQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMLQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -100,9 +103,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -130,7 +133,6 @@
                 k) );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmlq( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -146,8 +148,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -164,8 +167,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -185,12 +189,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -209,11 +212,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmlq( const char side, const fortran_int_t k, const MatrixA& a,
+unmlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return unmlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -224,10 +227,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmlq( const char side, const fortran_int_t k, const MatrixA& a,
+unmlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return unmlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -239,11 +243,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmlq( const char side, const fortran_int_t k, const MatrixA& a,
+unmlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return unmlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -254,10 +258,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmlq( const char side, const fortran_int_t k, const MatrixA& a,
+unmlq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return unmlq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,16 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmql( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmql( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMQL( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMQL( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -69,16 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmql( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmql( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMQL( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMQL( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -100,9 +103,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -128,7 +131,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmql( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -144,8 +146,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -162,8 +165,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -183,12 +187,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -207,11 +210,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmql( const char side, const fortran_int_t k, const MatrixA& a,
+unmql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return unmql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -222,10 +225,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmql( const char side, const fortran_int_t k, const MatrixA& a,
+unmql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return unmql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -237,11 +241,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmql( const char side, const fortran_int_t k, const MatrixA& a,
+unmql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return unmql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -252,10 +256,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmql( const char side, const fortran_int_t k, const MatrixA& a,
+unmql( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return unmql_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,16 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmqr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmqr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMQR( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMQR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -69,16 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmqr( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmqr( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMQR( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMQR( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -100,9 +103,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -128,7 +131,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmqr( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::size(tau),
                 bindings::begin_value(a), bindings::stride_major(a),
@@ -145,8 +147,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -162,8 +165,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -182,12 +186,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -206,11 +209,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmqr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c, Workspace work ) {
     return unmqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -221,10 +224,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmqr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c ) {
     return unmqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );
@@ -235,11 +239,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmqr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c, Workspace work ) {
     return unmqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -250,10 +254,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmqr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmqr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c ) {
     return unmqr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -51,16 +52,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmrq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmrq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMRQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMRQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -69,16 +71,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmrq( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmrq( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
         const std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMRQ( &side, &lapack_option< Trans >::value, &m, &n, &k, a, &lda,
- tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMRQ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork,
+ &info );
     return info;
 }
 
@@ -100,9 +103,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -130,7 +133,6 @@
                 k) );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmrq( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -146,8 +148,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -164,8 +167,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -185,12 +189,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -209,11 +212,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmrq( const char side, const fortran_int_t k, const MatrixA& a,
+unmrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return unmrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -224,10 +227,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmrq( const char side, const fortran_int_t k, const MatrixA& a,
+unmrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return unmrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -239,11 +243,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmrq( const char side, const fortran_int_t k, const MatrixA& a,
+unmrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return unmrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -254,10 +258,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmrq( const char side, const fortran_int_t k, const MatrixA& a,
+unmrq( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return unmrq_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,16 +51,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmrz( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const fortran_int_t l,
- const std::complex<float>* a, const fortran_int_t lda,
- const std::complex<float>* tau, std::complex<float>* c,
- const fortran_int_t ldc, std::complex<float>* work,
- const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmrz( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const fortran_int_t l, const std::complex<float>* a,
+ const fortran_int_t lda, const std::complex<float>* tau,
+ std::complex<float>* c, const fortran_int_t ldc,
+ std::complex<float>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMRZ( &side, &lapack_option< Trans >::value, &m, &n, &k, &l, a,
- &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_CUNMRZ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -69,16 +70,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t unmrz( const char side, Trans, const fortran_int_t m,
- const fortran_int_t n, const fortran_int_t k, const fortran_int_t l,
- const std::complex<double>* a, const fortran_int_t lda,
- const std::complex<double>* tau, std::complex<double>* c,
- const fortran_int_t ldc, std::complex<double>* work,
- const fortran_int_t lwork ) {
+template< typename Side, typename Trans >
+inline std::ptrdiff_t unmrz( const Side side, const Trans trans,
+ const fortran_int_t m, const fortran_int_t n, const fortran_int_t k,
+ const fortran_int_t l, const std::complex<double>* a,
+ const fortran_int_t lda, const std::complex<double>* tau,
+ std::complex<double>* c, const fortran_int_t ldc,
+ std::complex<double>* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMRZ( &side, &lapack_option< Trans >::value, &m, &n, &k, &l, a,
- &lda, tau, c, &ldc, work, &lwork, &info );
+ LAPACK_ZUNMRZ( &lapack_option< Side >::value, &lapack_option<
+ Trans >::value, &m, &n, &k, &l, a, &lda, tau, c, &ldc, work,
+ &lwork, &info );
     return info;
 }
 
@@ -100,9 +102,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -129,7 +131,6 @@
                 k) );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmrz( side, trans(), bindings::size_row(c),
                 bindings::size_column(c), k, bindings::size_column_op(a,
                 trans()), bindings::begin_value(a), bindings::stride_major(a),
@@ -146,8 +147,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -164,8 +166,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const fortran_int_t k,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const fortran_int_t k,
             const MatrixA& a, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -185,8 +188,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -205,11 +209,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmrz( const char side, const fortran_int_t k, const MatrixA& a,
+unmrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return unmrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -220,10 +224,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmrz( const char side, const fortran_int_t k, const MatrixA& a,
+unmrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, MatrixC& c ) {
     return unmrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,
@@ -235,11 +240,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmrz( const char side, const fortran_int_t k, const MatrixA& a,
+unmrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return unmrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c, work );
@@ -250,10 +255,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmrz( const char side, const fortran_int_t k, const MatrixA& a,
+unmrz( const Side side, const fortran_int_t k, const MatrixA& a,
         const VectorTAU& tau, const MatrixC& c ) {
     return unmrz_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, k, a, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -17,6 +17,7 @@
 #include <boost/assert.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/detail/array.hpp>
+#include <boost/numeric/bindings/detail/if_left.hpp>
 #include <boost/numeric/bindings/is_mutable.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/remove_imaginary.hpp>
@@ -52,17 +53,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename UpLo, typename Trans >
-inline std::ptrdiff_t unmtr( const char side, UpLo, Trans,
- const fortran_int_t m, const fortran_int_t n,
+template< typename Side, typename UpLo, typename Trans >
+inline std::ptrdiff_t unmtr( const Side side, const UpLo uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
         const std::complex<float>* a, const fortran_int_t lda,
         const std::complex<float>* tau, std::complex<float>* c,
         const fortran_int_t ldc, std::complex<float>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_CUNMTR( &side, &lapack_option< UpLo >::value, &lapack_option<
- Trans >::value, &m, &n, a, &lda, tau, c, &ldc, work, &lwork,
- &info );
+ LAPACK_CUNMTR( &lapack_option< Side >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Trans >::value, &m, &n, a, &lda,
+ tau, c, &ldc, work, &lwork, &info );
     return info;
 }
 
@@ -71,17 +72,17 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename UpLo, typename Trans >
-inline std::ptrdiff_t unmtr( const char side, UpLo, Trans,
- const fortran_int_t m, const fortran_int_t n,
+template< typename Side, typename UpLo, typename Trans >
+inline std::ptrdiff_t unmtr( const Side side, const UpLo uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
         const std::complex<double>* a, const fortran_int_t lda,
         const std::complex<double>* tau, std::complex<double>* c,
         const fortran_int_t ldc, std::complex<double>* work,
         const fortran_int_t lwork ) {
     fortran_int_t info(0);
- LAPACK_ZUNMTR( &side, &lapack_option< UpLo >::value, &lapack_option<
- Trans >::value, &m, &n, a, &lda, tau, c, &ldc, work, &lwork,
- &info );
+ LAPACK_ZUNMTR( &lapack_option< Side >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Trans >::value, &m, &n, a, &lda,
+ tau, c, &ldc, work, &lwork, &info );
     return info;
 }
 
@@ -103,9 +104,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, detail::workspace1<
             WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -131,7 +132,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::unmtr( side, uplo(), trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(a),
                 bindings::stride_major(a), bindings::begin_value(tau),
@@ -147,8 +147,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -165,8 +166,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename MatrixA, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const MatrixA& a,
+ template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const MatrixA& a,
             const VectorTAU& tau, MatrixC& c, optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
         typedef typename result_of::trans_tag< MatrixA, order >::type trans;
@@ -186,12 +188,11 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
- static std::ptrdiff_t min_size_work( const char side,
+ template< typename Side >
+ static std::ptrdiff_t min_size_work( const Side side,
             const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- if ( side == 'L' )
- return std::max< std::ptrdiff_t >( 1, n );
- else
- return std::max< std::ptrdiff_t >( 1, m );
+ return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
+ n, m ) );
     }
 };
 
@@ -210,11 +211,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmtr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c, Workspace work ) {
     return unmtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -225,10 +226,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmtr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         MatrixC& c ) {
     return unmtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );
@@ -239,11 +241,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-unmtr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c, Workspace work ) {
     return unmtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, work );
@@ -254,10 +256,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename MatrixA, typename VectorTAU, typename MatrixC >
+template< typename Side, typename MatrixA, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-unmtr( const char side, const MatrixA& a, const VectorTAU& tau,
+unmtr( const Side side, const MatrixA& a, const VectorTAU& tau,
         const MatrixC& c ) {
     return unmtr_impl< typename bindings::value_type<
             MatrixA >::type >::invoke( side, a, tau, c, optimal_workspace() );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,15 +51,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<float> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t upmtr( const char side, const char uplo, Trans,
- const fortran_int_t m, const fortran_int_t n,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t upmtr( const Side side, const char uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
         const std::complex<float>* ap, const std::complex<float>* tau,
         std::complex<float>* c, const fortran_int_t ldc,
         std::complex<float>* work ) {
     fortran_int_t info(0);
- LAPACK_CUPMTR( &side, &uplo, &lapack_option< Trans >::value, &m, &n, ap,
- tau, c, &ldc, work, &info );
+ LAPACK_CUPMTR( &lapack_option< Side >::value, &uplo, &lapack_option<
+ Trans >::value, &m, &n, ap, tau, c, &ldc, work, &info );
     return info;
 }
 
@@ -68,15 +68,15 @@
 // * netlib-compatible LAPACK backend (the default), and
 // * complex<double> value-type.
 //
-template< typename Trans >
-inline std::ptrdiff_t upmtr( const char side, const char uplo, Trans,
- const fortran_int_t m, const fortran_int_t n,
+template< typename Side, typename Trans >
+inline std::ptrdiff_t upmtr( const Side side, const char uplo,
+ const Trans trans, const fortran_int_t m, const fortran_int_t n,
         const std::complex<double>* ap, const std::complex<double>* tau,
         std::complex<double>* c, const fortran_int_t ldc,
         std::complex<double>* work ) {
     fortran_int_t info(0);
- LAPACK_ZUPMTR( &side, &uplo, &lapack_option< Trans >::value, &m, &n, ap,
- tau, c, &ldc, work, &info );
+ LAPACK_ZUPMTR( &lapack_option< Side >::value, &uplo, &lapack_option<
+ Trans >::value, &m, &n, ap, tau, c, &ldc, work, &info );
     return info;
 }
 
@@ -98,9 +98,9 @@
     // * Deduces the required arguments for dispatching to LAPACK, and
     // * Asserts that most arguments make sense.
     //
- template< typename VectorAP, typename VectorTAU, typename MatrixC,
- typename WORK >
- static std::ptrdiff_t invoke( const char side, const char uplo,
+ template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC, typename WORK >
+ static std::ptrdiff_t invoke( const Side side, const char uplo,
             const VectorAP& ap, const VectorTAU& tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -121,7 +121,6 @@
         BOOST_ASSERT( bindings::size_row(c) >= 0 );
         BOOST_ASSERT( bindings::stride_major(c) >= std::max< std::ptrdiff_t >(1,
                 bindings::size_row(c)) );
- BOOST_ASSERT( side == 'L' || side == 'R' );
         return detail::upmtr( side, uplo, trans(), bindings::size_row(c),
                 bindings::size_column(c), bindings::begin_value(ap),
                 bindings::begin_value(tau), bindings::begin_value(c),
@@ -136,8 +135,9 @@
     // invoke static member function
     // * Enables the unblocked algorithm (BLAS level 2)
     //
- template< typename VectorAP, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char uplo,
+ template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char uplo,
             const VectorAP& ap, const VectorTAU& tau, MatrixC& c,
             minimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -153,8 +153,9 @@
     // invoke static member
     // * Enables the blocked algorithm (BLAS level 3)
     //
- template< typename VectorAP, typename VectorTAU, typename MatrixC >
- static std::ptrdiff_t invoke( const char side, const char uplo,
+ template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
+ static std::ptrdiff_t invoke( const Side side, const char uplo,
             const VectorAP& ap, const VectorTAU& tau, MatrixC& c,
             optimal_workspace work ) {
         namespace bindings = ::boost::numeric::bindings;
@@ -165,8 +166,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 
@@ -185,11 +187,11 @@
 // * MatrixC&
 // * User-defined workspace
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-upmtr( const char side, const char uplo, const VectorAP& ap,
+upmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, MatrixC& c, Workspace work ) {
     return upmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c, work );
@@ -200,10 +202,11 @@
 // * MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-upmtr( const char side, const char uplo, const VectorAP& ap,
+upmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, MatrixC& c ) {
     return upmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c,
@@ -215,11 +218,11 @@
 // * const MatrixC&
 // * User-defined workspace
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC,
- typename Workspace >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC, typename Workspace >
 inline typename boost::enable_if< detail::is_workspace< Workspace >,
         std::ptrdiff_t >::type
-upmtr( const char side, const char uplo, const VectorAP& ap,
+upmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, const MatrixC& c, Workspace work ) {
     return upmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c, work );
@@ -230,10 +233,11 @@
 // * const MatrixC&
 // * Default workspace-type (optimal)
 //
-template< typename VectorAP, typename VectorTAU, typename MatrixC >
+template< typename Side, typename VectorAP, typename VectorTAU,
+ typename MatrixC >
 inline typename boost::disable_if< detail::is_workspace< MatrixC >,
         std::ptrdiff_t >::type
-upmtr( const char side, const char uplo, const VectorAP& ap,
+upmtr( const Side side, const char uplo, const VectorAP& ap,
         const VectorTAU& tau, const MatrixC& c ) {
     return upmtr_impl< typename bindings::value_type<
             VectorAP >::type >::invoke( side, uplo, ap, tau, c,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_option.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_option.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_option.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -9,8 +9,7 @@
 #ifndef BOOST_NUMERIC_BINDINGS_LAPACK_DETAIL_LAPACK_OPTION_HPP
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DETAIL_LAPACK_OPTION_HPP
 
-#include <boost/mpl/char.hpp>
-#include <boost/numeric/bindings/tag.hpp>
+#include <boost/numeric/bindings/blas/detail/blas_option.hpp>
 
 namespace boost {
 namespace numeric {
@@ -19,34 +18,10 @@
 namespace detail {
 
 template< typename Tag >
-struct lapack_option {};
+struct lapack_option: bindings::blas::detail::blas_option< Tag > {};
 
 template<>
-struct lapack_option< tag::transpose >: mpl::char_< 'T' > {};
-
-template<>
-struct lapack_option< tag::no_transpose >: mpl::char_< 'N' > {};
-
-template<>
-struct lapack_option< tag::conjugate >: mpl::char_< 'C' > {};
-
-template<>
-struct lapack_option< tag::upper >: mpl::char_< 'U' > {};
-
-template<>
-struct lapack_option< tag::lower >: mpl::char_< 'L' > {};
-
-template<>
-struct lapack_option< tag::unit >: mpl::char_< 'U' > {};
-
-template<>
-struct lapack_option< tag::non_unit >: mpl::char_< 'N' > {};
-
-template<>
-struct lapack_option< tag::left >: mpl::char_< 'L' > {};
-
-template<>
-struct lapack_option< tag::right >: mpl::char_< 'R' > {};
+struct lapack_option< tag::both >: mpl::char_< 'B' > {};
 
 } // namespace detail
 } // namespace lapack

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -170,6 +170,7 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
         return n*nrhs;
     }

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cposv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t cposv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t cposv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* a,
         const fortran_int_t lda, const std::complex<double>* b,
         const fortran_int_t ldb, std::complex<double>* x,
@@ -168,8 +168,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,8 +55,8 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku,
+inline std::ptrdiff_t gbsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, float* ab, const fortran_int_t ldab,
         float* afb, const fortran_int_t ldafb, fortran_int_t* ipiv,
         char& equed, float* r, float* c, float* b, const fortran_int_t ldb,
@@ -75,8 +75,8 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku,
+inline std::ptrdiff_t gbsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, double* ab, const fortran_int_t ldab,
         double* afb, const fortran_int_t ldafb, fortran_int_t* ipiv,
         char& equed, double* r, double* c, double* b, const fortran_int_t ldb,
@@ -95,8 +95,8 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku,
+inline std::ptrdiff_t gbsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, std::complex<float>* ab,
         const fortran_int_t ldab, std::complex<float>* afb,
         const fortran_int_t ldafb, fortran_int_t* ipiv, char& equed, float* r,
@@ -116,8 +116,8 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gbsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t kl, const fortran_int_t ku,
+inline std::ptrdiff_t gbsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t kl, const fortran_int_t ku,
         const fortran_int_t nrhs, std::complex<double>* ab,
         const fortran_int_t ldab, std::complex<double>* afb,
         const fortran_int_t ldafb, fortran_int_t* ipiv, char& equed,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gejsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gejsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gejsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -177,40 +177,45 @@
     // Static member function that returns the minimum size of
     // workspace-array sva.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_sva( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array u.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_u( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array v.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_v( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //
     // Static member function that returns the minimum size of
     // workspace-array iwork.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_iwork( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 };
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gels( Trans, const fortran_int_t m,
+inline std::ptrdiff_t gels( const Trans trans, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t nrhs, float* a,
         const fortran_int_t lda, float* b, const fortran_int_t ldb,
         float* work, const fortran_int_t lwork ) {
@@ -71,7 +71,7 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gels( Trans, const fortran_int_t m,
+inline std::ptrdiff_t gels( const Trans trans, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t nrhs, double* a,
         const fortran_int_t lda, double* b, const fortran_int_t ldb,
         double* work, const fortran_int_t lwork ) {
@@ -87,7 +87,7 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gels( Trans, const fortran_int_t m,
+inline std::ptrdiff_t gels( const Trans trans, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t nrhs,
         std::complex<float>* a, const fortran_int_t lda,
         std::complex<float>* b, const fortran_int_t ldb,
@@ -104,7 +104,7 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gels( Trans, const fortran_int_t m,
+inline std::ptrdiff_t gels( const Trans trans, const fortran_int_t m,
         const fortran_int_t n, const fortran_int_t nrhs,
         std::complex<double>* a, const fortran_int_t lda,
         std::complex<double>* b, const fortran_int_t ldb,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,12 +54,13 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gesvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, float* a, const fortran_int_t lda,
- float* af, const fortran_int_t ldaf, fortran_int_t* ipiv, char& equed,
- float* r, float* c, float* b, const fortran_int_t ldb, float* x,
- const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
- float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t gesvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs, float* a,
+ const fortran_int_t lda, float* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, char& equed, float* r, float* c, float* b,
+ const fortran_int_t ldb, float* x, const fortran_int_t ldx,
+ float& rcond, float* ferr, float* berr, float* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SGESVX( &fact, &lapack_option< Trans >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr,
@@ -73,12 +74,13 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gesvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, double* a, const fortran_int_t lda,
- double* af, const fortran_int_t ldaf, fortran_int_t* ipiv,
- char& equed, double* r, double* c, double* b, const fortran_int_t ldb,
- double* x, const fortran_int_t ldx, double& rcond, double* ferr,
- double* berr, double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t gesvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs, double* a,
+ const fortran_int_t lda, double* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, char& equed, double* r, double* c, double* b,
+ const fortran_int_t ldb, double* x, const fortran_int_t ldx,
+ double& rcond, double* ferr, double* berr, double* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DGESVX( &fact, &lapack_option< Trans >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, &equed, r, c, b, &ldb, x, &ldx, &rcond, ferr,
@@ -92,11 +94,12 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gesvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* af,
- const fortran_int_t ldaf, fortran_int_t* ipiv, char& equed, float* r,
- float* c, std::complex<float>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t gesvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, char& equed, float* r, float* c,
+ std::complex<float>* b, const fortran_int_t ldb,
         std::complex<float>* x, const fortran_int_t ldx, float& rcond,
         float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -112,11 +115,12 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gesvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* af,
- const fortran_int_t ldaf, fortran_int_t* ipiv, char& equed, double* r,
- double* c, std::complex<double>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t gesvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, char& equed, double* r, double* c,
+ std::complex<double>* b, const fortran_int_t ldb,
         std::complex<double>* x, const fortran_int_t ldx, double& rcond,
         double* ferr, double* berr, std::complex<double>* work,
         double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,12 +54,13 @@
 // * float value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, const float* dl, const float* d,
- const float* du, float* dlf, float* df, float* duf, float* du2,
- fortran_int_t* ipiv, const float* b, const fortran_int_t ldb,
- float* x, const fortran_int_t ldx, float& rcond, float* ferr,
- float* berr, float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t gtsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs, const float* dl,
+ const float* d, const float* du, float* dlf, float* df, float* duf,
+ float* du2, fortran_int_t* ipiv, const float* b,
+ const fortran_int_t ldb, float* x, const fortran_int_t ldx,
+ float& rcond, float* ferr, float* berr, float* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SGTSVX( &fact, &lapack_option< Trans >::value, &n, &nrhs, dl, d,
             du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr,
@@ -73,12 +74,13 @@
 // * double value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, const double* dl, const double* d,
- const double* du, double* dlf, double* df, double* duf, double* du2,
- fortran_int_t* ipiv, const double* b, const fortran_int_t ldb,
- double* x, const fortran_int_t ldx, double& rcond, double* ferr,
- double* berr, double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t gtsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs, const double* dl,
+ const double* d, const double* du, double* dlf, double* df,
+ double* duf, double* du2, fortran_int_t* ipiv, const double* b,
+ const fortran_int_t ldb, double* x, const fortran_int_t ldx,
+ double& rcond, double* ferr, double* berr, double* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DGTSVX( &fact, &lapack_option< Trans >::value, &n, &nrhs, dl, d,
             du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr,
@@ -92,15 +94,15 @@
 // * complex<float> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* dl,
- const std::complex<float>* d, const std::complex<float>* du,
- std::complex<float>* dlf, std::complex<float>* df,
- std::complex<float>* duf, std::complex<float>* du2,
- fortran_int_t* ipiv, const std::complex<float>* b,
- const fortran_int_t ldb, std::complex<float>* x,
- const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
- std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t gtsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* dl, const std::complex<float>* d,
+ const std::complex<float>* du, std::complex<float>* dlf,
+ std::complex<float>* df, std::complex<float>* duf,
+ std::complex<float>* du2, fortran_int_t* ipiv,
+ const std::complex<float>* b, const fortran_int_t ldb,
+ std::complex<float>* x, const fortran_int_t ldx, float& rcond,
+ float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CGTSVX( &fact, &lapack_option< Trans >::value, &n, &nrhs, dl, d,
             du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr,
@@ -114,15 +116,16 @@
 // * complex<double> value-type.
 //
 template< typename Trans >
-inline std::ptrdiff_t gtsvx( const char fact, Trans, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* dl,
- const std::complex<double>* d, const std::complex<double>* du,
- std::complex<double>* dlf, std::complex<double>* df,
- std::complex<double>* duf, std::complex<double>* du2,
- fortran_int_t* ipiv, const std::complex<double>* b,
- const fortran_int_t ldb, std::complex<double>* x,
- const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
- std::complex<double>* work, double* rwork ) {
+inline std::ptrdiff_t gtsvx( const char fact, const Trans trans,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* dl, const std::complex<double>* d,
+ const std::complex<double>* du, std::complex<double>* dlf,
+ std::complex<double>* df, std::complex<double>* duf,
+ std::complex<double>* du2, fortran_int_t* ipiv,
+ const std::complex<double>* b, const fortran_int_t ldb,
+ std::complex<double>* x, const fortran_int_t ldx, double& rcond,
+ double* ferr, double* berr, std::complex<double>* work,
+ double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZGTSVX( &fact, &lapack_option< Trans >::value, &n, &nrhs, dl, d,
             du, dlf, df, duf, du2, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,11 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbev( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, std::complex<float>* ab,
- const fortran_int_t ldab, float* w, std::complex<float>* z,
- const fortran_int_t ldz, std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t hbev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ std::complex<float>* ab, const fortran_int_t ldab, float* w,
+ std::complex<float>* z, const fortran_int_t ldz,
+ std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CHBEV( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, w,
             z, &ldz, work, rwork, &info );
@@ -68,10 +69,11 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbev( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, std::complex<double>* ab,
- const fortran_int_t ldab, double* w, std::complex<double>* z,
- const fortran_int_t ldz, std::complex<double>* work, double* rwork ) {
+inline std::ptrdiff_t hbev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ std::complex<double>* ab, const fortran_int_t ldab, double* w,
+ std::complex<double>* z, const fortran_int_t ldz,
+ std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZHBEV( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, w,
             z, &ldz, work, rwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,12 +53,13 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbevd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, std::complex<float>* ab,
- const fortran_int_t ldab, float* w, std::complex<float>* z,
- const fortran_int_t ldz, std::complex<float>* work,
- const fortran_int_t lwork, float* rwork, const fortran_int_t lrwork,
- fortran_int_t* iwork, const fortran_int_t liwork ) {
+inline std::ptrdiff_t hbevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ std::complex<float>* ab, const fortran_int_t ldab, float* w,
+ std::complex<float>* z, const fortran_int_t ldz,
+ std::complex<float>* work, const fortran_int_t lwork, float* rwork,
+ const fortran_int_t lrwork, fortran_int_t* iwork,
+ const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_CHBEVD( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
             w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info );
@@ -71,12 +72,13 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbevd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, std::complex<double>* ab,
- const fortran_int_t ldab, double* w, std::complex<double>* z,
- const fortran_int_t ldz, std::complex<double>* work,
- const fortran_int_t lwork, double* rwork, const fortran_int_t lrwork,
- fortran_int_t* iwork, const fortran_int_t liwork ) {
+inline std::ptrdiff_t hbevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ std::complex<double>* ab, const fortran_int_t ldab, double* w,
+ std::complex<double>* z, const fortran_int_t ldz,
+ std::complex<double>* work, const fortran_int_t lwork, double* rwork,
+ const fortran_int_t lrwork, fortran_int_t* iwork,
+ const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_ZHBEVD( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
             w, z, &ldz, work, &lwork, rwork, &lrwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t kd,
+inline std::ptrdiff_t hbevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t kd,
         std::complex<float>* ab, const fortran_int_t ldab,
         std::complex<float>* q, const fortran_int_t ldq, const float vl,
         const float vu, const fortran_int_t il, const fortran_int_t iu,
@@ -74,8 +74,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t kd,
+inline std::ptrdiff_t hbevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t kd,
         std::complex<double>* ab, const fortran_int_t ldab,
         std::complex<double>* q, const fortran_int_t ldq, const double vl,
         const double vu, const fortran_int_t il, const fortran_int_t iu,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgv( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb,
+inline std::ptrdiff_t hbgv( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
         std::complex<float>* ab, const fortran_int_t ldab,
         std::complex<float>* bb, const fortran_int_t ldbb, float* w,
         std::complex<float>* z, const fortran_int_t ldz,
@@ -70,8 +70,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgv( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb,
+inline std::ptrdiff_t hbgv( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
         std::complex<double>* ab, const fortran_int_t ldab,
         std::complex<double>* bb, const fortran_int_t ldbb, double* w,
         std::complex<double>* z, const fortran_int_t ldz,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,8 +53,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgvd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb,
+inline std::ptrdiff_t hbgvd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
         std::complex<float>* ab, const fortran_int_t ldab,
         std::complex<float>* bb, const fortran_int_t ldbb, float* w,
         std::complex<float>* z, const fortran_int_t ldz,
@@ -74,8 +74,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgvd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb,
+inline std::ptrdiff_t hbgvd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
         std::complex<double>* ab, const fortran_int_t ldab,
         std::complex<double>* bb, const fortran_int_t ldbb, double* w,
         std::complex<double>* z, const fortran_int_t ldz,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,16 +52,16 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgvx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
- std::complex<float>* ab, const fortran_int_t ldab,
- std::complex<float>* bb, const fortran_int_t ldbb,
- std::complex<float>* q, const fortran_int_t ldq, const float vl,
- const float vu, const fortran_int_t il, const fortran_int_t iu,
- const float abstol, fortran_int_t& m, float* w,
- std::complex<float>* z, const fortran_int_t ldz,
- std::complex<float>* work, float* rwork, fortran_int_t* iwork,
- fortran_int_t* ifail ) {
+inline std::ptrdiff_t hbgvx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t ka,
+ const fortran_int_t kb, std::complex<float>* ab,
+ const fortran_int_t ldab, std::complex<float>* bb,
+ const fortran_int_t ldbb, std::complex<float>* q,
+ const fortran_int_t ldq, const float vl, const float vu,
+ const fortran_int_t il, const fortran_int_t iu, const float abstol,
+ fortran_int_t& m, float* w, std::complex<float>* z,
+ const fortran_int_t ldz, std::complex<float>* work, float* rwork,
+ fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_CHBGVX( &jobz, &range, &lapack_option< UpLo >::value, &n, &ka, &kb,
             ab, &ldab, bb, &ldbb, q, &ldq, &vl, &vu, &il, &iu, &abstol, &m, w,
@@ -75,16 +75,16 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hbgvx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
- std::complex<double>* ab, const fortran_int_t ldab,
- std::complex<double>* bb, const fortran_int_t ldbb,
- std::complex<double>* q, const fortran_int_t ldq, const double vl,
- const double vu, const fortran_int_t il, const fortran_int_t iu,
- const double abstol, fortran_int_t& m, double* w,
- std::complex<double>* z, const fortran_int_t ldz,
- std::complex<double>* work, double* rwork, fortran_int_t* iwork,
- fortran_int_t* ifail ) {
+inline std::ptrdiff_t hbgvx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t ka,
+ const fortran_int_t kb, std::complex<double>* ab,
+ const fortran_int_t ldab, std::complex<double>* bb,
+ const fortran_int_t ldbb, std::complex<double>* q,
+ const fortran_int_t ldq, const double vl, const double vu,
+ const fortran_int_t il, const fortran_int_t iu, const double abstol,
+ fortran_int_t& m, double* w, std::complex<double>* z,
+ const fortran_int_t ldz, std::complex<double>* work, double* rwork,
+ fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_ZHBGVX( &jobz, &range, &lapack_option< UpLo >::value, &n, &ka, &kb,
             ab, &ldab, bb, &ldbb, q, &ldq, &vl, &vu, &il, &iu, &abstol, &m, w,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heev( const char jobz, UpLo, const fortran_int_t n,
- std::complex<float>* a, const fortran_int_t lda, float* w,
- std::complex<float>* work, const fortran_int_t lwork, float* rwork ) {
+inline std::ptrdiff_t heev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<float>* a,
+ const fortran_int_t lda, float* w, std::complex<float>* work,
+ const fortran_int_t lwork, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CHEEV( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
             &lwork, rwork, &info );
@@ -67,10 +68,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heev( const char jobz, UpLo, const fortran_int_t n,
- std::complex<double>* a, const fortran_int_t lda, double* w,
- std::complex<double>* work, const fortran_int_t lwork,
- double* rwork ) {
+inline std::ptrdiff_t heev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<double>* a,
+ const fortran_int_t lda, double* w, std::complex<double>* work,
+ const fortran_int_t lwork, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZHEEV( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
             &lwork, rwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,11 +52,11 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heevd( const char jobz, UpLo, const fortran_int_t n,
- std::complex<float>* a, const fortran_int_t lda, float* w,
- std::complex<float>* work, const fortran_int_t lwork, float* rwork,
- const fortran_int_t lrwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t heevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<float>* a,
+ const fortran_int_t lda, float* w, std::complex<float>* work,
+ const fortran_int_t lwork, float* rwork, const fortran_int_t lrwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_CHEEVD( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
             &lwork, rwork, &lrwork, iwork, &liwork, &info );
@@ -69,11 +69,11 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heevd( const char jobz, UpLo, const fortran_int_t n,
- std::complex<double>* a, const fortran_int_t lda, double* w,
- std::complex<double>* work, const fortran_int_t lwork, double* rwork,
- const fortran_int_t lrwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t heevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<double>* a,
+ const fortran_int_t lda, double* w, std::complex<double>* work,
+ const fortran_int_t lwork, double* rwork, const fortran_int_t lrwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_ZHEEVD( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
             &lwork, rwork, &lrwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heevr( const char jobz, const char range, UpLo,
- const fortran_int_t n, std::complex<float>* a,
+inline std::ptrdiff_t heevr( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, const float vl, const float vu,
         const fortran_int_t il, const fortran_int_t iu, const float abstol,
         fortran_int_t& m, float* w, std::complex<float>* z,
@@ -74,8 +74,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heevr( const char jobz, const char range, UpLo,
- const fortran_int_t n, std::complex<double>* a,
+inline std::ptrdiff_t heevr( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, const double vl, const double vu,
         const fortran_int_t il, const fortran_int_t iu, const double abstol,
         fortran_int_t& m, double* w, std::complex<double>* z,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, std::complex<float>* a,
+inline std::ptrdiff_t heevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, const float vl, const float vu,
         const fortran_int_t il, const fortran_int_t iu, const float abstol,
         fortran_int_t& m, float* w, std::complex<float>* z,
@@ -73,8 +73,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t heevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, std::complex<double>* a,
+inline std::ptrdiff_t heevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, const double vl, const double vu,
         const fortran_int_t il, const fortran_int_t iu, const double abstol,
         fortran_int_t& m, double* w, std::complex<double>* z,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hegv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<float>* a,
+inline std::ptrdiff_t hegv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, std::complex<float>* b,
         const fortran_int_t ldb, float* w, std::complex<float>* work,
         const fortran_int_t lwork, float* rwork ) {
@@ -69,8 +69,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hegv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<double>* a,
+inline std::ptrdiff_t hegv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, std::complex<double>* b,
         const fortran_int_t ldb, double* w, std::complex<double>* work,
         const fortran_int_t lwork, double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hegvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<float>* a,
+inline std::ptrdiff_t hegvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* a,
         const fortran_int_t lda, std::complex<float>* b,
         const fortran_int_t ldb, float* w, std::complex<float>* work,
         const fortran_int_t lwork, float* rwork, const fortran_int_t lrwork,
@@ -70,8 +70,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hegvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<double>* a,
+inline std::ptrdiff_t hegvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* a,
         const fortran_int_t lda, std::complex<double>* b,
         const fortran_int_t ldb, double* w, std::complex<double>* work,
         const fortran_int_t lwork, double* rwork, const fortran_int_t lrwork,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,14 +53,14 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t hegvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n, std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* b,
- const fortran_int_t ldb, const float vl, const float vu,
- const fortran_int_t il, const fortran_int_t iu, const float abstol,
- fortran_int_t& m, float* w, std::complex<float>* z,
- const fortran_int_t ldz, std::complex<float>* work,
- const fortran_int_t lwork, float* rwork, fortran_int_t* iwork,
- fortran_int_t* ifail ) {
+ const char range, const UpLo uplo, const fortran_int_t n,
+ std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* b, const fortran_int_t ldb, const float vl,
+ const float vu, const fortran_int_t il, const fortran_int_t iu,
+ const float abstol, fortran_int_t& m, float* w,
+ std::complex<float>* z, const fortran_int_t ldz,
+ std::complex<float>* work, const fortran_int_t lwork, float* rwork,
+ fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_CHEGVX( &itype, &jobz, &range, &lapack_option< UpLo >::value, &n,
             a, &lda, b, &ldb, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz,
@@ -75,7 +75,7 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t hegvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n,
+ const char range, const UpLo uplo, const fortran_int_t n,
         std::complex<double>* a, const fortran_int_t lda,
         std::complex<double>* b, const fortran_int_t ldb, const double vl,
         const double vu, const fortran_int_t il, const fortran_int_t iu,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hesv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hesv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<float>* a,
         const fortran_int_t lda, fortran_int_t* ipiv, std::complex<float>* b,
         const fortran_int_t ldb, std::complex<float>* work,
@@ -69,7 +69,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hesv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hesv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* a,
         const fortran_int_t lda, fortran_int_t* ipiv, std::complex<double>* b,
         const fortran_int_t ldb, std::complex<double>* work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,14 +52,14 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hesvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* af,
- const fortran_int_t ldaf, fortran_int_t* ipiv,
- const std::complex<float>* b, const fortran_int_t ldb,
- std::complex<float>* x, const fortran_int_t ldx, float& rcond,
- float* ferr, float* berr, std::complex<float>* work,
- const fortran_int_t lwork, float* rwork ) {
+inline std::ptrdiff_t hesvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, const std::complex<float>* b,
+ const fortran_int_t ldb, std::complex<float>* x,
+ const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
+ std::complex<float>* work, const fortran_int_t lwork, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CHESVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work,
@@ -73,14 +73,15 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hesvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* af,
- const fortran_int_t ldaf, fortran_int_t* ipiv,
- const std::complex<double>* b, const fortran_int_t ldb,
- std::complex<double>* x, const fortran_int_t ldx, double& rcond,
- double* ferr, double* berr, std::complex<double>* work,
- const fortran_int_t lwork, double* rwork ) {
+inline std::ptrdiff_t hesvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, const std::complex<double>* b,
+ const fortran_int_t ldb, std::complex<double>* x,
+ const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
+ std::complex<double>* work, const fortran_int_t lwork,
+ double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZHESVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,9 +51,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpev( const char jobz, UpLo, const fortran_int_t n,
- std::complex<float>* ap, float* w, std::complex<float>* z,
- const fortran_int_t ldz, std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t hpev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<float>* ap, float* w,
+ std::complex<float>* z, const fortran_int_t ldz,
+ std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CHPEV( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, rwork, &info );
@@ -66,9 +67,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpev( const char jobz, UpLo, const fortran_int_t n,
- std::complex<double>* ap, double* w, std::complex<double>* z,
- const fortran_int_t ldz, std::complex<double>* work, double* rwork ) {
+inline std::ptrdiff_t hpev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<double>* ap, double* w,
+ std::complex<double>* z, const fortran_int_t ldz,
+ std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZHPEV( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, rwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,11 +52,12 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpevd( const char jobz, UpLo, const fortran_int_t n,
- std::complex<float>* ap, float* w, std::complex<float>* z,
- const fortran_int_t ldz, std::complex<float>* work,
- const fortran_int_t lwork, float* rwork, const fortran_int_t lrwork,
- fortran_int_t* iwork, const fortran_int_t liwork ) {
+inline std::ptrdiff_t hpevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<float>* ap, float* w,
+ std::complex<float>* z, const fortran_int_t ldz,
+ std::complex<float>* work, const fortran_int_t lwork, float* rwork,
+ const fortran_int_t lrwork, fortran_int_t* iwork,
+ const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_CHPEVD( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, &lwork, rwork, &lrwork, iwork, &liwork, &info );
@@ -69,11 +70,12 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpevd( const char jobz, UpLo, const fortran_int_t n,
- std::complex<double>* ap, double* w, std::complex<double>* z,
- const fortran_int_t ldz, std::complex<double>* work,
- const fortran_int_t lwork, double* rwork, const fortran_int_t lrwork,
- fortran_int_t* iwork, const fortran_int_t liwork ) {
+inline std::ptrdiff_t hpevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, std::complex<double>* ap, double* w,
+ std::complex<double>* z, const fortran_int_t ldz,
+ std::complex<double>* work, const fortran_int_t lwork, double* rwork,
+ const fortran_int_t lrwork, fortran_int_t* iwork,
+ const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_ZHPEVD( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, &lwork, rwork, &lrwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,11 +51,11 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, std::complex<float>* ap, const float vl,
- const float vu, const fortran_int_t il, const fortran_int_t iu,
- const float abstol, fortran_int_t& m, float* w,
- std::complex<float>* z, const fortran_int_t ldz,
+inline std::ptrdiff_t hpevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* ap,
+ const float vl, const float vu, const fortran_int_t il,
+ const fortran_int_t iu, const float abstol, fortran_int_t& m,
+ float* w, std::complex<float>* z, const fortran_int_t ldz,
         std::complex<float>* work, float* rwork, fortran_int_t* iwork,
         fortran_int_t* ifail ) {
     fortran_int_t info(0);
@@ -71,11 +71,11 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, std::complex<double>* ap, const double vl,
- const double vu, const fortran_int_t il, const fortran_int_t iu,
- const double abstol, fortran_int_t& m, double* w,
- std::complex<double>* z, const fortran_int_t ldz,
+inline std::ptrdiff_t hpevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* ap,
+ const double vl, const double vu, const fortran_int_t il,
+ const fortran_int_t iu, const double abstol, fortran_int_t& m,
+ double* w, std::complex<double>* z, const fortran_int_t ldz,
         std::complex<double>* work, double* rwork, fortran_int_t* iwork,
         fortran_int_t* ifail ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,8 +51,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpgv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<float>* ap,
+inline std::ptrdiff_t hpgv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* ap,
         std::complex<float>* bp, float* w, std::complex<float>* z,
         const fortran_int_t ldz, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -67,8 +67,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpgv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<double>* ap,
+inline std::ptrdiff_t hpgv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* ap,
         std::complex<double>* bp, double* w, std::complex<double>* z,
         const fortran_int_t ldz, std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpgvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<float>* ap,
+inline std::ptrdiff_t hpgvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<float>* ap,
         std::complex<float>* bp, float* w, std::complex<float>* z,
         const fortran_int_t ldz, std::complex<float>* work,
         const fortran_int_t lwork, float* rwork, const fortran_int_t lrwork,
@@ -70,8 +70,8 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpgvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, std::complex<double>* ap,
+inline std::ptrdiff_t hpgvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, std::complex<double>* ap,
         std::complex<double>* bp, double* w, std::complex<double>* z,
         const fortran_int_t ldz, std::complex<double>* work,
         const fortran_int_t lwork, double* rwork, const fortran_int_t lrwork,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,7 +52,7 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t hpgvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n,
+ const char range, const UpLo uplo, const fortran_int_t n,
         std::complex<float>* ap, std::complex<float>* bp, const float vl,
         const float vu, const fortran_int_t il, const fortran_int_t iu,
         const float abstol, fortran_int_t& m, float* w,
@@ -73,7 +73,7 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t hpgvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n,
+ const char range, const UpLo uplo, const fortran_int_t n,
         std::complex<double>* ap, std::complex<double>* bp, const double vl,
         const double vu, const fortran_int_t il, const fortran_int_t iu,
         const double abstol, fortran_int_t& m, double* w,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hpsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<float>* ap,
         fortran_int_t* ipiv, std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -65,7 +65,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t hpsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* ap,
         fortran_int_t* ipiv, std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,12 +51,13 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* ap,
- std::complex<float>* afp, fortran_int_t* ipiv,
- const std::complex<float>* b, const fortran_int_t ldb,
- std::complex<float>* x, const fortran_int_t ldx, float& rcond,
- float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t hpsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* ap, std::complex<float>* afp,
+ fortran_int_t* ipiv, const std::complex<float>* b,
+ const fortran_int_t ldb, std::complex<float>* x,
+ const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
+ std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CHPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info );
@@ -69,13 +70,13 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t hpsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* ap,
- std::complex<double>* afp, fortran_int_t* ipiv,
- const std::complex<double>* b, const fortran_int_t ldb,
- std::complex<double>* x, const fortran_int_t ldx, double& rcond,
- double* ferr, double* berr, std::complex<double>* work,
- double* rwork ) {
+inline std::ptrdiff_t hpsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* ap, std::complex<double>* afp,
+ fortran_int_t* ipiv, const std::complex<double>* b,
+ const fortran_int_t ldb, std::complex<double>* x,
+ const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
+ std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZHPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -50,7 +50,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs, float* ab,
         const fortran_int_t ldab, float* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -65,7 +65,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs, double* ab,
         const fortran_int_t ldab, double* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -80,7 +80,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs,
         std::complex<float>* ab, const fortran_int_t ldab,
         std::complex<float>* b, const fortran_int_t ldb ) {
@@ -96,7 +96,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t pbsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t kd, const fortran_int_t nrhs,
         std::complex<double>* ab, const fortran_int_t ldab,
         std::complex<double>* b, const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,12 +55,13 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs, float* ab,
- const fortran_int_t ldab, float* afb, const fortran_int_t ldafb,
- char& equed, float* s, float* b, const fortran_int_t ldb, float* x,
- const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
- float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t pbsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, float* ab, const fortran_int_t ldab,
+ float* afb, const fortran_int_t ldafb, char& equed, float* s,
+ float* b, const fortran_int_t ldb, float* x, const fortran_int_t ldx,
+ float& rcond, float* ferr, float* berr, float* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SPBSVX( &fact, &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab,
             &ldab, afb, &ldafb, &equed, s, b, &ldb, x, &ldx, &rcond, ferr,
@@ -74,10 +75,11 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs, double* ab,
- const fortran_int_t ldab, double* afb, const fortran_int_t ldafb,
- char& equed, double* s, double* b, const fortran_int_t ldb, double* x,
+inline std::ptrdiff_t pbsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, double* ab, const fortran_int_t ldab,
+ double* afb, const fortran_int_t ldafb, char& equed, double* s,
+ double* b, const fortran_int_t ldb, double* x,
         const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
         double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -93,11 +95,12 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs,
- std::complex<float>* ab, const fortran_int_t ldab,
- std::complex<float>* afb, const fortran_int_t ldafb, char& equed,
- float* s, std::complex<float>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t pbsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, std::complex<float>* ab,
+ const fortran_int_t ldab, std::complex<float>* afb,
+ const fortran_int_t ldafb, char& equed, float* s,
+ std::complex<float>* b, const fortran_int_t ldb,
         std::complex<float>* x, const fortran_int_t ldx, float& rcond,
         float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -113,11 +116,12 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t pbsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t kd, const fortran_int_t nrhs,
- std::complex<double>* ab, const fortran_int_t ldab,
- std::complex<double>* afb, const fortran_int_t ldafb, char& equed,
- double* s, std::complex<double>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t pbsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd,
+ const fortran_int_t nrhs, std::complex<double>* ab,
+ const fortran_int_t ldab, std::complex<double>* afb,
+ const fortran_int_t ldafb, char& equed, double* s,
+ std::complex<double>* b, const fortran_int_t ldb,
         std::complex<double>* x, const fortran_int_t ldx, double& rcond,
         double* ferr, double* berr, std::complex<double>* work,
         double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -58,8 +58,8 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const int n, const int nrhs, float* a,
- const int lda, float* b, const int ldb ) {
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const int n,
+ const int nrhs, float* a, const int lda, float* b, const int ldb ) {
     return clapack_sposv( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -70,8 +70,8 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const int n, const int nrhs,
- double* a, const int lda, double* b, const int ldb ) {
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const int n,
+ const int nrhs, double* a, const int lda, double* b, const int ldb ) {
     return clapack_dposv( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -82,9 +82,9 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const int n, const int nrhs,
- std::complex<float>* a, const int lda, std::complex<float>* b,
- const int ldb ) {
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const int n,
+ const int nrhs, std::complex<float>* a, const int lda,
+ std::complex<float>* b, const int ldb ) {
     return clapack_cposv( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -95,9 +95,9 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const int n, const int nrhs,
- std::complex<double>* a, const int lda, std::complex<double>* b,
- const int ldb ) {
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const int n,
+ const int nrhs, std::complex<double>* a, const int lda,
+ std::complex<double>* b, const int ldb ) {
     return clapack_zposv( clapack_option< Order >::value, clapack_option<
             UpLo >::value, n, nrhs, a, lda, b, ldb );
 }
@@ -109,7 +109,7 @@
 // * float value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, float* a, const fortran_int_t lda, float* b,
         const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -125,7 +125,7 @@
 // * double value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, double* a, const fortran_int_t lda,
         double* b, const fortran_int_t ldb ) {
     BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );
@@ -141,7 +141,7 @@
 // * complex<float> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<float>* a,
         const fortran_int_t lda, std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -158,7 +158,7 @@
 // * complex<double> value-type.
 //
 template< typename Order, typename UpLo >
-inline std::ptrdiff_t posv( Order, UpLo, const fortran_int_t n,
+inline std::ptrdiff_t posv( Order, const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* a,
         const fortran_int_t lda, std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,12 +54,12 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t posvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, float* a, const fortran_int_t lda,
- float* af, const fortran_int_t ldaf, char& equed, float* s, float* b,
- const fortran_int_t ldb, float* x, const fortran_int_t ldx,
- float& rcond, float* ferr, float* berr, float* work,
- fortran_int_t* iwork ) {
+inline std::ptrdiff_t posvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, float* a,
+ const fortran_int_t lda, float* af, const fortran_int_t ldaf,
+ char& equed, float* s, float* b, const fortran_int_t ldb, float* x,
+ const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
+ float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SPOSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work,
@@ -73,10 +73,10 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t posvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, double* a, const fortran_int_t lda,
- double* af, const fortran_int_t ldaf, char& equed, double* s,
- double* b, const fortran_int_t ldb, double* x,
+inline std::ptrdiff_t posvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, double* a,
+ const fortran_int_t lda, double* af, const fortran_int_t ldaf,
+ char& equed, double* s, double* b, const fortran_int_t ldb, double* x,
         const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
         double* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
@@ -92,11 +92,11 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t posvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* af,
- const fortran_int_t ldaf, char& equed, float* s,
- std::complex<float>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t posvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* af, const fortran_int_t ldaf, char& equed,
+ float* s, std::complex<float>* b, const fortran_int_t ldb,
         std::complex<float>* x, const fortran_int_t ldx, float& rcond,
         float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -112,11 +112,11 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t posvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* af,
- const fortran_int_t ldaf, char& equed, double* s,
- std::complex<double>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t posvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* af, const fortran_int_t ldaf, char& equed,
+ double* s, std::complex<double>* b, const fortran_int_t ldb,
         std::complex<double>* x, const fortran_int_t ldx, double& rcond,
         double* ferr, double* berr, std::complex<double>* work,
         double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, float* ap, float* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -64,7 +64,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, double* ap, double* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -79,7 +79,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<float>* ap,
         std::complex<float>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -94,7 +94,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t ppsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* ap,
         std::complex<double>* b, const fortran_int_t ldb ) {
     fortran_int_t info(0);

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,11 +54,11 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, float* ap, float* afp, char& equed,
- float* s, float* b, const fortran_int_t ldb, float* x,
- const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
- float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t ppsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, float* ap,
+ float* afp, char& equed, float* s, float* b, const fortran_int_t ldb,
+ float* x, const fortran_int_t ldx, float& rcond, float* ferr,
+ float* berr, float* work, fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SPPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork,
@@ -72,11 +72,12 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, double* ap, double* afp, char& equed,
- double* s, double* b, const fortran_int_t ldb, double* x,
- const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
- double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t ppsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, double* ap,
+ double* afp, char& equed, double* s, double* b,
+ const fortran_int_t ldb, double* x, const fortran_int_t ldx,
+ double& rcond, double* ferr, double* berr, double* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DPPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             &equed, s, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork,
@@ -90,10 +91,10 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, std::complex<float>* ap,
- std::complex<float>* afp, char& equed, float* s,
- std::complex<float>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t ppsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ std::complex<float>* ap, std::complex<float>* afp, char& equed,
+ float* s, std::complex<float>* b, const fortran_int_t ldb,
         std::complex<float>* x, const fortran_int_t ldx, float& rcond,
         float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
@@ -109,10 +110,10 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t ppsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, std::complex<double>* ap,
- std::complex<double>* afp, char& equed, double* s,
- std::complex<double>* b, const fortran_int_t ldb,
+inline std::ptrdiff_t ppsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ std::complex<double>* ap, std::complex<double>* afp, char& equed,
+ double* s, std::complex<double>* b, const fortran_int_t ldb,
         std::complex<double>* x, const fortran_int_t ldx, double& rcond,
         double* ferr, double* berr, std::complex<double>* work,
         double* rwork ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,10 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbev( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, float* ab, const fortran_int_t ldab, float* w,
- float* z, const fortran_int_t ldz, float* work ) {
+inline std::ptrdiff_t sbev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd, float* ab,
+ const fortran_int_t ldab, float* w, float* z, const fortran_int_t ldz,
+ float* work ) {
     fortran_int_t info(0);
     LAPACK_SSBEV( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, w,
             z, &ldz, work, &info );
@@ -67,9 +68,10 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbev( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, double* ab, const fortran_int_t ldab,
- double* w, double* z, const fortran_int_t ldz, double* work ) {
+inline std::ptrdiff_t sbev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd, double* ab,
+ const fortran_int_t ldab, double* w, double* z,
+ const fortran_int_t ldz, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSBEV( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, w,
             z, &ldz, work, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,10 +53,10 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbevd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, float* ab, const fortran_int_t ldab, float* w,
- float* z, const fortran_int_t ldz, float* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t sbevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd, float* ab,
+ const fortran_int_t ldab, float* w, float* z, const fortran_int_t ldz,
+ float* work, const fortran_int_t lwork, fortran_int_t* iwork,
         const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSBEVD( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
@@ -70,11 +70,11 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbevd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t kd, double* ab, const fortran_int_t ldab,
- double* w, double* z, const fortran_int_t ldz, double* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t sbevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t kd, double* ab,
+ const fortran_int_t ldab, double* w, double* z,
+ const fortran_int_t ldz, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSBEVD( &jobz, &lapack_option< UpLo >::value, &n, &kd, ab, &ldab,
             w, z, &ldz, work, &lwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,13 +52,13 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t kd, float* ab,
- const fortran_int_t ldab, float* q, const fortran_int_t ldq,
- const float vl, const float vu, const fortran_int_t il,
- const fortran_int_t iu, const float abstol, fortran_int_t& m,
- float* w, float* z, const fortran_int_t ldz, float* work,
- fortran_int_t* iwork, fortran_int_t* ifail ) {
+inline std::ptrdiff_t sbevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t kd,
+ float* ab, const fortran_int_t ldab, float* q,
+ const fortran_int_t ldq, const float vl, const float vu,
+ const fortran_int_t il, const fortran_int_t iu, const float abstol,
+ fortran_int_t& m, float* w, float* z, const fortran_int_t ldz,
+ float* work, fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_SSBEVX( &jobz, &range, &lapack_option< UpLo >::value, &n, &kd, ab,
             &ldab, q, &ldq, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, work,
@@ -72,13 +72,13 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t kd, double* ab,
- const fortran_int_t ldab, double* q, const fortran_int_t ldq,
- const double vl, const double vu, const fortran_int_t il,
- const fortran_int_t iu, const double abstol, fortran_int_t& m,
- double* w, double* z, const fortran_int_t ldz, double* work,
- fortran_int_t* iwork, fortran_int_t* ifail ) {
+inline std::ptrdiff_t sbevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t kd,
+ double* ab, const fortran_int_t ldab, double* q,
+ const fortran_int_t ldq, const double vl, const double vu,
+ const fortran_int_t il, const fortran_int_t iu, const double abstol,
+ fortran_int_t& m, double* w, double* z, const fortran_int_t ldz,
+ double* work, fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_DSBEVX( &jobz, &range, &lapack_option< UpLo >::value, &n, &kd, ab,
             &ldab, q, &ldq, &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,11 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgv( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb, float* ab,
- const fortran_int_t ldab, float* bb, const fortran_int_t ldbb,
- float* w, float* z, const fortran_int_t ldz, float* work ) {
+inline std::ptrdiff_t sbgv( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
+ float* ab, const fortran_int_t ldab, float* bb,
+ const fortran_int_t ldbb, float* w, float* z, const fortran_int_t ldz,
+ float* work ) {
     fortran_int_t info(0);
     LAPACK_SSBGV( &jobz, &lapack_option< UpLo >::value, &n, &ka, &kb, ab,
             &ldab, bb, &ldbb, w, z, &ldz, work, &info );
@@ -68,10 +69,11 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgv( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb, double* ab,
- const fortran_int_t ldab, double* bb, const fortran_int_t ldbb,
- double* w, double* z, const fortran_int_t ldz, double* work ) {
+inline std::ptrdiff_t sbgv( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
+ double* ab, const fortran_int_t ldab, double* bb,
+ const fortran_int_t ldbb, double* w, double* z,
+ const fortran_int_t ldz, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSBGV( &jobz, &lapack_option< UpLo >::value, &n, &ka, &kb, ab,
             &ldab, bb, &ldbb, w, z, &ldz, work, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,11 +53,11 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgvd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb, float* ab,
- const fortran_int_t ldab, float* bb, const fortran_int_t ldbb,
- float* w, float* z, const fortran_int_t ldz, float* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t sbgvd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
+ float* ab, const fortran_int_t ldab, float* bb,
+ const fortran_int_t ldbb, float* w, float* z, const fortran_int_t ldz,
+ float* work, const fortran_int_t lwork, fortran_int_t* iwork,
         const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSBGVD( &jobz, &lapack_option< UpLo >::value, &n, &ka, &kb, ab,
@@ -72,12 +72,12 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgvd( const char jobz, UpLo, const fortran_int_t n,
- const fortran_int_t ka, const fortran_int_t kb, double* ab,
- const fortran_int_t ldab, double* bb, const fortran_int_t ldbb,
- double* w, double* z, const fortran_int_t ldz, double* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t sbgvd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
+ double* ab, const fortran_int_t ldab, double* bb,
+ const fortran_int_t ldbb, double* w, double* z,
+ const fortran_int_t ldz, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSBGVD( &jobz, &lapack_option< UpLo >::value, &n, &ka, &kb, ab,
             &ldab, bb, &ldbb, w, z, &ldz, work, &lwork, iwork, &liwork,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,14 +52,14 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgvx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
- float* ab, const fortran_int_t ldab, float* bb,
- const fortran_int_t ldbb, float* q, const fortran_int_t ldq,
- const float vl, const float vu, const fortran_int_t il,
- const fortran_int_t iu, const float abstol, fortran_int_t& m,
- float* w, float* z, const fortran_int_t ldz, float* work,
- fortran_int_t* iwork, fortran_int_t* ifail ) {
+inline std::ptrdiff_t sbgvx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t ka,
+ const fortran_int_t kb, float* ab, const fortran_int_t ldab,
+ float* bb, const fortran_int_t ldbb, float* q,
+ const fortran_int_t ldq, const float vl, const float vu,
+ const fortran_int_t il, const fortran_int_t iu, const float abstol,
+ fortran_int_t& m, float* w, float* z, const fortran_int_t ldz,
+ float* work, fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_SSBGVX( &jobz, &range, &lapack_option< UpLo >::value, &n, &ka, &kb,
             ab, &ldab, bb, &ldbb, q, &ldq, &vl, &vu, &il, &iu, &abstol, &m, w,
@@ -73,14 +73,14 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sbgvx( const char jobz, const char range, UpLo,
- const fortran_int_t n, const fortran_int_t ka, const fortran_int_t kb,
- double* ab, const fortran_int_t ldab, double* bb,
- const fortran_int_t ldbb, double* q, const fortran_int_t ldq,
- const double vl, const double vu, const fortran_int_t il,
- const fortran_int_t iu, const double abstol, fortran_int_t& m,
- double* w, double* z, const fortran_int_t ldz, double* work,
- fortran_int_t* iwork, fortran_int_t* ifail ) {
+inline std::ptrdiff_t sbgvx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, const fortran_int_t ka,
+ const fortran_int_t kb, double* ab, const fortran_int_t ldab,
+ double* bb, const fortran_int_t ldbb, double* q,
+ const fortran_int_t ldq, const double vl, const double vu,
+ const fortran_int_t il, const fortran_int_t iu, const double abstol,
+ fortran_int_t& m, double* w, double* z, const fortran_int_t ldz,
+ double* work, fortran_int_t* iwork, fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_DSBGVX( &jobz, &range, &lapack_option< UpLo >::value, &n, &ka, &kb,
             ab, &ldab, bb, &ldbb, q, &ldq, &vl, &vu, &il, &iu, &abstol, &m, w,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -163,8 +163,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,8 +51,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spev( const char jobz, UpLo, const fortran_int_t n,
- float* ap, float* w, float* z, const fortran_int_t ldz, float* work ) {
+inline std::ptrdiff_t spev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, float* ap, float* w, float* z,
+ const fortran_int_t ldz, float* work ) {
     fortran_int_t info(0);
     LAPACK_SSPEV( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, &info );
@@ -65,9 +66,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spev( const char jobz, UpLo, const fortran_int_t n,
- double* ap, double* w, double* z, const fortran_int_t ldz,
- double* work ) {
+inline std::ptrdiff_t spev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, double* ap, double* w, double* z,
+ const fortran_int_t ldz, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSPEV( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,10 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spevd( const char jobz, UpLo, const fortran_int_t n,
- float* ap, float* w, float* z, const fortran_int_t ldz, float* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t spevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, float* ap, float* w, float* z,
+ const fortran_int_t ldz, float* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSPEVD( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, &lwork, iwork, &liwork, &info );
@@ -68,10 +68,10 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spevd( const char jobz, UpLo, const fortran_int_t n,
- double* ap, double* w, double* z, const fortran_int_t ldz,
- double* work, const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t spevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, double* ap, double* w, double* z,
+ const fortran_int_t ldz, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSPEVD( &jobz, &lapack_option< UpLo >::value, &n, ap, w, z, &ldz,
             work, &lwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,11 +51,12 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, float* ap, const float vl, const float vu,
- const fortran_int_t il, const fortran_int_t iu, const float abstol,
- fortran_int_t& m, float* w, float* z, const fortran_int_t ldz,
- float* work, fortran_int_t* iwork, fortran_int_t* ifail ) {
+inline std::ptrdiff_t spevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, float* ap, const float vl,
+ const float vu, const fortran_int_t il, const fortran_int_t iu,
+ const float abstol, fortran_int_t& m, float* w, float* z,
+ const fortran_int_t ldz, float* work, fortran_int_t* iwork,
+ fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_SSPEVX( &jobz, &range, &lapack_option< UpLo >::value, &n, ap, &vl,
             &vu, &il, &iu, &abstol, &m, w, z, &ldz, work, iwork, ifail,
@@ -69,11 +70,12 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, double* ap, const double vl, const double vu,
- const fortran_int_t il, const fortran_int_t iu, const double abstol,
- fortran_int_t& m, double* w, double* z, const fortran_int_t ldz,
- double* work, fortran_int_t* iwork, fortran_int_t* ifail ) {
+inline std::ptrdiff_t spevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, double* ap, const double vl,
+ const double vu, const fortran_int_t il, const fortran_int_t iu,
+ const double abstol, fortran_int_t& m, double* w, double* z,
+ const fortran_int_t ldz, double* work, fortran_int_t* iwork,
+ fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_DSPEVX( &jobz, &range, &lapack_option< UpLo >::value, &n, ap, &vl,
             &vu, &il, &iu, &abstol, &m, w, z, &ldz, work, iwork, ifail,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,9 +51,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spgv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, float* ap, float* bp, float* w, float* z,
- const fortran_int_t ldz, float* work ) {
+inline std::ptrdiff_t spgv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, float* ap, float* bp,
+ float* w, float* z, const fortran_int_t ldz, float* work ) {
     fortran_int_t info(0);
     LAPACK_SSPGV( &itype, &jobz, &lapack_option< UpLo >::value, &n, ap, bp, w,
             z, &ldz, work, &info );
@@ -66,9 +66,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spgv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, double* ap, double* bp, double* w, double* z,
- const fortran_int_t ldz, double* work ) {
+inline std::ptrdiff_t spgv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, double* ap, double* bp,
+ double* w, double* z, const fortran_int_t ldz, double* work ) {
     fortran_int_t info(0);
     LAPACK_DSPGV( &itype, &jobz, &lapack_option< UpLo >::value, &n, ap, bp, w,
             z, &ldz, work, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,11 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spgvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, float* ap, float* bp, float* w, float* z,
- const fortran_int_t ldz, float* work, const fortran_int_t lwork,
- fortran_int_t* iwork, const fortran_int_t liwork ) {
+inline std::ptrdiff_t spgvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, float* ap, float* bp,
+ float* w, float* z, const fortran_int_t ldz, float* work,
+ const fortran_int_t lwork, fortran_int_t* iwork,
+ const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSPGVD( &itype, &jobz, &lapack_option< UpLo >::value, &n, ap, bp,
             w, z, &ldz, work, &lwork, iwork, &liwork, &info );
@@ -68,10 +69,11 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spgvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, double* ap, double* bp, double* w, double* z,
- const fortran_int_t ldz, double* work, const fortran_int_t lwork,
- fortran_int_t* iwork, const fortran_int_t liwork ) {
+inline std::ptrdiff_t spgvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, double* ap, double* bp,
+ double* w, double* z, const fortran_int_t ldz, double* work,
+ const fortran_int_t lwork, fortran_int_t* iwork,
+ const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSPGVD( &itype, &jobz, &lapack_option< UpLo >::value, &n, ap, bp,
             w, z, &ldz, work, &lwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,8 +52,8 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t spgvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n, float* ap, float* bp,
- const float vl, const float vu, const fortran_int_t il,
+ const char range, const UpLo uplo, const fortran_int_t n, float* ap,
+ float* bp, const float vl, const float vu, const fortran_int_t il,
         const fortran_int_t iu, const float abstol, fortran_int_t& m,
         float* w, float* z, const fortran_int_t ldz, float* work,
         fortran_int_t* iwork, fortran_int_t* ifail ) {
@@ -71,8 +71,8 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t spgvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n, double* ap, double* bp,
- const double vl, const double vu, const fortran_int_t il,
+ const char range, const UpLo uplo, const fortran_int_t n, double* ap,
+ double* bp, const double vl, const double vu, const fortran_int_t il,
         const fortran_int_t iu, const double abstol, fortran_int_t& m,
         double* w, double* z, const fortran_int_t ldz, double* work,
         fortran_int_t* iwork, fortran_int_t* ifail ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sposv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -51,7 +51,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sposv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sposv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, double* a, const fortran_int_t lda,
         const double* b, const fortran_int_t ldb, double* x,
         const fortran_int_t ldx, double* work, float* swork,
@@ -160,8 +160,9 @@
     // Static member function that returns the minimum size of
     // workspace-array work.
     //
+ template< $TYPES >
     static std::ptrdiff_t min_size_work( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
     //

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -49,7 +49,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t spsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, float* ap, fortran_int_t* ipiv, float* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -64,7 +64,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t spsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, double* ap, fortran_int_t* ipiv, double* b,
         const fortran_int_t ldb ) {
     fortran_int_t info(0);
@@ -79,7 +79,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t spsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<float>* ap,
         fortran_int_t* ipiv, std::complex<float>* b,
         const fortran_int_t ldb ) {
@@ -95,7 +95,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t spsv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* ap,
         fortran_int_t* ipiv, std::complex<double>* b,
         const fortran_int_t ldb ) {

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -54,11 +54,12 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const float* ap, float* afp,
- fortran_int_t* ipiv, const float* b, const fortran_int_t ldb,
- float* x, const fortran_int_t ldx, float& rcond, float* ferr,
- float* berr, float* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t spsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, const float* ap,
+ float* afp, fortran_int_t* ipiv, const float* b,
+ const fortran_int_t ldb, float* x, const fortran_int_t ldx,
+ float& rcond, float* ferr, float* berr, float* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SSPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info );
@@ -71,11 +72,12 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const double* ap, double* afp,
- fortran_int_t* ipiv, const double* b, const fortran_int_t ldb,
- double* x, const fortran_int_t ldx, double& rcond, double* ferr,
- double* berr, double* work, fortran_int_t* iwork ) {
+inline std::ptrdiff_t spsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, const double* ap,
+ double* afp, fortran_int_t* ipiv, const double* b,
+ const fortran_int_t ldb, double* x, const fortran_int_t ldx,
+ double& rcond, double* ferr, double* berr, double* work,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DSPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, iwork, &info );
@@ -88,12 +90,13 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* ap,
- std::complex<float>* afp, fortran_int_t* ipiv,
- const std::complex<float>* b, const fortran_int_t ldb,
- std::complex<float>* x, const fortran_int_t ldx, float& rcond,
- float* ferr, float* berr, std::complex<float>* work, float* rwork ) {
+inline std::ptrdiff_t spsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* ap, std::complex<float>* afp,
+ fortran_int_t* ipiv, const std::complex<float>* b,
+ const fortran_int_t ldb, std::complex<float>* x,
+ const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
+ std::complex<float>* work, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CSPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info );
@@ -106,13 +109,13 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t spsvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* ap,
- std::complex<double>* afp, fortran_int_t* ipiv,
- const std::complex<double>* b, const fortran_int_t ldb,
- std::complex<double>* x, const fortran_int_t ldx, double& rcond,
- double* ferr, double* berr, std::complex<double>* work,
- double* rwork ) {
+inline std::ptrdiff_t spsvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* ap, std::complex<double>* afp,
+ fortran_int_t* ipiv, const std::complex<double>* b,
+ const fortran_int_t ldb, std::complex<double>* x,
+ const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
+ std::complex<double>* work, double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZSPSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, ap, afp,
             ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work, rwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syev( const char jobz, UpLo, const fortran_int_t n,
- float* a, const fortran_int_t lda, float* w, float* work,
- const fortran_int_t lwork ) {
+inline std::ptrdiff_t syev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, float* a, const fortran_int_t lda, float* w,
+ float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
     LAPACK_SSYEV( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
             &lwork, &info );
@@ -67,9 +67,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syev( const char jobz, UpLo, const fortran_int_t n,
- double* a, const fortran_int_t lda, double* w, double* work,
- const fortran_int_t lwork ) {
+inline std::ptrdiff_t syev( const char jobz, const UpLo uplo,
+ const fortran_int_t n, double* a, const fortran_int_t lda, double* w,
+ double* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
     LAPACK_DSYEV( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
             &lwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,9 +52,9 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syevd( const char jobz, UpLo, const fortran_int_t n,
- float* a, const fortran_int_t lda, float* w, float* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t syevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, float* a, const fortran_int_t lda, float* w,
+ float* work, const fortran_int_t lwork, fortran_int_t* iwork,
         const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSYEVD( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,
@@ -68,9 +68,9 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syevd( const char jobz, UpLo, const fortran_int_t n,
- double* a, const fortran_int_t lda, double* w, double* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t syevd( const char jobz, const UpLo uplo,
+ const fortran_int_t n, double* a, const fortran_int_t lda, double* w,
+ double* work, const fortran_int_t lwork, fortran_int_t* iwork,
         const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSYEVD( &jobz, &lapack_option< UpLo >::value, &n, a, &lda, w, work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,13 +52,13 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syevr( const char jobz, const char range, UpLo,
- const fortran_int_t n, float* a, const fortran_int_t lda,
- const float vl, const float vu, const fortran_int_t il,
- const fortran_int_t iu, const float abstol, fortran_int_t& m,
- float* w, float* z, const fortran_int_t ldz, fortran_int_t* isuppz,
- float* work, const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t syevr( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, float* a,
+ const fortran_int_t lda, const float vl, const float vu,
+ const fortran_int_t il, const fortran_int_t iu, const float abstol,
+ fortran_int_t& m, float* w, float* z, const fortran_int_t ldz,
+ fortran_int_t* isuppz, float* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSYEVR( &jobz, &range, &lapack_option< UpLo >::value, &n, a, &lda,
             &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, isuppz, work, &lwork,
@@ -72,13 +72,13 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syevr( const char jobz, const char range, UpLo,
- const fortran_int_t n, double* a, const fortran_int_t lda,
- const double vl, const double vu, const fortran_int_t il,
- const fortran_int_t iu, const double abstol, fortran_int_t& m,
- double* w, double* z, const fortran_int_t ldz, fortran_int_t* isuppz,
- double* work, const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t syevr( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, double* a,
+ const fortran_int_t lda, const double vl, const double vu,
+ const fortran_int_t il, const fortran_int_t iu, const double abstol,
+ fortran_int_t& m, double* w, double* z, const fortran_int_t ldz,
+ fortran_int_t* isuppz, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSYEVR( &jobz, &range, &lapack_option< UpLo >::value, &n, a, &lda,
             &vl, &vu, &il, &iu, &abstol, &m, w, z, &ldz, isuppz, work, &lwork,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,12 +52,12 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, float* a, const fortran_int_t lda,
- const float vl, const float vu, const fortran_int_t il,
- const fortran_int_t iu, const float abstol, fortran_int_t& m,
- float* w, float* z, const fortran_int_t ldz, float* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t syevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, float* a,
+ const fortran_int_t lda, const float vl, const float vu,
+ const fortran_int_t il, const fortran_int_t iu, const float abstol,
+ fortran_int_t& m, float* w, float* z, const fortran_int_t ldz,
+ float* work, const fortran_int_t lwork, fortran_int_t* iwork,
         fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_SSYEVX( &jobz, &range, &lapack_option< UpLo >::value, &n, a, &lda,
@@ -72,12 +72,12 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t syevx( const char jobz, const char range, UpLo,
- const fortran_int_t n, double* a, const fortran_int_t lda,
- const double vl, const double vu, const fortran_int_t il,
- const fortran_int_t iu, const double abstol, fortran_int_t& m,
- double* w, double* z, const fortran_int_t ldz, double* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t syevx( const char jobz, const char range,
+ const UpLo uplo, const fortran_int_t n, double* a,
+ const fortran_int_t lda, const double vl, const double vu,
+ const fortran_int_t il, const fortran_int_t iu, const double abstol,
+ fortran_int_t& m, double* w, double* z, const fortran_int_t ldz,
+ double* work, const fortran_int_t lwork, fortran_int_t* iwork,
         fortran_int_t* ifail ) {
     fortran_int_t info(0);
     LAPACK_DSYEVX( &jobz, &range, &lapack_option< UpLo >::value, &n, a, &lda,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,10 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sygv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, float* a, const fortran_int_t lda, float* b,
- const fortran_int_t ldb, float* w, float* work,
- const fortran_int_t lwork ) {
+inline std::ptrdiff_t sygv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, float* a,
+ const fortran_int_t lda, float* b, const fortran_int_t ldb, float* w,
+ float* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
     LAPACK_SSYGV( &itype, &jobz, &lapack_option< UpLo >::value, &n, a, &lda,
             b, &ldb, w, work, &lwork, &info );
@@ -68,10 +68,10 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sygv( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, double* a, const fortran_int_t lda, double* b,
- const fortran_int_t ldb, double* w, double* work,
- const fortran_int_t lwork ) {
+inline std::ptrdiff_t sygv( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, double* a,
+ const fortran_int_t lda, double* b, const fortran_int_t ldb,
+ double* w, double* work, const fortran_int_t lwork ) {
     fortran_int_t info(0);
     LAPACK_DSYGV( &itype, &jobz, &lapack_option< UpLo >::value, &n, a, &lda,
             b, &ldb, w, work, &lwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -52,10 +52,10 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sygvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, float* a, const fortran_int_t lda, float* b,
- const fortran_int_t ldb, float* w, float* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
+inline std::ptrdiff_t sygvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, float* a,
+ const fortran_int_t lda, float* b, const fortran_int_t ldb, float* w,
+ float* work, const fortran_int_t lwork, fortran_int_t* iwork,
         const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_SSYGVD( &itype, &jobz, &lapack_option< UpLo >::value, &n, a, &lda,
@@ -69,11 +69,11 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sygvd( const fortran_int_t itype, const char jobz, UpLo,
- const fortran_int_t n, double* a, const fortran_int_t lda, double* b,
- const fortran_int_t ldb, double* w, double* work,
- const fortran_int_t lwork, fortran_int_t* iwork,
- const fortran_int_t liwork ) {
+inline std::ptrdiff_t sygvd( const fortran_int_t itype, const char jobz,
+ const UpLo uplo, const fortran_int_t n, double* a,
+ const fortran_int_t lda, double* b, const fortran_int_t ldb,
+ double* w, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork, const fortran_int_t liwork ) {
     fortran_int_t info(0);
     LAPACK_DSYGVD( &itype, &jobz, &lapack_option< UpLo >::value, &n, a, &lda,
             b, &ldb, w, work, &lwork, iwork, &liwork, &info );

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -53,7 +53,7 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t sygvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n, float* a,
+ const char range, const UpLo uplo, const fortran_int_t n, float* a,
         const fortran_int_t lda, float* b, const fortran_int_t ldb,
         const float vl, const float vu, const fortran_int_t il,
         const fortran_int_t iu, const float abstol, fortran_int_t& m,
@@ -74,7 +74,7 @@
 //
 template< typename UpLo >
 inline std::ptrdiff_t sygvx( const fortran_int_t itype, const char jobz,
- const char range, UpLo, const fortran_int_t n, double* a,
+ const char range, const UpLo uplo, const fortran_int_t n, double* a,
         const fortran_int_t lda, double* b, const fortran_int_t ldb,
         const double vl, const double vu, const fortran_int_t il,
         const fortran_int_t iu, const double abstol, fortran_int_t& m,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,7 +55,7 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sysv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, float* a, const fortran_int_t lda,
         fortran_int_t* ipiv, float* b, const fortran_int_t ldb, float* work,
         const fortran_int_t lwork ) {
@@ -71,7 +71,7 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sysv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, double* a, const fortran_int_t lda,
         fortran_int_t* ipiv, double* b, const fortran_int_t ldb, double* work,
         const fortran_int_t lwork ) {
@@ -87,7 +87,7 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sysv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<float>* a,
         const fortran_int_t lda, fortran_int_t* ipiv, std::complex<float>* b,
         const fortran_int_t ldb, std::complex<float>* work,
@@ -104,7 +104,7 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysv( UpLo, const fortran_int_t n,
+inline std::ptrdiff_t sysv( const UpLo uplo, const fortran_int_t n,
         const fortran_int_t nrhs, std::complex<double>* a,
         const fortran_int_t lda, fortran_int_t* ipiv, std::complex<double>* b,
         const fortran_int_t ldb, std::complex<double>* work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -55,12 +55,13 @@
 // * float value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const float* a, const fortran_int_t lda,
- float* af, const fortran_int_t ldaf, fortran_int_t* ipiv,
- const float* b, const fortran_int_t ldb, float* x,
- const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
- float* work, const fortran_int_t lwork, fortran_int_t* iwork ) {
+inline std::ptrdiff_t sysvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, const float* a,
+ const fortran_int_t lda, float* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, const float* b, const fortran_int_t ldb,
+ float* x, const fortran_int_t ldx, float& rcond, float* ferr,
+ float* berr, float* work, const fortran_int_t lwork,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_SSYSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work,
@@ -74,12 +75,13 @@
 // * double value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const double* a, const fortran_int_t lda,
- double* af, const fortran_int_t ldaf, fortran_int_t* ipiv,
- const double* b, const fortran_int_t ldb, double* x,
- const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
- double* work, const fortran_int_t lwork, fortran_int_t* iwork ) {
+inline std::ptrdiff_t sysvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs, const double* a,
+ const fortran_int_t lda, double* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, const double* b, const fortran_int_t ldb,
+ double* x, const fortran_int_t ldx, double& rcond, double* ferr,
+ double* berr, double* work, const fortran_int_t lwork,
+ fortran_int_t* iwork ) {
     fortran_int_t info(0);
     LAPACK_DSYSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work,
@@ -93,14 +95,14 @@
 // * complex<float> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<float>* a,
- const fortran_int_t lda, std::complex<float>* af,
- const fortran_int_t ldaf, fortran_int_t* ipiv,
- const std::complex<float>* b, const fortran_int_t ldb,
- std::complex<float>* x, const fortran_int_t ldx, float& rcond,
- float* ferr, float* berr, std::complex<float>* work,
- const fortran_int_t lwork, float* rwork ) {
+inline std::ptrdiff_t sysvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<float>* a, const fortran_int_t lda,
+ std::complex<float>* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, const std::complex<float>* b,
+ const fortran_int_t ldb, std::complex<float>* x,
+ const fortran_int_t ldx, float& rcond, float* ferr, float* berr,
+ std::complex<float>* work, const fortran_int_t lwork, float* rwork ) {
     fortran_int_t info(0);
     LAPACK_CSYSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work,
@@ -114,14 +116,15 @@
 // * complex<double> value-type.
 //
 template< typename UpLo >
-inline std::ptrdiff_t sysvx( const char fact, UpLo, const fortran_int_t n,
- const fortran_int_t nrhs, const std::complex<double>* a,
- const fortran_int_t lda, std::complex<double>* af,
- const fortran_int_t ldaf, fortran_int_t* ipiv,
- const std::complex<double>* b, const fortran_int_t ldb,
- std::complex<double>* x, const fortran_int_t ldx, double& rcond,
- double* ferr, double* berr, std::complex<double>* work,
- const fortran_int_t lwork, double* rwork ) {
+inline std::ptrdiff_t sysvx( const char fact, const UpLo uplo,
+ const fortran_int_t n, const fortran_int_t nrhs,
+ const std::complex<double>* a, const fortran_int_t lda,
+ std::complex<double>* af, const fortran_int_t ldaf,
+ fortran_int_t* ipiv, const std::complex<double>* b,
+ const fortran_int_t ldb, std::complex<double>* x,
+ const fortran_int_t ldx, double& rcond, double* ferr, double* berr,
+ std::complex<double>* work, const fortran_int_t lwork,
+ double* rwork ) {
     fortran_int_t info(0);
     LAPACK_ZSYSVX( &fact, &lapack_option< UpLo >::value, &n, &nrhs, a, &lda,
             af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, ferr, berr, work,

Modified: sandbox/numeric_bindings/boost/numeric/bindings/std/valarray.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/std/valarray.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/std/valarray.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -29,12 +29,16 @@
         mpl::pair< tag::stride_type<1>, tag::contiguous >
> property_map;
 
- static std::ptrdiff_t size1( const Id& t ) {
- return t.size();
+ static std::ptrdiff_t size1( const Id& id ) {
+ return id.size();
     }
 
- static value_type* begin_value( Id& t ) {
- return &t.front();
+ static value_type* begin_value( Id& id ) {
+ return &id[0];
+ }
+
+ static value_type* end_value( Id& id ) {
+ return &id[0] + id.size();
     }
 
 };

Modified: sandbox/numeric_bindings/boost/numeric/bindings/tag.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/tag.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/tag.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -100,6 +100,7 @@
 ADD_TAG( non_unit )
 ADD_TAG( left )
 ADD_TAG( right )
+ADD_TAG( both )
 
 namespace tag {
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/ublas/hermitian.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/ublas/hermitian.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/ublas/hermitian.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -14,7 +14,8 @@
 #include <boost/numeric/bindings/end.hpp>
 #include <boost/numeric/bindings/ublas/detail/basic_ublas_adaptor.hpp>
 #include <boost/numeric/bindings/ublas/detail/convert_to.hpp>
-#include <boost/numeric/bindings/ublas/matrix_expression.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/triangular.hpp>
 #include <boost/numeric/bindings/value_type.hpp>
 #include <boost/numeric/ublas/hermitian.hpp>
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -67,6 +67,33 @@
 
 };
 
+template< typename T, std::size_t N, std::size_t M, typename Id, typename Enable >
+struct adaptor< ::boost::numeric::ublas::c_matrix< T, N, M >, Id, Enable > {
+
+ typedef typename copy_const< Id, T >::type value_type;
+ typedef mpl::map<
+ mpl::pair< tag::value_type, value_type >,
+ mpl::pair< tag::entity, tag::matrix >,
+ mpl::pair< tag::size_type<1>, mpl::int_<N> >,
+ mpl::pair< tag::size_type<2>, mpl::int_<M> >,
+ mpl::pair< tag::matrix_type, tag::general >,
+ mpl::pair< tag::data_structure, tag::linear_array >,
+ mpl::pair< tag::data_order, tag::row_major >,
+ mpl::pair< tag::stride_type<1>, mpl::int_<M> >,
+ mpl::pair< tag::stride_type<2>, tag::contiguous >
+ > property_map;
+
+ static value_type* begin_value( Id& id ) {
+ return id.data();
+ }
+
+ static value_type* end_value( Id& id ) {
+ return id.data() + N*M;
+ }
+
+};
+
+
 } // namespace detail
 } // namespace bindings
 } // namespace numeric

Modified: sandbox/numeric_bindings/boost/numeric/bindings/ublas/symmetric.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/ublas/symmetric.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/ublas/symmetric.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -14,7 +14,8 @@
 #include <boost/numeric/bindings/end.hpp>
 #include <boost/numeric/bindings/ublas/detail/convert_to.hpp>
 #include <boost/numeric/bindings/ublas/detail/basic_ublas_adaptor.hpp>
-#include <boost/numeric/bindings/ublas/matrix_expression.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/triangular.hpp>
 #include <boost/numeric/bindings/value_type.hpp>
 #include <boost/numeric/ublas/symmetric.hpp>
 

Modified: sandbox/numeric_bindings/boost/numeric/bindings/ublas/vector.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/ublas/vector.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/ublas/vector.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -47,6 +47,28 @@
 
 };
 
+template< typename T, std::size_t N, typename Id, typename Enable >
+struct adaptor< ublas::c_vector< T, N >, Id, Enable > {
+
+ typedef typename copy_const< Id, T >::type value_type;
+ typedef mpl::map<
+ mpl::pair< tag::value_type, value_type >,
+ mpl::pair< tag::entity, tag::vector >,
+ mpl::pair< tag::size_type<1>, mpl::int_<N> >,
+ mpl::pair< tag::data_structure, tag::linear_array >,
+ mpl::pair< tag::stride_type<1>, tag::contiguous >
+ > property_map;
+
+ static value_type* begin_value( Id& id ) {
+ return id.data();
+ }
+
+ static value_type* end_value( Id& id ) {
+ return id.data() + N;
+ }
+
+};
+
 } // namespace detail
 } // namespace bindings
 } // namespace numeric

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/others.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/others.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/others.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -14,15 +14,14 @@
 #include <algorithm>
 #include <complex>
 
-#include <boost/numeric/bindings/traits/std_vector.hpp>
-#include <boost/numeric/bindings/traits/std_valarray.hpp>
-#include <boost/numeric/bindings/traits/boost_array.hpp>
-#include <boost/numeric/bindings/traits/c_array.hpp>
-#include <boost/numeric/bindings/atlas/cblas1.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
+#include <boost/numeric/bindings/std/valarray.hpp>
+#include <boost/numeric/bindings/boost/array.hpp>
+#include <boost/numeric/bindings/blas/level1.hpp>
 
 #include "utils.h"
 
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
 
 using std::cout;
 using std::endl;
@@ -39,7 +38,7 @@
   print_v (sv, "sv");
   cout << "std::valarray" << endl;
   std::valarray<real_t> va (n);
- atlas::set (0.1, va);
+ blas::set (0.1, va);
   print_v (va, "va");
   cout << endl;
 
@@ -48,15 +47,15 @@
   for (int i = 0; i < n; ++i)
     d += sv[i] * va[i];
 
- cout << "is " << d << " == " << atlas::dot (sv, va) << " ?" << endl;
+ cout << "is " << d << " == " << blas::dot (sv, va) << " ?" << endl;
   cout << endl;
 
 #ifdef F_FLOAT
- cout << "sdsdot(): 10 + sv^T va = " << atlas::sdsdot (10, sv, va) << endl;
+ cout << "sdsdot(): 10 + sv^T va = " << blas::sdsdot (10, sv, va) << endl;
   cout << endl;
 #endif
 
- atlas::scal (real_t(2), sv);
+ blas::scal (real_t(2), sv);
   print_v (sv, "scal(): 2 sv");
 
   cout << endl;
@@ -65,33 +64,33 @@
   cout << "shuffled sv: ";
   std::copy (sv.begin(), sv.end(), std::ostream_iterator<real_t> (cout, " "));
   cout << endl;
- int i = atlas::iamax (sv);
+ int i = blas::iamax (sv);
   cout << "iamax():\n index of max el = " << i
        << "; max el = " << sv[i] << endl;
   cout << endl;
 
- cout << "asum():\n ||sv||_1 = " << atlas::asum (sv)
- << "; ||va||_1 = " << atlas::asum (va) << endl;
- cout << "nrm2():\n ||sv||_2 = " << atlas::nrm2 (sv)
- << "; ||va||_2 = " << atlas::nrm2 (va) << endl;
+ cout << "asum():\n ||sv||_1 = " << blas::asum (sv)
+ << "; ||va||_1 = " << blas::asum (va) << endl;
+ cout << "nrm2():\n ||sv||_2 = " << blas::nrm2 (sv)
+ << "; ||va||_2 = " << blas::nrm2 (va) << endl;
   cout << endl;
 
   cout << "boost::array" << endl;
   boost::array<double, 10> ba;
- atlas::set (0.1, ba);
+ blas::set (0.1, ba);
   print_v (ba, "ba");
   cout << "C array" << endl;
   typedef double double_array[10];
   double_array ca;
- atlas::set (1., ca);
+ blas::set (1., ca);
   print_v (ca, "ca");
   cout << endl;
   
- atlas::axpy (0.1, ba, ca);
+ blas::axpy (0.1, ba, ca);
   print_v (ca, "axpy(): 0.1 ba + ca");
 
- atlas::axpby (0.1, ba, 2., ca);
- print_v (ca, "axpby(): 0.1 ba + 2.0 ca");
+// blas::axpby (0.1, ba, 2., ca);
+// print_v (ca, "axpby(): 0.1 ba + 2.0 ca");
 
   cout << endl;
 }

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt2.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt2.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt2.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -3,13 +3,13 @@
 // TNT arrays
 
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas1.hpp>
-#include <boost/numeric/bindings/atlas/cblas2.hpp>
-#include <boost/numeric/bindings/traits/tnt.hpp>
+#include <boost/numeric/bindings/blas/level1.hpp>
+#include <boost/numeric/bindings/blas/level2.hpp>
+#include <boost/numeric/bindings/tnt.hpp>
 #include "utils.h"
 #include "tnt_utils.h"
 
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
 
 using std::cout;
 using std::endl;
@@ -27,10 +27,10 @@
   cout << endl;
 
   vct_t vx (2);
- atlas::set (1., vx);
+ blas::set (1., vx);
   print_v (vx, "vx");
   vct_t vy (3);
- atlas::set (0., vy);
+ blas::set (0., vy);
   print_v (vy, "vy");
   cout << endl;
 
@@ -39,26 +39,26 @@
   print_m (m, "m");
   cout << endl;
 
- atlas::gemv (CblasNoTrans, 1.0, m, vx, 0.0, vy);
+ blas::gemv (CblasNoTrans, 1.0, m, vx, 0.0, vy);
   print_v (vy, "m vx");
 
- atlas::gemv (m, vx, vy);
+ blas::gemv (m, vx, vy);
   print_v (vy, "m vx");
   cout << endl;
 
- atlas::set (0, vx);
- atlas::set (1, vy);
- atlas::gemv (CblasTrans, 1.0, m, vy, 0.0, vx);
+ blas::set (0, vx);
+ blas::set (1, vy);
+ blas::gemv (CblasTrans, 1.0, m, vy, 0.0, vx);
   print_v (vx, "m^T vy");
   cout << endl;
 
- atlas::set (1, vy);
- atlas::gemv (CblasNoTrans, 1.0, m, vx, 1.0, vy);
+ blas::set (1, vy);
+ blas::gemv (CblasNoTrans, 1.0, m, vx, 1.0, vy);
   print_v (vy, "vy + m vx");
   cout << endl;
 
- atlas::set (1, vy);
- atlas::gemv (CblasNoTrans, 2.0, m, vx, 0.5, vy);
+ blas::set (1, vy);
+ blas::gemv (CblasNoTrans, 2.0, m, vx, 0.5, vy);
   print_v (vy, "0.5 vy + 2.0 m vx");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -3,12 +3,12 @@
 // TNT arrays
 
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
 #include <boost/numeric/bindings/traits/tnt.hpp>
 #include "utils.h"
 #include "tnt_utils.h"
 
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
 
 using std::cout;
 using std::endl;
@@ -38,15 +38,15 @@
   print_m (c, "C");
   cout << endl;
 
- atlas::gemm (a, b, c);
+ blas::gemm (a, b, c);
   print_m (c, "A B");
   cout << endl;
 
- atlas::gemm (CblasNoTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm (CblasNoTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
   print_m (c, "A B");
   cout << endl;
 
- atlas::gemm (1.0, a, b, 0.0, c);
+ blas::gemm (1.0, a, b, 0.0, c);
   print_m (c, "A B");
   cout << endl;
 
@@ -54,21 +54,21 @@
   print_m (c, "C");
   cout << endl;
 
- atlas::gemm (1.0, a, b, 0.05, c);
+ blas::gemm (1.0, a, b, 0.05, c);
   print_m (c, "0.05 C + A B");
   cout << endl;
 
   m_t d (3, 2);
 
- atlas::gemm (CblasTrans, CblasTrans, 1.0, b, a, 0.0, d);
+ blas::gemm (CblasTrans, CblasTrans, 1.0, b, a, 0.0, d);
   print_m (d, "B^T A^T");
   cout << endl;
 
- atlas::gemm (CblasTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm (CblasTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
   print_m (c, "A^T B");
   cout << endl;
 
- atlas::gemm (CblasTrans, CblasNoTrans, 1.0, b, a, 0.0, d);
+ blas::gemm (CblasTrans, CblasNoTrans, 1.0, b, a, 0.0, d);
   print_m (d, "B^T A");
 
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt_gesv.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt_gesv.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/tnt_gesv.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,7 +7,7 @@
 
 #include <cstddef>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
+#include <boost/numeric/bindings/blas.hpp>
 #include <boost/numeric/bindings/atlas/clapack.hpp>
 #include <boost/numeric/bindings/traits/tnt.hpp>
 #ifndef F_FORTRAN
@@ -16,7 +16,7 @@
 # include <tnt/tnt_fortran_array2d_utils.h>
 #endif
 
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
 
 using std::size_t;
 using std::cout;
@@ -56,7 +56,7 @@
   cout << "A: " << a << endl;
   cout << "B: " << b << endl;
 
- atlas::lu_solve (a, b);
+ blas::lu_solve (a, b);
   cout << "X: " << b << endl;
 
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_cmatr3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_cmatr3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_cmatr3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -6,16 +6,18 @@
 
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/conj.hpp>
 #ifdef F_USE_STD_VECTOR
 #include <vector>
-#include <boost/numeric/bindings/traits/std_vector.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
 #endif
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
 
 using std::cout;
 using std::endl;
@@ -54,7 +56,7 @@
   m_t c (2, 3);
 
   // c = a b
- atlas::gemm (a, b, c);
+ blas::gemm ( 1.0, a, b, 0.0, c);
   print_m (c, "A B");
   cout << endl;
 
@@ -66,17 +68,17 @@
   cout << endl;
   
   // c = a b
- atlas::gemm (CblasNoTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm (1.0, a, b, 0.0, c);
   print_m (c, "A B");
   cout << endl;
 
   // c = a^T b
- atlas::gemm (CblasTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm ( 1.0, bindings::trans(a), b, 0.0, c);
   print_m (c, "A^T B");
   cout << endl;
 
   // c = a^H b
- atlas::gemm (CblasConjTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm (1.0, bindings::conj(a), b, 0.0, c);
   print_m (c, "A^H B");
 
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -8,15 +8,16 @@
 #include <cstddef>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/std_vector.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/lapack/driver/gesv.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace lapack = boost::numeric::bindings::lapack;
 
 using std::size_t;
 using std::cout;
@@ -62,15 +63,15 @@
   m_t aa (a); // copy of a, because a is `lost' after gesv()
 
   ublas::matrix_column<m_t> xc0 (x, 0), xc1 (x, 1);
- atlas::set (1., xc0); // x[.,0] = 1
- atlas::set (2., xc1); // x[.,1] = 2
+ blas::set (1., xc0); // x[.,0] = 1
+ blas::set (2., xc1); // x[.,1] = 2
 #ifndef F_ROW_MAJOR
- atlas::gemm (a, x, b); // b = a x, so we know the result ;o)
+ blas::gemm ( 1.0, a, x, 0.0, b); // b = a x, so we know the result ;o)
 #else
   // see leading comments for `gesv()' in clapack.hpp
   ublas::matrix_row<m_t> br0 (b, 0), br1 (b, 1);
- atlas::gemv (a, xc0, br0); // b[0,.] = a x[.,0]
- atlas::gemv (a, xc1, br1); // b[1,.] = a x[.,1] => b^T = a x
+ blas::gemv (a, xc0, br0); // b[0,.] = a x[.,0]
+ blas::gemv (a, xc1, br1); // b[1,.] = a x[.,1] => b^T = a x
 #endif
 
   print_m (a, "A");
@@ -78,15 +79,15 @@
   print_m (b, "B");
   cout << endl;
 
- atlas::gesv (a, ipiv, b); // solving the system, b contains x
+ lapack::gesv (a, ipiv, b); // solving the system, b contains x
   print_m (b, "X");
   cout << endl;
 
 #ifndef F_ROW_MAJOR
- atlas::gemm (aa, b, x); // check the solution
+ blas::gemm ( 1.0, aa, b, 0.0, x); // check the solution
 #else
- atlas::gemv (aa, br0, xc0);
- atlas::gemv (aa, br1, xc1);
+ blas::gemv (aa, br0, xc0);
+ blas::gemv (aa, br1, xc1);
 #endif
   print_m (x, "B = A X");
   cout << endl;
@@ -117,21 +118,22 @@
   cm_t caa (ca);
   
   ublas::matrix_column<cm_t> cx0 (cx, 0);
- atlas::set (cmpx (1, -1), cx0);
+ blas::set (cmpx (1, -1), cx0);
 #ifndef F_ROW_MAJOR
   ublas::matrix_column<cm_t> cb0 (cb, 0);
 #else
   ublas::matrix_row<cm_t> cb0 (cb, 0);
 #endif
- atlas::gemv (ca, cx0, cb0);
+ blas::gemv ( 1.0, ca, cx0, 0.0, cb0);
   print_m (cb, "CB");
   cout << endl;
   
- int ierr = atlas::gesv (ca, cb); // with `internal' pivot vector
+ std::vector< int > pivot( bindings::size1(ca) );
+ int ierr = lapack::gesv (ca, pivot, cb); // with `internal' pivot vector
   if (ierr == 0) {
     print_m (cb, "CX");
     cout << endl;
- atlas::gemv (caa, cb0, cx0);
+ blas::gemv (1.0, caa, cb0, 0.0, cx0);
     print_m (cx, "CB");
   }
   else

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv2.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv2.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv2.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,14 +7,17 @@
 
 #include <cstddef>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/blas/level1/set.hpp>
+#include <boost/numeric/bindings/blas/level3/gemm.hpp>
+#include <boost/numeric/bindings/lapack/driver/gesv.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace lapack = boost::numeric::bindings::lapack;
 
 using std::size_t;
 using std::cout;
@@ -47,9 +50,9 @@
   m_t const aa (a); // copy of a, because a is `lost' after gesv()
 
   ublas::matrix_column<m_t> xc0 (x, 0), xc1 (x, 1);
- atlas::set (1., xc0);
- atlas::set (2., xc1);
- atlas::gemm (a, x, bb); // bb = a x, so we know the result ;o)
+ blas::set( 1., xc0 );
+ blas::set (2., xc1);
+ blas::gemm ( 1., a, x, 0.0, bb); // bb = a x, so we know the result ;o)
 
   print_m (a, "A");
   cout << endl;
@@ -65,16 +68,17 @@
   print_m (b, "B for gesv()");
   cout << endl;
 
- atlas::gesv (a, b); // solving the system, b contains x
+ std::vector< int > pivot( bindings::size1( a ) );
+ lapack::gesv (a, pivot, b); // solving the system, b contains x
 
 #ifndef F_ROW_MAJOR
   print_m (b, "X");
   cout << endl;
- atlas::gemm (aa, b, x);
+ blas::gemm (1.0, aa, b, 0.0, x);
 #else
   print_m (b, "X^T");
   cout << endl;
- atlas::gemm (CblasNoTrans, CblasTrans, 1.0, aa, b, 0.0, x);
+ blas::gemm ( 1.0, aa, bindings::trans(b), 0.0, x);
 #endif
   print_m (x, "B = A X");
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,13 +7,14 @@
 
 #include <cstddef>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
+#include <boost/numeric/bindings/lapack/driver/gesv.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
 #include <boost/numeric/ublas/io.hpp>
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace lapack = boost::numeric::bindings::lapack;
+namespace bindings = boost::numeric::bindings;
 
 using std::size_t;
 using std::cout;
@@ -47,7 +48,8 @@
   cout << "A: " << a << endl;
   cout << "B: " << b << endl;
 
- atlas::lu_solve (a, b);
+ std::vector< int > pivot( bindings::size1( a ) );
+ lapack::gesv (a, pivot, b);
   cout << "X: " << b << endl;
 
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv4.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv4.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv4.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -3,22 +3,17 @@
 // using driver function gesv()
 // with ublas::vector<> as RHS
 
-//#define BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-//#define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-//#define BOOST_NUMERIC_BINDINGS_NO_SANITY_CHECK
-//#define BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
-
 #include <cstddef>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_vector2.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
+#include <boost/numeric/bindings/lapack/driver/gesv.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/vector.hpp>
 #include <boost/numeric/ublas/io.hpp>
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace lapack = boost::numeric::bindings::lapack;
+namespace bindings = boost::numeric::bindings;
 
 using std::size_t;
 using std::cout;
@@ -43,7 +38,8 @@
   cout << "A: " << a << endl;
   cout << "B: " << b << endl;
 
- atlas::lu_solve (a, b);
+ std::vector< int > pivot( bindings::size1( a ) );
+ lapack::gesv (a, pivot, b);
   cout << "X: " << b << endl;
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv5.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv5.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_gesv5.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -3,25 +3,18 @@
 // using driver function gesv()
 // with c_vector<> & c_matrix<>
 
-//#define BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-//#define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-//#define BOOST_NUMERIC_BINDINGS_NO_SANITY_CHECK
-//#define BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK
-
 #include <cstddef>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
-# include <boost/numeric/bindings/traits/ublas_vector2.hpp>
-#endif
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/lapack/driver/gesv.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/ublas/vector.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
 #include <boost/numeric/ublas/io.hpp>
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace bindings = boost::numeric::bindings;
+namespace lapack = boost::numeric::bindings::lapack;
 
 using std::size_t;
 using std::cout;
@@ -43,7 +36,9 @@
   a(2,0) = 1.; a(2,1) = -1.; a(2,2) = -1.;
 
   mrhs_t b (1, n); // right-hand side vector
- b(0,0) = 4.; b(0,1) = 9.; b(0,2) = -2.;
+ b(0,0) = 4.;
+ b(0,1) = 9.;
+ b(0,2) = -2.;
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
   m3x3_t a2; // for part 2
@@ -56,7 +51,8 @@
   cout << "A: " << a << endl;
   cout << "B: " << b << endl;
 
- atlas::lu_solve (a, b);
+ std::vector< int > pivota( bindings::size1( a ) );
+ lapack::gesv (a, pivota, b);
   cout << "X: " << b << endl;
 
   cout << endl;
@@ -66,7 +62,8 @@
   cout << "A: " << a2 << endl;
   cout << "B: " << b2 << endl;
 
- atlas::lu_solve (a2, b2);
+ std::vector< int > pivota2( bindings::size1( a2 ) );
+ lapack::gesv (a2, pivota2, b2);
   cout << "X: " << b2 << endl;
 
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getrf_getrs.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getrf_getrs.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getrf_getrs.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,15 +7,17 @@
 
 #include <cstddef>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
-#include <boost/numeric/bindings/traits/std_vector.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/lapack/computational/getrf.hpp>
+#include <boost/numeric/bindings/lapack/computational/getrs.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace lapack = boost::numeric::bindings::lapack;
 
 using std::size_t;
 using std::cout;
@@ -54,15 +56,15 @@
   swap (ar1, ar3); // swap rows to force pivoting
 
   ublas::matrix_column<m_t> xc0 (x, 0), xc1 (x, 1);
- atlas::set (1., xc0); // x[.,0] = 1
- atlas::set (2., xc1); // x[.,1] = 2
+ blas::set (1., xc0); // x[.,0] = 1
+ blas::set (2., xc1); // x[.,1] = 2
 #ifndef F_ROW_MAJOR
- atlas::gemm (a, x, b); // b = a x, so we know the result ;o)
+ blas::gemm ( 1.0, a, x, 0.0, b); // b = a x, so we know the result ;o)
 #else
   // see leading comments for `gesv()' in clapack.hpp
   ublas::matrix_row<m_t> br0 (b, 0), br1 (b, 1);
- atlas::gemv (a, xc0, br0); // b[0,.] = a x[.,0]
- atlas::gemv (a, xc1, br1); // b[1,.] = a x[.,1] => b^T = a x
+ blas::gemv (a, xc0, br0); // b[0,.] = a x[.,0]
+ blas::gemv (a, xc1, br1); // b[1,.] = a x[.,1] => b^T = a x
 #endif
 
   print_m (a, "A");
@@ -72,8 +74,8 @@
 
   std::vector<int> ipiv (n); // pivot vector
 
- atlas::getrf (a, ipiv); // factor a
- atlas::getrs (a, ipiv, b); // solve from factorization
+ lapack::getrf (a, ipiv); // factor a
+ lapack::getrs (a, ipiv, b); // solve from factorization
   print_m (b, "X");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getri.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getri.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_getri.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -8,14 +8,14 @@
 #include <cstddef>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
 #include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
 #include <boost/numeric/bindings/traits/std_vector.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
 
 using std::size_t;
 using std::cout;
@@ -50,12 +50,12 @@
   m_t aa (a); // copy of a, for later use
 
   std::vector<int> ipiv (n); // pivot vector
- atlas::lu_factor (a, ipiv); // alias for getrf()
- atlas::lu_invert (a, ipiv); // alias for getri()
+ blas::lu_factor (a, ipiv); // alias for getrf()
+ blas::lu_invert (a, ipiv); // alias for getri()
 
   m_t i1 (n, n), i2 (n, n);
- atlas::gemm (a, aa, i1); // i1 should be (almost) identity matrix
- atlas::gemm (aa, a, i2); // i2 should be (almost) identity matrix
+ blas::gemm (a, aa, i1); // i1 should be (almost) identity matrix
+ blas::gemm (aa, a, i2); // i2 should be (almost) identity matrix
 
   print_m (i1, "I = A^(-1) * A");
   cout << endl;
@@ -85,14 +85,14 @@
   
   std::vector<int> ipiv2 (3);
   
- int ierr = atlas::getrf (ca, ipiv2);
+ int ierr = lapack::getrf (ca, ipiv2);
   if (ierr == 0) {
- atlas::getri (ca, ipiv2);
+ blas::getri (ca, ipiv2);
     cm_t ii (3, 3);
- atlas::gemm (ca, caa, ii);
+ blas::gemm (ca, caa, ii);
     print_m (ii, "I = CA^(-1) * CA");
     cout << endl;
- atlas::gemm (caa, ca, ii);
+ blas::gemm (caa, ca, ii);
     print_m (ii, "I = CA * CA^(-1)");
     cout << endl;
   }

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -5,14 +5,15 @@
 #include <stddef.h>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_hermitian.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/hermitian.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::cout;
 using std::cin;
@@ -87,19 +88,19 @@
   print_m (rbl, "b == rb");
   cout << endl;
 
- atlas::hemm (ucs, cbl, ccl);
+ blas::hemm ( tag::left(), 1.0, ucs, cbl, 0.0, ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::hemm (lcs, cbl, ccl);
+ blas::hemm ( tag::left(), 1.0, lcs, cbl, 0.0, ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::hemm (urs, rbl, rcl);
+ blas::hemm ( tag::left(), 1.0, urs, rbl, 0.0, rcl);
   print_m (rcl, "c = a b");
   cout << endl;
 
- atlas::hemm (lrs, rbl, rcl);
+ blas::hemm ( tag::left(), 1.0, lrs, rbl, 0.0, rcl);
   print_m (rcl, "c = a b");
   cout << endl;
   
@@ -116,19 +117,19 @@
   print_m (rbr, "b == rb");
   cout << endl;
 
- atlas::hemm (cbr, ucs, ccr);
+ blas::hemm ( tag::right(), 1.0, ucs, cbr, 0.0, ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::hemm (cbr, lcs, ccr);
+ blas::hemm ( tag::right(), 1.0, lcs, cbr, 0.0, ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::hemm (rbr, urs, rcr);
+ blas::hemm ( tag::right(), 1.0, urs, rbr, 0.0, rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 
- atlas::hemm (rbr, lrs, rcr);
+ blas::hemm ( tag::right(), 1.0, lrs, rbr, 0.0, rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3h2k.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3h2k.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3h2k.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -5,13 +5,16 @@
 #include <stddef.h>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/traits/ublas_hermitian.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/ublas/hermitian.hpp>
+#include <boost/numeric/bindings/conj.hpp>
+#include <boost/numeric/bindings/upper.hpp>
+#include <boost/numeric/bindings/lower.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
 
 using std::cout;
 using std::cin;
@@ -69,10 +72,10 @@
   curha_t curha (crmu);
   clrha_t clrha (crml);
 
- atlas::her2k (CblasNoTrans, cac, cbc, cucha);
- atlas::her2k (CblasNoTrans, cmplx_t(1,0), cac, cbc, 0., clcha);
- atlas::her2k (CblasNoTrans, cmplx_t(1,0), car, cbr, 0., curha);
- atlas::her2k (CblasNoTrans, car, cbr, clrha);
+ blas::her2k (1.0, cac, cbc, 0.0, cucha);
+ blas::her2k (cmplx_t(1,0), cac, cbc, 0., clcha);
+ blas::her2k (cmplx_t(1,0), car, cbr, 0., curha);
+ blas::her2k (1.0, car, cbr, 0.0, clrha);
 
   print_m (cucha, "cucha");
   cout << endl;
@@ -104,10 +107,10 @@
   init_m (crmu, const_val<cmplx_t> (cmplx_t (0, 0)));
   init_m (crml, const_val<cmplx_t> (cmplx_t (0, 0)));
 
- atlas::her2k (CblasUpper, CblasConjTrans, 1.0, cact, cbct, 0.0, ccmu);
- atlas::her2k (CblasLower, CblasConjTrans, 1.0, cact, cbct, 0.0, ccml);
- atlas::her2k (CblasUpper, CblasConjTrans, 1.0, cart, cbrt, 0.0, crmu);
- atlas::her2k (CblasLower, CblasConjTrans, 1.0, cart, cbrt, 0.0, crml);
+ blas::her2k (1.0, bindings::conj(cact), cbct, 0.0, bindings::upper(ccmu));
+ blas::her2k (1.0, bindings::conj(cact), cbct, 0.0, bindings::lower(ccml));
+ blas::her2k (1.0, bindings::conj(cart), cbrt, 0.0, bindings::upper(crmu));
+ blas::her2k (1.0, bindings::conj(cart), cbrt, 0.0, bindings::lower(crml));
 
   print_m (ccmu, "ccmu");
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3herk.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3herk.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_herm3herk.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -4,13 +4,16 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/traits/ublas_hermitian.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/ublas/hermitian.hpp>
+#include <boost/numeric/bindings/upper.hpp>
+#include <boost/numeric/bindings/lower.hpp>
+#include <boost/numeric/bindings/conj.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
 
 using std::cout;
 using std::cin;
@@ -67,10 +70,10 @@
   urha_t urha (rmu);
   lrha_t lrha (rml);
 
- atlas::herk (CblasNoTrans, ac, ucha);
- atlas::herk (CblasNoTrans, 1.0, ac, 0.0, lcha);
- atlas::herk (CblasNoTrans, 1.0, ar, 0.0, urha);
- atlas::herk (CblasNoTrans, ar, lrha);
+ blas::herk (1.0, ac, 0.0, ucha);
+ blas::herk (1.0, ac, 0.0, lcha);
+ blas::herk (1.0, ar, 0.0, urha);
+ blas::herk (1.0, ar, 0.0, lrha);
 
   print_m (ucha, "ucha");
   cout << endl;
@@ -95,10 +98,10 @@
   init_m (rmu, const_val<cmplx_t> (cmplx_t (0, 0)));
   init_m (rml, const_val<cmplx_t> (cmplx_t (0, 0)));
 
- atlas::herk (CblasUpper, CblasConjTrans, 1.0, act, 0.0, cmu);
- atlas::herk (CblasLower, CblasConjTrans, 1.0, act, 0.0, cml);
- atlas::herk (CblasUpper, CblasConjTrans, 1.0, art, 0.0, rmu);
- atlas::herk (CblasLower, CblasConjTrans, 1.0, art, 0.0, rml);
+ blas::herk ( 1.0, bindings::conj(act), 0.0, bindings::upper(cmu));
+ blas::herk ( 1.0, bindings::conj(act), 0.0, bindings::lower(cml));
+ blas::herk ( 1.0, bindings::conj(art), 0.0, bindings::upper(rmu));
+ blas::herk ( 1.0, bindings::conj(art), 0.0, bindings::lower(rml));
 
   print_m (cmu, "cmu");
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_matr3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_matr3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_matr3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,17 +7,18 @@
 //#define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/trans.hpp>
 #ifdef F_USE_STD_VECTOR
 #include <vector>
-#include <boost/numeric/bindings/traits/std_vector.hpp>
+#include <boost/numeric/bindings/std/vector.hpp>
 #endif
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
 
 using std::cout;
 using std::endl;
@@ -45,10 +46,10 @@
   m_t c (4, 6);
 
   // c = a b
- atlas::gemm (a, b, c);
+ blas::gemm ( 1.0, a, b, 0.0, c);
   print_m (c, "c = a b");
   cout << endl;
- atlas::gemm (CblasNoTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm ( 1.0, a, b, 0.0, c);
   print_m (c, "c = a b");
   cout << endl;
 
@@ -56,24 +57,24 @@
   print_m (c, "c");
   cout << endl;
   // c = 2 a b + 0.5 c
- atlas::gemm (2.0, a, b, 0.05, c);
+ blas::gemm (2.0, a, b, 0.05, c);
   print_m (c, "c = 2 a b + 0.05 c");
   cout << endl;
 
   m_t d (6, 4);
 
   // d = b^T a^T
- atlas::gemm (CblasTrans, CblasTrans, 1.0, b, a, 0.0, d);
+ blas::gemm ( 1.0, bindings::trans(b), bindings::trans(a), 0.0, d);
   print_m (d, "d = b^T a^T");
   cout << endl;
 
   // c = a^T b
- atlas::gemm (CblasTrans, CblasNoTrans, 1.0, a, b, 0.0, c);
+ blas::gemm (1.0, bindings::trans(a), b, 0.0, c);
   print_m (c, "c = a^T b");
   cout << endl;
 
   // d = b^T a
- atlas::gemm (CblasTrans, CblasNoTrans, 1.0, b, a, 0.0, d);
+ blas::gemm ( 1.0, bindings::trans(b), a, 0.0, d);
   print_m (d, "d = b^T a");
   cout << endl;
 
@@ -82,22 +83,22 @@
   ublas::matrix_range<m_t> dr (d, ublas::range (1, 5), ublas::range (0, 4));
 
   // d[1..5][0..4] = a b[0..4][0..4]
- atlas::gemm (a, br, dr);
+ blas::gemm ( 1.0, a, br, 0.0, dr);
   print_m (d, "d[1..5][0..4] = a b[0..4][0..4]");
   cout << endl;
   
   // d[1..5][0..4] = b[0..4][0..4] a
- atlas::gemm (br, a, dr);
+ blas::gemm ( 1.0, br, a, 0.0, dr);
   print_m (d, "d[1..5][0..4] = b[0..4][0..4] a");
   cout << endl;
   
   // d[1..5][0..4] = b[0..4][0..4] a^T
- atlas::gemm (CblasNoTrans, CblasTrans, 1.0, br, a, 0.0, dr);
+ blas::gemm ( 1.0, br, bindings::trans(a), 0.0, dr);
   print_m (d, "d[1..5][0..4] = b[0..4][0..4] a^T");
   cout << endl;
 
   // d[1..5][0..4] = a b[0..4][0..4]^T
- atlas::gemm (CblasNoTrans, CblasTrans, 1.0, a, br, 0.0, dr);
+ blas::gemm ( 1.0, a, bindings::trans(br), 0.0, dr);
   print_m (d, "d[1..5][0..4] = a b[0..4][0..4]^T");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_posv.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_posv.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_posv.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -12,18 +12,18 @@
 #include <cstddef>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas1.hpp>
-#include <boost/numeric/bindings/atlas/cblas2.hpp>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
-#include <boost/numeric/bindings/traits/ublas_hermitian.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/lapack/driver/posv.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
+#include <boost/numeric/bindings/ublas/hermitian.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace lapack = boost::numeric::bindings::lapack;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::size_t;
 using std::cout;
@@ -91,24 +91,24 @@
   m_t b (nrhs, n);
 #endif
   ublas::matrix_column<m_t> xc0 (x, 0), xc1 (x, 1);
- atlas::set (1., xc0); // x[.,0] = 1
- atlas::set (2., xc1); // x[.,1] = 2
+ blas::set (1., xc0); // x[.,0] = 1
+ blas::set (2., xc1); // x[.,1] = 2
 #ifndef F_ROW_MAJOR
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::symm (sa, x, b); // b = a x, so we know the result ;o)
+ blas::symm ( tag::left(), 1.0, sa, x, 0.0, b); // b = a x, so we know the result ;o)
 #else
- atlas::symm (CblasLeft, 1.0, sa, x, 0.0, b);
+ blas::symm (CblasLeft, 1.0, sa, x, 0.0, b);
 #endif
 #else
   // see leading comments for `gesv()' in clapack.hpp
   ublas::matrix_row<m_t> br0 (b, 0), br1 (b, 1);
- atlas::symv (sa, xc0, br0); // b[0,.] = a x[.,0]
- atlas::symv (sa, xc1, br1); // b[1,.] = a x[.,1] => b^T = a x
+ blas::symv (sa, xc0, br0); // b[0,.] = a x[.,0]
+ blas::symv (sa, xc1, br1); // b[1,.] = a x[.,1] => b^T = a x
 #endif
   print_m (b, "b");
   cout << endl;
 
- atlas::cholesky_solve (sa, b); // same as posv()
+ lapack::posv (sa, b); // same as posv()
   print_m (b, "x");
   cout << endl;
 
@@ -139,7 +139,7 @@
   cout << endl;
 
   ublas::matrix_column<cm_t> cx0 (cx, 0);
- atlas::set (cmplx_t (1, -1), cx0);
+ blas::set (cmplx_t (1, -1), cx0);
   print_m (cx, "cx");
   cout << endl;
 #ifndef F_ROW_MAJOR
@@ -147,11 +147,11 @@
 #else
   ublas::matrix_row<cm_t> cb0 (cb, 0);
 #endif
- atlas::hemv (ha, cx0, cb0);
+ blas::hemv ( 1.0, ha, cx0, 0.0, cb0);
   print_m (cb, "cb");
   cout << endl;
   
- int ierr = atlas::posv (ha, cb);
+ int ierr = lapack::posv (ha, cb);
   if (ierr == 0)
     print_m (cb, "cx");
   else
@@ -185,14 +185,14 @@
   print_m_data (ha, "ha");
   cout << endl;
 
- atlas::set (cmplx_t (1, 1), cx0);
+ blas::set (cmplx_t (1, 1), cx0);
   print_m (cx, "cx");
   cout << endl;
- atlas::hemv (ha, cx0, cb0);
+ blas::hemv (1.0, ha, cx0, 0.0, cb0);
   print_m (cb, "cb");
   cout << endl;
   
- ierr = atlas::cholesky_solve (ha, cb);
+ ierr = lapack::posv( ha, cb);
   if (ierr == 0)
     print_m (cb, "cx");
   else
@@ -242,7 +242,7 @@
   print_m (cb32, "cb");
   cout << endl;
   
- ierr = atlas::posv (ha, cb32);
+ ierr = lapack::posv (ha, cb32);
 
   if (ierr == 0)
     print_m (cb32, "cx");

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potrf_potrs.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potrf_potrs.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potrf_potrs.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -12,18 +12,19 @@
 #include <cstddef>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas1.hpp>
-#include <boost/numeric/bindings/atlas/cblas2.hpp>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
-#include <boost/numeric/bindings/traits/ublas_hermitian.hpp>
-#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/lapack/computational/potrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/potrf.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
+#include <boost/numeric/bindings/ublas/hermitian.hpp>
+#include <boost/numeric/bindings/ublas/matrix_proxy.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace lapack = boost::numeric::bindings::lapack;
 
 using std::size_t;
 using std::cout;
@@ -74,25 +75,25 @@
   m_t b (nrhs, n);
 #endif
   ublas::matrix_column<m_t> xc0 (x, 0), xc1 (x, 1);
- atlas::set (1., xc0);
- atlas::set (2., xc1);
+ blas::set (1., xc0);
+ blas::set (2., xc1);
 #ifndef F_ROW_MAJOR
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::symm (sa, x, b);
+ blas::symm ( bindings::tag::left(), 1.0, sa, x, 0.0, b);
 #else
- atlas::symm (CblasLeft, 1.0, sa, x, 0.0, b);
+ blas::symm ( bindings::tag::left(), 1.0, sa, x, 0.0, b);
 #endif
 #else
   ublas::matrix_row<m_t> br0 (b, 0), br1 (b, 1);
- atlas::symv (sa, xc0, br0);
- atlas::symv (sa, xc1, br1);
+ blas::symv (sa, xc0, br0);
+ blas::symv (sa, xc1, br1);
 #endif
   print_m (b, "b");
   cout << endl;
 
- int ierr = atlas::cholesky_factor (sa); // potrf()
+ int ierr = lapack::potrf (sa); // potrf()
   if (!ierr) {
- atlas::cholesky_substitute (sa, b); // potrs()
+ lapack::potrs (sa, b); // potrs()
     print_m (b, "x");
   }
   cout << endl;
@@ -130,7 +131,7 @@
   cout << endl;
 
   ublas::matrix_column<cm_t> cx0 (cx, 0);
- atlas::set (cmplx_t (1, -1), cx0);
+ blas::set (cmplx_t (1, -1), cx0);
   print_m (cx, "cx");
   cout << endl;
 #ifndef F_ROW_MAJOR
@@ -138,13 +139,13 @@
 #else
   ublas::matrix_row<cm_t> cb0 (cb, 0);
 #endif
- atlas::hemv (ha, cx0, cb0);
+ blas::hemv (1.0, ha, cx0, 0.0, cb0);
   print_m (cb, "cb");
   cout << endl;
   
- ierr = atlas::potrf (ha);
+ ierr = lapack::potrf (ha);
   if (ierr == 0) {
- atlas::potrs (ha, cb);
+ lapack::potrs (ha, cb);
     print_m (cb, "cx");
   }
   else
@@ -193,9 +194,9 @@
   print_m (cb32, "cb");
   cout << endl;
   
- ierr = atlas::potrf (ha);
+ ierr = lapack::potrf (ha);
   if (ierr == 0) {
- atlas::potrs (ha, cb32);
+ lapack::potrs (ha, cb32);
     print_m (cb32, "cx");
   }
   else

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potri.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potri.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_potri.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -11,15 +11,18 @@
 #include <cstddef>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/atlas/clapack.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
-#include <boost/numeric/bindings/traits/ublas_hermitian.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/lapack/computational/potri.hpp>
+#include <boost/numeric/bindings/lapack/computational/potrf.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
+#include <boost/numeric/bindings/ublas/hermitian.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace lapack = boost::numeric::bindings::lapack;
 
 using std::size_t;
 using std::cout;
@@ -79,22 +82,22 @@
                  // .. sa is `lost' after potrf();
                  // .. only one parameter of symm() is symmetric matrix
 
- int ierr = atlas::potrf (sa);
+ int ierr = lapack::potrf (sa);
   if (!ierr) {
- atlas::potri (sa);
+ lapack::potri (sa);
     // ri should be (almost) identity matrix:
     m_t ri (n, n);
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::symm (a2, sa, ri);
+ blas::symm ( bindings::tag::right(), 1.0, sa, a2, 0.0, ri);
 #else
- atlas::symm (CblasRight, 1.0, sa, a2, 0.0, ri);
+ blas::symm (bindings::tag::right(), 1.0, sa, a2, 0.0, ri);
 #endif
     print_m (ri, "I = A * A^(-1)");
     cout << endl;
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::symm (sa, a2, ri);
+ blas::symm ( bindings::tag::left(), 1.0, sa, a2, 0.0, ri);
 #else
- atlas::symm (CblasLeft, 1.0, sa, a2, 0.0, ri);
+ blas::symm (CblasLeft, 1.0, sa, a2, 0.0, ri);
 #endif
     print_m (ri, "I = A^(-1) * A");
     cout << endl;
@@ -128,14 +131,14 @@
 
   cm_t ca2 (ha); // full hermitian
   
- ierr = atlas::cholesky_factor (ha); // potrf()
+ ierr = lapack::potri (ha); // potrf()
   if (ierr == 0) {
- atlas::cholesky_invert (ha); // potri()
+ lapack::potri (ha); // potri()
     cm_t ic (3, 3);
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::hemm (ca2, ha, ic);
+ blas::hemm ( bindings::tag::right(), 1.0, ha, ca2, 0.0, ic);
 #else
- atlas::hemm (CblasRight, 1.0, ha, ca2, 0.0, ic);
+ blas::hemm (CblasRight, 1.0, ha, ca2, 0.0, ic);
 #endif
     print_m (ic, "I = A * A^(-1)");
     cout << endl;
@@ -168,21 +171,21 @@
 
   ca2 = ha;
   
- ierr = atlas::potrf (ha);
+ ierr = lapack::potrf (ha);
   if (ierr == 0) {
- atlas::potri (ha);
+ lapack::potri (ha);
     cm_t ic (3, 3);
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::hemm (ca2, ha, ic);
+ blas::hemm ( bindings::tag::right(), 1.0, ha, ca2, 0.0, ic);
 #else
- atlas::hemm (CblasRight, 1.0, ha, ca2, 0.0, ic);
+ blas::hemm (CblasRight, 1.0, ha, ca2, 0.0, ic);
 #endif
     print_m (ic, "I = A * A^(-1)");
     cout << endl;
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- atlas::hemm (ha, ca2, ic);
+ blas::hemm ( bindings::tag::left(), 1.0, ha, ca2, 0.0, ic);
 #else
- atlas::hemm (CblasLeft, 1.0, ha, ca2, 0.0, ic);
+ blas::hemm (CblasLeft, 1.0, ha, ca2, 0.0, ic);
 #endif
     print_m (ic, "I = A^(-1) * A");
     cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm2syr.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm2syr.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm2syr.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,15 +7,16 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas1.hpp>
-#include <boost/numeric/bindings/atlas/cblas2.hpp>
-#include <boost/numeric/bindings/traits/ublas_vector.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
+#include <boost/numeric/bindings/blas/level1.hpp>
+#include <boost/numeric/bindings/blas/level2.hpp>
+#include <boost/numeric/bindings/ublas/vector.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::cout;
 using std::cin;
@@ -53,7 +54,7 @@
   cout << endl;
 
   vct_t vx (n), vy (n);
- atlas::set (1., vx);
+ blas::set (1., vx);
   print_v (vx, "vx");
   vy (1) = 1.;
   print_v (vy, "vy");
@@ -80,30 +81,30 @@
   cout << endl;
 
   // m += x x^T
- atlas::spr (vx, ucs);
+ blas::spr (1.0, vx, ucs);
   print_m (ucs, "ucs += x x^T");
   cout << endl;
- atlas::spr (1, vx, lcs);
+ blas::spr (1.0, vx, lcs);
   print_m (lcs, "lcs += x x^T");
   cout << endl;
- atlas::spr (1.0f, vx, urs);
+ blas::spr (1.0, vx, urs);
   print_m (urs, "urs += x x^T");
   cout << endl;
- atlas::spr (vx, lrs);
+ blas::spr (1.0, vx, lrs);
   print_m (lrs, "lrs += x x^T");
   cout << endl;
 
   // m += x y^T + y x^T
- atlas::spr2 (1, vx, vy, ucs);
+ blas::spr2 (1.0, vx, vy, ucs);
   print_m (ucs, "ucs += x y^T + y x^T");
   cout << endl;
- atlas::spr2 (vx, vy, lcs);
+ blas::spr2 (1.0, vx, vy, lcs);
   print_m (lcs, "lcs += x y^T + y x^T");
   cout << endl;
- atlas::spr2 (vx, vy, urs);
+ blas::spr2 (1.0, vx, vy, urs);
   print_m (urs, "urs += x y^T + y x^T");
   cout << endl;
- atlas::spr2 (1., vx, vy, lrs);
+ blas::spr2 (1.0, vx, vy, lrs);
   print_m (lrs, "lrs += x y^T + y x^T");
   cout << endl;
 
@@ -135,30 +136,30 @@
   cout << endl;
 
   // m += x x^T
- atlas::syr (vx, ucsa);
+ blas::syr (1.0, vx, ucsa);
   print_m (ucsa, "ucsa += x x^T");
   cout << endl;
- atlas::syr (1, vx, lcsa);
+ blas::syr (1.0, vx, lcsa);
   print_m (lcsa, "lcsa += x x^T");
   cout << endl;
- atlas::syr (1.0f, vx, ursa);
+ blas::syr (1.0, vx, ursa);
   print_m (ursa, "ursa += x x^T");
   cout << endl;
- atlas::syr (vx, lrsa);
+ blas::syr (1.0, vx, lrsa);
   print_m (lrsa, "lrsa += x x^T");
   cout << endl;
 
   // m += x y^T + y x^T
- atlas::syr2 (1, vx, vy, ucsa);
+ blas::syr2 (1.0, vx, vy, ucsa);
   print_m (ucsa, "ucsa += x y^T + y x^T");
   cout << endl;
- atlas::syr2 (vx, vy, lcsa);
+ blas::syr2 (1.0, vx, vy, lcsa);
   print_m (lcsa, "lcsa += x y^T + y x^T");
   cout << endl;
- atlas::syr2 (vx, vy, ursa);
+ blas::syr2 (1.0, vx, vy, ursa);
   print_m (ursa, "ursa += x y^T + y x^T");
   cout << endl;
- atlas::syr2 (1., vx, vy, lrsa);
+ blas::syr2 (1.0, vx, vy, lrsa);
   print_m (lrsa, "lrsa += x y^T + y x^T");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -4,14 +4,15 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
+#include <boost/numeric/bindings/blas/level3/symm.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::cout;
 using std::cin;
@@ -85,19 +86,19 @@
   print_m (rbl, "b == rb");
   cout << endl;
 
- atlas::symm (ucs, cbl, ccl);
+ blas::symm ( tag::left(), 1, ucs, cbl, 0, ccl );
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (lcs, cbl, ccl);
+ blas::symm ( tag::left(), 1, lcs, cbl, 0, ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (urs, rbl, rcl);
+ blas::symm ( tag::left(), 1, urs, rbl, 0, rcl);
   print_m (rcl, "c = a b");
   cout << endl;
 
- atlas::symm (lrs, rbl, rcl);
+ blas::symm ( tag::left(), 1, lrs, rbl, 0, rcl);
   print_m (rcl, "c = a b");
   cout << endl;
   
@@ -114,19 +115,19 @@
   print_m (rbr, "b == rb");
   cout << endl;
 
- atlas::symm (cbr, ucs, ccr);
+ blas::symm ( tag::right(), 1, ucs, cbr, 0, ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (cbr, lcs, ccr);
+ blas::symm ( tag::right(), 1, lcs, cbr, 0, ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (rbr, urs, rcr);
+ blas::symm ( tag::right(), 1, urs, rbr, 0, rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 
- atlas::symm (rbr, lrs, rcr);
+ blas::symm ( tag::right(), 1, lrs, rbr, 0, rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm32.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm32.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm32.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,14 +7,15 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::cout;
 using std::cin;
@@ -86,19 +87,19 @@
   print_m (rbl, "b == rb");
   cout << endl;
 
- atlas::symm (CblasLeft, 1., ucs, cbl, 0., ccl);
+ blas::symm (tag::left(), 1., ucs, cbl, 0., ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (CblasLeft, 1., lcs, cbl, 0., ccl);
+ blas::symm (tag::left(), 1., lcs, cbl, 0., ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (CblasLeft, 1., urs, rbl, 0., rcl);
+ blas::symm (tag::left(), 1., urs, rbl, 0., rcl);
   print_m (rcl, "c = a b");
   cout << endl;
 
- atlas::symm (CblasLeft, 1., lrs, rbl, 0., rcl);
+ blas::symm (tag::left(), 1., lrs, rbl, 0., rcl);
   print_m (rcl, "c = a b");
   cout << endl;
   
@@ -115,19 +116,19 @@
   print_m (rbr, "b == rb");
   cout << endl;
 
- atlas::symm (CblasRight, 1., ucs, cbr, 0., ccr);
+ blas::symm (tag::right(), 1., ucs, cbr, 0., ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (CblasRight, 1., lcs, cbr, 0., ccr);
+ blas::symm (tag::right(), 1., lcs, cbr, 0., ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (CblasRight, 1., urs, rbr, 0., rcr);
+ blas::symm (tag::right(), 1., urs, rbr, 0., rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 
- atlas::symm (CblasRight, 1., lrs, rbr, 0., rcr);
+ blas::symm (tag::right(), 1., lrs, rbr, 0., rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm33.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm33.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm33.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -7,13 +7,16 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/upper.hpp>
+#include <boost/numeric/bindings/lower.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::cout;
 using std::cin;
@@ -76,19 +79,19 @@
   print_m (rbl, "b == rb");
   cout << endl;
 
- atlas::symm (CblasLeft, CblasUpper, 1., uc, cbl, 0., ccl);
+ blas::symm (tag::left(), 1., bindings::upper(uc), cbl, 0., ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (CblasLeft, CblasLower, 1., lc, cbl, 0., ccl);
+ blas::symm (tag::left(), 1., bindings::lower(lc), cbl, 0., ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (CblasLeft, CblasUpper, 1., ur, rbl, 0., rcl);
+ blas::symm (tag::left(), 1., bindings::upper(ur), rbl, 0., rcl);
   print_m (rcl, "c = a b");
   cout << endl;
 
- atlas::symm (CblasLeft, CblasLower, 1., lr, rbl, 0., rcl);
+ blas::symm (tag::left(), 1., bindings::lower(lr), rbl, 0., rcl);
   print_m (rcl, "c = a b");
   cout << endl;
   
@@ -105,19 +108,19 @@
   print_m (rbr, "b == rb");
   cout << endl;
 
- atlas::symm (CblasRight, CblasUpper, 1., uc, cbr, 0., ccr);
+ blas::symm (tag::right(), 1., bindings::upper(uc), cbr, 0., ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (CblasRight, CblasLower, 1., lc, cbr, 0., ccr);
+ blas::symm (tag::right(), 1., bindings::lower(lc), cbr, 0., ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (CblasRight, CblasUpper, 1., ur, rbr, 0., rcr);
+ blas::symm (tag::right(), 1., bindings::upper(ur), rbr, 0., rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 
- atlas::symm (CblasRight, CblasLower, 1., lr, rbr, 0., rcr);
+ blas::symm (tag::right(), 1., bindings::lower(lr), rbr, 0., rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3s2k.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3s2k.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3s2k.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -5,13 +5,16 @@
 #include <stddef.h>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/trans.hpp>
+#include <boost/numeric/bindings/upper.hpp>
+#include <boost/numeric/bindings/lower.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
 
 using std::cout;
 using std::cin;
@@ -69,10 +72,10 @@
   ursa_t ursa (rmu);
   lrsa_t lrsa (rml);
 
- atlas::syr2k (CblasNoTrans, ac, bc, ucsa);
- atlas::syr2k (CblasNoTrans, 1.0, ac, bc, 0.0, lcsa);
- atlas::syr2k (CblasNoTrans, 1.0, ar, br, 0.0, ursa);
- atlas::syr2k (CblasNoTrans, ar, br, lrsa);
+ blas::syr2k (1.0, ac, bc, 0.0, ucsa);
+ blas::syr2k (1.0, ac, bc, 0.0, lcsa);
+ blas::syr2k (1.0, ar, br, 0.0, ursa);
+ blas::syr2k (1.0, ar, br, 0.0, lrsa);
 
   print_m (ucsa, "ucsa");
   cout << endl;
@@ -108,10 +111,10 @@
   init_m (rmu, const_val<real_t> (0));
   init_m (rml, const_val<real_t> (0));
 
- atlas::syr2k (CblasUpper, CblasTrans, 1.0, act, bct, 0.0, cmu);
- atlas::syr2k (CblasLower, CblasTrans, 1.0, act, bct, 0.0, cml);
- atlas::syr2k (CblasUpper, CblasTrans, 1.0, art, brt, 0.0, rmu);
- atlas::syr2k (CblasLower, CblasTrans, 1.0, art, brt, 0.0, rml);
+ blas::syr2k (1.0, bindings::trans(act), bct, 0.0, bindings::upper(cmu));
+ blas::syr2k (1.0, bindings::trans(act), bct, 0.0, bindings::lower(cml));
+ blas::syr2k (1.0, bindings::trans(art), brt, 0.0, bindings::upper(rmu));
+ blas::syr2k (1.0, bindings::trans(art), brt, 0.0, bindings::lower(rml));
 
   print_m (cmu, "cmu");
   cout << endl;
@@ -162,10 +165,10 @@
   cursa_t cursa (crmu);
   clrsa_t clrsa (crml);
 
- atlas::syr2k (CblasNoTrans, cac, cbc, cucsa);
- atlas::syr2k (CblasNoTrans, cmplx_t(1,0), cac, cbc, cmplx_t(0,0), clcsa);
- atlas::syr2k (CblasNoTrans, cmplx_t(1,0), car, cbr, cmplx_t(0,0), cursa);
- atlas::syr2k (CblasNoTrans, car, cbr, clrsa);
+ blas::syr2k ( 1.0, cac, cbc, 0.0, cucsa);
+ blas::syr2k (cmplx_t(1,0), cac, cbc, cmplx_t(0,0), clcsa);
+ blas::syr2k (cmplx_t(1,0), car, cbr, cmplx_t(0,0), cursa);
+ blas::syr2k (1.0, car, cbr, 0.0, clrsa);
 
   print_m (cucsa, "cucsa");
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3syrk.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3syrk.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symm3syrk.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -4,13 +4,16 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/atlas/cblas3.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
+#include <boost/numeric/bindings/blas/level3.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
+#include <boost/numeric/bindings/upper.hpp>
+#include <boost/numeric/bindings/lower.hpp>
+#include <boost/numeric/bindings/trans.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
 
 using std::cout;
 using std::cin;
@@ -51,10 +54,10 @@
   ursa_t ursa (rmu);
   lrsa_t lrsa (rml);
 
- atlas::syrk (CblasNoTrans, ac, ucsa);
- atlas::syrk (CblasNoTrans, 1.0, ac, 0.0, lcsa);
- atlas::syrk (CblasNoTrans, 1.0, ar, 0.0, ursa);
- atlas::syrk (CblasNoTrans, ar, lrsa);
+ blas::syrk (1.0, ac, 0.0, ucsa);
+ blas::syrk (1.0, ac, 0.0, lcsa);
+ blas::syrk (1.0, ar, 0.0, ursa);
+ blas::syrk (1.0, ar, 0.0, lrsa);
 
   print_m (ucsa, "ucsa");
   cout << endl;
@@ -81,10 +84,10 @@
   init_m (rmu, const_val<real_t> (0));
   init_m (rml, const_val<real_t> (0));
 
- atlas::syrk (CblasUpper, CblasTrans, 1.0, act, 0.0, cmu);
- atlas::syrk (CblasLower, CblasTrans, 1.0, act, 0.0, cml);
- atlas::syrk (CblasUpper, CblasTrans, 1.0, art, 0.0, rmu);
- atlas::syrk (CblasLower, CblasTrans, 1.0, art, 0.0, rml);
+ blas::syrk ( 1.0, bindings::trans(act), 0.0, bindings::upper(cmu));
+ blas::syrk ( 1.0, bindings::trans(act), 0.0, bindings::lower(cml));
+ blas::syrk ( 1.0, bindings::trans(art), 0.0, bindings::upper(rmu));
+ blas::syrk ( 1.0, bindings::trans(art), 0.0, bindings::lower(rml));
 
   print_m (cmu, "cmu");
   cout << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symmc3.cc
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symmc3.cc (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/ublas_symmc3.cc 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -5,14 +5,15 @@
 #include <stddef.h>
 #include <iostream>
 #include <complex>
-#include <boost/numeric/bindings/atlas/cblas.hpp>
-#include <boost/numeric/bindings/traits/ublas_matrix.hpp>
-#include <boost/numeric/bindings/traits/ublas_symmetric.hpp>
+#include <boost/numeric/bindings/blas.hpp>
+#include <boost/numeric/bindings/ublas/matrix.hpp>
+#include <boost/numeric/bindings/ublas/symmetric.hpp>
 #include "utils.h"
 
 namespace ublas = boost::numeric::ublas;
-namespace atlas = boost::numeric::bindings::atlas;
-namespace traits = boost::numeric::bindings::traits;
+namespace blas = boost::numeric::bindings::blas;
+namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 using std::cout;
 using std::cin;
@@ -87,19 +88,19 @@
   print_m (rbl, "b == rb");
   cout << endl;
 
- atlas::symm (ucs, cbl, ccl);
+ blas::symm ( tag::left(), 1.0, ucs, cbl, 0.0, ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (lcs, cbl, ccl);
+ blas::symm ( tag::left(), 1.0, lcs, cbl, 0.0, ccl);
   print_m (ccl, "c = a b");
   cout << endl;
 
- atlas::symm (urs, rbl, rcl);
+ blas::symm ( tag::left(), 1.0, urs, rbl, 0.0, rcl);
   print_m (rcl, "c = a b");
   cout << endl;
 
- atlas::symm (lrs, rbl, rcl);
+ blas::symm ( tag::left(), 1.0, lrs, rbl, 0.0, rcl);
   print_m (rcl, "c = a b");
   cout << endl;
   
@@ -116,19 +117,19 @@
   print_m (rbr, "b == rb");
   cout << endl;
 
- atlas::symm (cbr, ucs, ccr);
+ blas::symm (tag::right(), 1.0, ucs, cbr, 0.0, ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (cbr, lcs, ccr);
+ blas::symm (tag::right(), 1.0, lcs, cbr, 0.0, ccr);
   print_m (ccr, "c = b a");
   cout << endl;
 
- atlas::symm (rbr, urs, rcr);
+ blas::symm (tag::right(), 1.0, urs, rbr, 0.0, rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 
- atlas::symm (rbr, lrs, rcr);
+ blas::symm (tag::right(), 1.0, lrs, rbr, 0.0, rcr);
   print_m (rcr, "c = b a");
   cout << endl;
 

Modified: sandbox/numeric_bindings/libs/numeric/bindings/atlas/utils.h
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/atlas/utils.h (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/atlas/utils.h 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -4,10 +4,11 @@
 
 #include <stddef.h>
 #include <iostream>
-#include <boost/numeric/bindings/value.hpp>
+#include <boost/numeric/bindings/value_type.hpp>
 #include <boost/numeric/bindings/begin.hpp>
 #include <boost/numeric/bindings/end.hpp>
 #include <boost/numeric/bindings/size.hpp>
+#include <boost/numeric/bindings/at.hpp>
 
 namespace bindings = ::boost::numeric::bindings;
 
@@ -19,7 +20,7 @@
 template <typename V>
 struct vct_access_traits {
   typedef typename
- bindings::value<V>::type val_t;
+ bindings::value_type<V>::type val_t;
   typedef val_t& ref_t;
   static ref_t elem (V& v, size_t i) { return v[i]; }
 };
@@ -27,7 +28,7 @@
 template <typename V>
 struct vct_access_traits<V const> {
   typedef typename
- bindings::value<V>::type val_t;
+ bindings::value_type<V>::type val_t;
   typedef val_t ref_t;
   static ref_t elem (V const& v, size_t i) { return v[i]; }
 };
@@ -120,27 +121,26 @@
 
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
 // element access:
-template <typename M>
+/*template <typename M>
 struct matr_access_traits {
- typedef typename bindings::value<M>::type& ref_t;
- //bindings::value<M>::type val_t;
+ typedef typename bindings::value_type<M>::type& ref_t;
+ //bindings::value_type<M>::type val_t;
   //typedef val_t& ref_t;
   static ref_t elem (M& m, size_t i, size_t j) { return m (i, j); }
 };
 
 template <typename M>
 struct matr_access_traits<M const> {
- typedef typename
- bindings::value<M>::type val_t;
- typedef val_t ref_t;
+ typedef typename bindings::value_type<M const>::type& ref_t;
+ //typedef val_t ref_t;
   static ref_t elem (M const& m, size_t i, size_t j) { return m (i, j); }
 };
 
 template <typename M>
 inline
-typename matr_access_traits<M>::ref_t elem_m (M& m, size_t i, size_t j) {
+typename matr_access_traits<M>::ref_t bindings::at(M& m, size_t i, size_t j) {
   return matr_access_traits<M>::elem (m, i, j);
-}
+}*/
 #endif
 
 // initialization:
@@ -164,7 +164,7 @@
   for (std::size_t i = 0; i < sz1; ++i)
     for (std::size_t j = 0; j < sz2; ++j) {
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- elem_m (m, i, j) = f (i, j);
+ bindings::at( m, i, j ) = f (i, j);
 #else
       m(i,j) = f (i, j);
 #endif
@@ -176,26 +176,26 @@
   size_t n = bindings::size1 (m);
   for (size_t i = 0; i < n; ++i) {
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- elem_m (m, i, i) = n;
+ bindings::at (m, i, i) = n;
 #else
     m(i,i) = n;
 #endif
     for (size_t j = i + 1; j < n; ++j) {
       if (uplo == 'u' || uplo == 'U') {
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- elem_m (m, i, j) = n - (j - i);
+ bindings::at(m, i, j) = n - (j - i);
 #else
         m(i,j) = n - (j - i);
 #endif
       } else if (uplo == 'l' || uplo == 'L') {
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- elem_m (m, j, i) = n - (j - i);
+ bindings::at(m, j, i) = n - (j - i);
 #else
         m(j,i) = n - (j - i);
 #endif
       } else {
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- elem_m (m, i, j) = elem_m (m, j, i) = n - (j - i);
+ bindings::at(m, i, j) = bindings::at(m, j, i) = n - (j - i);
 #else
         m(i,j) = m(j,i) = n - (j - i);
 #endif
@@ -215,7 +215,7 @@
     for (std::size_t j = 0 ; j < sz2 ; ++j) {
         std::cout << i << " " << j << " " << std::endl;
 #ifndef BOOST_NUMERIC_BINDINGS_POOR_MANS_TRAITS
- std::cout << elem_m (m, i, j) << " ";
+ std::cout << bindings::at(m, i, j) << " ";
 #else
       std::cout << m(i,j) << " ";
 #endif
@@ -231,7 +231,7 @@
     std::cout << ch << " data:\n";
   using namespace boost::numeric::bindings;
   std::copy( begin_value( m ), end_value( m ), std::ostream_iterator
- < typename value< const M >::type >( std::cout, " " ) );
+ < typename value_type< const M >::type >( std::cout, " " ) );
   std::cout << std::endl;
 
 }

Modified: sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/hseqr.cpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/hseqr.cpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/hseqr.cpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -20,6 +20,7 @@
 namespace ublas = boost::numeric::ublas;
 namespace lapack = boost::numeric::bindings::lapack;
 namespace traits = boost::numeric::bindings::traits;
+namespace tag = boost::numeric::bindings::tag;
 
 void hseqr(int);
 template <typename T>
@@ -103,7 +104,7 @@
     boost::numeric::bindings::detail::array<double> work_r(n);
     ublas::vector<bool> select_dummy(n);
     integer_t m_info(n+1);
- lapack::trevc('B','B',select_dummy,G,cVL,cVR,n,m_info,lapack::workspace(work_c,work_r));
+ lapack::trevc( tag::both(),'B',select_dummy,G,cVL,cVR,n,m_info,lapack::workspace(work_c,work_r));
 
     cout << "\n==================================" << endl;
     cout << "Testing left & right eigenvectors..." << endl;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/ublas_geqrf.cpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/ublas_geqrf.cpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/ublas_geqrf.cpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -30,15 +30,16 @@
 namespace ublas = boost::numeric::ublas;
 namespace lapack = boost::numeric::bindings::lapack;
 namespace bindings = boost::numeric::bindings;
+namespace tag = boost::numeric::bindings::tag;
 
 struct apply_real {
   template< typename MatrixA, typename VectorTAU, typename Workspace >
   static inline integer_t orgqr( MatrixA& a, const VectorTAU& tau, Workspace work ) {
     return lapack::orgqr( a, tau, work );
   }
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
+ template< typename Side, typename MatrixA, typename VectorTAU, typename MatrixC,
         typename Workspace >
- static inline integer_t ormqr( const char side,
+ static inline integer_t ormqr( const Side side,
         const MatrixA& a, const VectorTAU& tau, MatrixC& c,
         Workspace work ) {
     return lapack::ormqr( side, a, tau, c, work );
@@ -50,9 +51,9 @@
   static inline integer_t orgqr( MatrixA& a, const VectorTAU& tau, Workspace work ) {
     return lapack::ungqr( a, tau, work );
   }
- template< typename MatrixA, typename VectorTAU, typename MatrixC,
+ template< typename Side, typename MatrixA, typename VectorTAU, typename MatrixC,
         typename Workspace >
- static inline integer_t ormqr( const char side,
+ static inline integer_t ormqr( const Side side,
         const MatrixA& a, const VectorTAU& tau, MatrixC& c,
         Workspace work ) {
     return lapack::unmqr( side, a, tau, c, work );
@@ -103,9 +104,9 @@
 
    // Apply the orthogonal transformations to a2
    if( boost::is_complex<T>::value ) {
- apply_t::ormqr( 'L', bindings::conj( a ), tau, a2, workspace );
+ apply_t::ormqr( tag::left(), bindings::conj( a ), tau, a2, workspace );
    } else {
- apply_t::ormqr( 'L', bindings::trans( a ), tau, a2, workspace );
+ apply_t::ormqr( tag::left(), bindings::trans( a ), tau, a2, workspace );
    }
 
    // The upper triangular parts of a and a2 must be equal.

Modified: sandbox/numeric_bindings/libs/numeric/bindings/numeric-bindings.jam
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/numeric-bindings.jam (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/numeric-bindings.jam 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -38,7 +38,7 @@
 ATLAS_PATH ?= $(NUMERIC_LIB_PATH) ;
 ATLAS_LIB ?= atlas ;
 CBLAS_LIB ?= cblas ;
-LAPACK_ATLAS_LIB ?= lapack ;
+LAPACK_ATLAS_LIB ?= lapack_atlas ;
 
 BLAS_PATH ?= $(NUMERIC_LIB_PATH) ;
 BLAS_LIB ?= blas ;

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -107,7 +107,7 @@
 
         if "has_cblas_order_arg" in info_map[ subroutine ]:
             if info_map[ subroutine ][ "has_cblas_order_arg" ] == True:
- arg_list.insert( 0, "Order" )
+ arg_list.insert( 0, "const Order order" )
                 cblas_arg_list.insert( 0, "cblas_option< Order >::value" )
                 typename_list.insert( 0, "typename Order" )
                 level0_static_asserts.append( "BOOST_STATIC_ASSERT( (is_same<Order, tag::column_major>::value) );" )
@@ -365,8 +365,12 @@
             first_typename = template_map[ netlib.my_has_key( \
                 my_key, template_map ) ].strip()
         else:
- first_typename = level1_type_arg_list[0].split(" ")[-1]
- first_typename_datatype = first_typename[0:6].lower() # 'matrix' or 'vector' or 'scalar'
+ first_typename = ''
+ for tn in level1_type_arg_list:
+ bare_type = tn.split(" ")[-1]
+ if first_typename == '' and bare_type[:6].lower() in [ 'matrix', 'vector' ]:
+ first_typename = bare_type
+ first_typename_datatype = first_typename[:6].lower() # 'matrix' or 'vector' or 'scalar'
       else:
         level1_type_arg_list.insert( 0, 'typename Value' )
         first_typename = 'Value'

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/cblas.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/cblas.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/cblas.py 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -90,10 +90,10 @@
                             prefix + "option< Diag >::value"
                     elif arg == 'SIDE':
                         info_map[ fortran_routine ][ "argument_map" ][ arg ][ "code" ][ "call_" + prefix + "header" ] = \
- prefix + "option< Side >::value"
+ prefix + "option< " + netlib.template_parameter[ arg ] + " >::value"
                     elif arg == 'TRANS' or arg == 'TRANSA' or arg == 'TRANSB':
                         info_map[ fortran_routine ][ "argument_map" ][ arg ][ "code" ][ "call_" + prefix + "header" ] = \
- prefix + "option< " + netlib.level0_types[ arg ] + " >::value"
+ prefix + "option< " + netlib.template_parameter[ arg ] + " >::value"
                     else:
                         info_map[ fortran_routine ][ "argument_map" ][ arg ][ "code" ][ "call_" + prefix + "header" ] = call_cblas_header
                 else:

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -363,7 +363,10 @@
         first_typename_code = info_map[ subroutine ][ 'argument_map' ][ first_typename_arg ][ 'code' ][ 'level_1_type' ]
         first_typename = first_typename_code.split(" ")[-1]
       else:
- first_typename = level1_type_arg_list[0].split(" ")[-1]
+ for tn in level1_type_arg_list:
+ bare_type = tn.split(" ")[-1]
+ if first_typename == '' and bare_type[:6].lower() in [ 'matrix', 'vector' ]:
+ first_typename = bare_type
 
       # generate the word "matrix" or "vector", to select the right traits
       first_typename_datatype = first_typename[0:6].lower()
@@ -455,15 +458,16 @@
 
           my_key = group_name.lower() + '.' + value_type + '.min_size_' + name.lower()
           if netlib.my_has_key( my_key, template_map ):
- sub_template = sub_template.replace( "$MIN_SIZE", indent_lines( template_map[ netlib.my_has_key( my_key, template_map ) ].rstrip(), 8 ) )
+ sub_template = sub_template.replace( "$MIN_SIZE_IMPLEMENTATION", indent_lines( template_map[ netlib.my_has_key( my_key, template_map ) ].rstrip(), 8 ) )
 
           elif info_map[ subroutine ][ 'argument_map' ][ name ][ 'code' ][ 'min_workspace' ] != None:
             resulting_code = 'return ' + info_map[ subroutine ][ 'argument_map' ][ name ][ 'code' ][ 'min_workspace' ] + ';'
- sub_template = sub_template.replace( "$MIN_SIZE", resulting_code.rstrip() )
+ sub_template = sub_template.replace( "$MIN_SIZE_IMPLEMENTATION", resulting_code.rstrip() )
             
           # Do about the same for the argument stuff.
           if info_map[ subroutine ][ 'argument_map' ][ name ][ 'code' ][ 'min_workspace_args' ] != None:
- sub_template = sub_template.replace( "$ARGUMENTS", info_map[ subroutine ][ 'argument_map' ][ name ][ 'code' ][ 'min_workspace_args' ] )
+ sub_template = sub_template.replace( "$TYPES", info_map[ subroutine ][ 'argument_map' ][ name ][ 'code' ][ 'min_workspace_args' ][ 'types' ] )
+ sub_template = sub_template.replace( "$ARGUMENTS", info_map[ subroutine ][ 'argument_map' ][ name ][ 'code' ][ 'min_workspace_args' ][ 'code' ] )
 
             #sub_template += 'FOUND'
           min_size_funcs += sub_template
@@ -530,6 +534,7 @@
     result = result.replace( '$INTEGER_TYPE', netlib.generic_integer_type )
     result = result.replace( '$LIBRARY_INT_TYPE', "fortran_int_t" )
     result = result.replace( '$NAMESPACE', "bindings::" )
+ result = result.replace( ' template< >\n', '' )
     result = result.replace( '\n\n\n', '\n\n' )
     result = result.replace( "\n \n", "\n" )
     result = result.replace( "\n \n", "\n" )

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-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -100,7 +100,7 @@
   return result
 
 
-level0_types = {
+template_parameter = {
     'TRANS': 'Trans',
     'TRANSA': 'TransA',
     'TRANSB': 'TransB',
@@ -110,34 +110,38 @@
     'SIDE' : 'Side'
 }
 
+def template_tag_type( name, properties ):
+ if 'trait_type' in properties:
+ if properties[ 'trait_type' ] in [ 'trans', 'uplo', 'diag' ]:
+ return 'typedef'
+ if 'SIDE' in name:
+ return 'passthrough'
+ return None
+
 def level0_type( name, properties ):
     result = cpp_type( name, properties )
- if 'trait_type' in properties:
- if properties[ 'trait_type' ] in [ 'trans', 'uplo', 'diag', 'side' ]:
- result = level0_types[ name ]
+ if template_tag_type( name, properties ) != None:
+ result = 'const ' + template_parameter[ name ] + ' ' + name.lower()
     if name == 'INFO':
         result = None
     return result
 
 def level0_typename( name, properties ):
     result = None
- if 'trait_type' in properties:
- if properties[ 'trait_type' ] in [ 'trans', 'uplo', 'diag', 'side' ]:
- result = 'typename ' + level0_types[ name ]
+ if template_tag_type( name, properties ) != None:
+ result = 'typename ' + template_parameter[ name ]
     return result
 
 def call_blas_header( name, properties ):
     result = call_c_type( name, properties )
- if 'trait_type' in properties:
- if properties[ 'trait_type' ] in [ 'trans', 'uplo', 'diag', 'side' ]:
- result = '&blas_option< ' + level0_types[ name ] + ' >::value'
+ if template_tag_type( name, properties ) != None:
+ result = '&blas_option< ' + template_parameter[ name ] + ' >::value'
     return result
 
 def call_lapack_header( name, properties ):
     result = call_c_type( name, properties )
- if 'trait_type' in properties:
- if properties[ 'trait_type' ] in [ 'trans', 'uplo', 'diag', 'side' ]:
- result = '&lapack_option< ' + level0_types[ name ] + ' >::value'
+ if template_tag_type( name, properties ) != None:
+ result = '&lapack_option< ' + template_parameter[ name ] + ' >::value'
     return result
 
 def call_c_type( name, properties ):
@@ -273,6 +277,9 @@
          result = result.replace( complex_float_type, "value_type" )
          result = result.replace( complex_double_type, "value_type" )
 
+ if template_tag_type( name, properties ) == 'passthrough':
+ result = 'const ' + template_parameter[ name ] + ' ' + name.lower()
+
   if name == 'INFO':
     result = None
 
@@ -301,6 +308,8 @@
       result = "typename Matrix" + name
     if properties[ 'type' ] == 'vector':
       result = "typename Vector" + name
+ if template_tag_type( name, properties ) == 'passthrough':
+ result = "typename " + template_parameter[ name ]
   return result
 
 def keyword_typename( name, properties ):
@@ -437,7 +446,7 @@
   result = []
   
   if properties.has_key( 'assert_char' ) and \
- name not in [ 'TRANS', 'TRANSA', 'TRANSB', 'TRANSR', 'UPLO', 'DIAG' ]:
+ name not in [ 'TRANS', 'TRANSA', 'TRANSB', 'TRANSR', 'UPLO', 'DIAG', 'SIDE' ]:
     assert_line = "BOOST_ASSERT( "
     result_array = []
     for char in properties[ 'assert_char' ]:
@@ -509,8 +518,9 @@
                 result = 'typedef typename result_of::uplo_tag< ' + \
                     matrix_type + ' >::type ' + name.lower() + ';'
             else:
+ trans_type = arg_map[ properties[ 'trait_of' ][ 0 ] ][ 'ref_trans' ]
                 result = 'typedef typename result_of::uplo_tag< ' + \
- matrix_type + ', trans >::type ' + name.lower() + ';'
+ matrix_type + ', ' + trans_type.lower() + ' >::type ' + name.lower() + ';'
         if properties[ 'trait_type' ] == 'diag':
             matrix_type = level1_typename( properties[ 'trait_of' ][ 0 ],
                 arg_map[ properties[ 'trait_of' ][ 0 ] ] ).replace( "typename ", "" )
@@ -588,18 +598,26 @@
 def min_workspace_arg_type( name, properties, arg_map ):
   result = None
   if 'workspace' in properties[ 'io' ] and properties.has_key( 'assert_size_args' ):
+ result = {}
     code_result = []
+ type_result = []
     for arg in properties[ 'assert_size_args' ]:
       if arg_map.has_key( arg ):
- cpp_type_code = cpp_type( arg, arg_map[ arg ] ).replace( library_integer_type,
+ cpp_type_code = level0_type( arg, arg_map[ arg ] ).replace( library_integer_type,
             "$INTEGER_TYPE" )
+ #cpp_type_code = cpp_type( arg, arg_map[ arg ] ).replace( library_integer_type,
+ #"$INTEGER_TYPE" )
         code_result += [ cpp_type_code ]
+ type_code = level0_typename( arg, arg_map[ arg ] )
+ if type_code != None:
+ type_result += [ type_code ]
       else:
         if type( properties[ 'assert_size' ] ) == StringType:
           code_result += [ '?' + properties[ 'assert_size' ] ]
         else:
           code_result += [ '??' ]
- result = ", ".join( code_result )
+ result[ 'code' ] = ", ".join( code_result )
+ result[ 'types' ] = ", ".join( type_result )
   return result
 
 
@@ -1577,6 +1595,12 @@
     argument_properties[ 'code' ][ 'level_0' ] = level0_type( argument_name, argument_properties )
     argument_properties[ 'code' ][ 'level_0_typename' ] = level0_typename( argument_name, argument_properties )
     argument_properties[ 'code' ][ 'call_level_0' ] = call_level0_type( argument_name, argument_properties, argument_map )
+ argument_properties[ 'code' ][ 'typedef' ] = typedef_type( argument_name, argument_properties, argument_map )
+
+ # Pass 2
+ # here, the level1 types may depend on whether there has been a typedef for them
+ # in pass 1
+ for argument_name, argument_properties in argument_map.iteritems():
     argument_properties[ 'code' ][ 'level_1' ] = level1_type( argument_name, argument_properties )
     argument_properties[ 'code' ][ 'level_1_type' ] = level1_typename( argument_name, argument_properties )
     argument_properties[ 'code' ][ 'call_level_1' ] = call_level1_type( argument_name, argument_properties )
@@ -1584,8 +1608,8 @@
     argument_properties[ 'code' ][ 'workspace_type' ] = workspace_type( argument_name, argument_properties )
     argument_properties[ 'code' ][ 'keyword_type' ] = keyword_typename( argument_name, argument_properties )
 
- # Pass 2
- # A second pass is needed, because the asserts may cross-reference other
+ # Pass 3
+ # A third pass is needed, because the asserts may cross-reference other
   # variables which have been assigned their code in pass 1.
   for argument_name, argument_properties in argument_map.iteritems():
     argument_properties[ 'code' ][ 'level_1_assert' ] = level1_assert( argument_name, argument_properties, argument_map )
@@ -1597,7 +1621,6 @@
     argument_properties[ 'code' ][ 'min_workspace_args' ] = min_workspace_arg_type( argument_name, argument_properties, argument_map )
     argument_properties[ 'code' ][ 'min_workspace_call' ] = min_workspace_call_type( argument_name, argument_properties, argument_map )
     argument_properties[ 'code' ][ 'user_defined_init' ] = user_defined_type( argument_name, argument_properties, argument_map )
- argument_properties[ 'code' ][ 'typedef' ] = typedef_type( argument_name, argument_properties, argument_map )
 
   # Pass 3
   # Try to see if a template overrides the code

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/orm.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/orm.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/orm.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -1,52 +1,45 @@
 $TEMPLATE[ormbr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormbr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormbr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[ormlq.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormlq.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormlq.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[ormqr.all.K.trait]
 size,TAU
 $TEMPLATE[ormqr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormqr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormqr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[ormrq.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormrq.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormrq.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[ormtr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormtr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormtr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[ormql.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormql.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormql.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[ormhr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ormhr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ormhr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[end]

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/un.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/un.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/un.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -26,60 +26,52 @@
 return std::max< $INTEGER_TYPE >( 1, m );
 $TEMPLATE[ungtr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[ungtr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[ungtr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmbr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmbr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmbr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmhr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmhr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmhr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmlq.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmlq.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmlq.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmqr.all.K.trait]
 size,TAU
 $TEMPLATE[unmqr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmqr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmqr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmrq.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmrq.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmrq.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmql.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmql.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmql.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[unmtr.all.min_size_work.args]
 SIDE,M,N
+$TEMPLATE[unmtr.includes]
+#include <boost/numeric/bindings/detail/if_left.hpp>
 $TEMPLATE[unmtr.all.min_size_work]
-if ( side == 'L' )
- return std::max< $INTEGER_TYPE >( 1, n );
-else
- return std::max< $INTEGER_TYPE >( 1, m );
+return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
 $TEMPLATE[end]

Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp 2010-01-19 09:48:24 EST (Tue, 19 Jan 2010)
@@ -238,8 +238,9 @@
     // Static member function that returns the minimum size of
     // workspace-array $WORKSPACE_FUNC.
     //
+ template< $TYPES >
     static $INTEGER_TYPE min_size_$WORKSPACE_FUNC( $ARGUMENTS ) {
- $MIN_SIZE
+ $MIN_SIZE_IMPLEMENTATION
     }
 
 $TEMPLATE[level1_noworkspace]


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