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,
            &n