|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r64075 - in sandbox/numeric_bindings: boost/numeric/bindings/lapack boost/numeric/bindings/lapack/computational boost/numeric/bindings/lapack/detail libs/numeric/bindings/doc/lapack libs/numeric/bindings/doc/lapack/computational libs/numeric/bindings/tools libs/numeric/bindings/tools/templates/computational
From: thomas.klimpel_at_[hidden]
Date: 2010-07-16 18:32:15
Author: klimpel
Date: 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
New Revision: 64075
URL: http://svn.boost.org/trac/boost/changeset/64075
Log:
Further reduced required hand editing of lapack/computational.hpp to make include_test.cpp pass.
Added:
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrf.qbk (contents, props changed)
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftri.qbk (contents, props changed)
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/tftri.qbk (contents, props changed)
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbcon.hpp (contents, props changed)
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbtrs.hpp (contents, props changed)
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pftrs.hpp (contents, props changed)
Text files modified:
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp | 13 +++--
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp | 3
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp | 2
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp | 95 +++++++++++++++++++++------------------
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp | 40 +++++++++-------
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp | 61 +++++++++++++------------
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp | 37 +++++++++------
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrs.hpp | 72 ++++++++++++++---------------
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp | 71 ++++++++++++++++-------------
sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp | 13 +---
sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h | 30 ++++++++++++
sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h | 18 +++++++
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk | 3 +
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk | 2
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk | 2
sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk | 9 +--
sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py | 3
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp | 6 --
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp | 6 --
19 files changed, 275 insertions(+), 211 deletions(-)
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -49,7 +49,7 @@
#include <boost/numeric/bindings/lapack/computational/bdsqr.hpp>
#include <boost/numeric/bindings/lapack/computational/gbbrd.hpp>
#include <boost/numeric/bindings/lapack/computational/gebrd.hpp>
-//#include <boost/numeric/bindings/lapack/computational/orgbr.hpp>
+#include <boost/numeric/bindings/lapack/computational/orgbr.hpp>
// #include <boost/numeric/bindings/lapack/computational/ormbr.hpp>
#include <boost/numeric/bindings/lapack/computational/ungbr.hpp>
// #include <boost/numeric/bindings/lapack/computational/unmbr.hpp>
@@ -90,12 +90,14 @@
#include <boost/numeric/bindings/lapack/computational/hptrf.hpp>
#include <boost/numeric/bindings/lapack/computational/hptri.hpp>
#include <boost/numeric/bindings/lapack/computational/hptrs.hpp>
-// #include <boost/numeric/bindings/lapack/computational/pbcon.hpp>
+#include <boost/numeric/bindings/lapack/computational/pbcon.hpp>
#include <boost/numeric/bindings/lapack/computational/pbequ.hpp>
#include <boost/numeric/bindings/lapack/computational/pbrfs.hpp>
#include <boost/numeric/bindings/lapack/computational/pbtrf.hpp>
-// #include <boost/numeric/bindings/lapack/computational/pbtrs.hpp>
-// #include <boost/numeric/bindings/lapack/computational/pftrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/pbtrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/pftrf.hpp>
+#include <boost/numeric/bindings/lapack/computational/pftri.hpp>
+#include <boost/numeric/bindings/lapack/computational/pftrs.hpp>
#include <boost/numeric/bindings/lapack/computational/pocon.hpp>
#include <boost/numeric/bindings/lapack/computational/poequ.hpp>
#include <boost/numeric/bindings/lapack/computational/porfs.hpp>
@@ -125,6 +127,7 @@
#include <boost/numeric/bindings/lapack/computational/tbcon.hpp>
#include <boost/numeric/bindings/lapack/computational/tbrfs.hpp>
#include <boost/numeric/bindings/lapack/computational/tbtrs.hpp>
+#include <boost/numeric/bindings/lapack/computational/tftri.hpp>
#include <boost/numeric/bindings/lapack/computational/tpcon.hpp>
#include <boost/numeric/bindings/lapack/computational/tprfs.hpp>
#include <boost/numeric/bindings/lapack/computational/tptri.hpp>
@@ -151,7 +154,7 @@
#include <boost/numeric/bindings/lapack/computational/steqr.hpp>
#include <boost/numeric/bindings/lapack/computational/sterf.hpp>
#include <boost/numeric/bindings/lapack/computational/sytrd.hpp>
-// #include <boost/numeric/bindings/lapack/computational/ungtr.hpp>
+#include <boost/numeric/bindings/lapack/computational/ungtr.hpp>
#include <boost/numeric/bindings/lapack/computational/unmtr.hpp>
#include <boost/numeric/bindings/lapack/computational/upgtr.hpp>
#include <boost/numeric/bindings/lapack/computational/upmtr.hpp>
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -160,7 +160,8 @@
//
static std::ptrdiff_t min_size_work( const std::ptrdiff_t m,
const std::ptrdiff_t n ) {
- return std::max< std::ptrdiff_t >( 1, std::min< std::ptrdiff_t >( m, n );
+ return std::max< std::ptrdiff_t >( 1, std::min< std::ptrdiff_t >( m,
+ n ) );
}
};
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-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -161,7 +161,7 @@
// workspace-array work.
//
static std::ptrdiff_t min_size_work( const std::ptrdiff_t n ) {
- return std::max< std::ptrdiff_t >( 1, n-1 );
+ return std::max< std::ptrdiff_t >(1,n-1);
}
};
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -55,12 +55,13 @@
// * netlib-compatible LAPACK backend (the default), and
// * float value-type.
//
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
const fortran_int_t kd, const float* ab, const fortran_int_t ldab,
const float anorm, float& rcond, float* work, fortran_int_t* iwork ) {
fortran_int_t info(0);
- LAPACK_SPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, iwork,
- &info );
+ LAPACK_SPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+ &rcond, work, iwork, &info );
return info;
}
@@ -69,13 +70,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * double value-type.
//
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
const fortran_int_t kd, const double* ab, const fortran_int_t ldab,
const double anorm, double& rcond, double* work,
fortran_int_t* iwork ) {
fortran_int_t info(0);
- LAPACK_DPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, iwork,
- &info );
+ LAPACK_DPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+ &rcond, work, iwork, &info );
return info;
}
@@ -84,13 +86,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<float> value-type.
//
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
const fortran_int_t kd, const std::complex<float>* ab,
const fortran_int_t ldab, const float anorm, float& rcond,
std::complex<float>* work, float* rwork ) {
fortran_int_t info(0);
- LAPACK_CPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, rwork,
- &info );
+ LAPACK_CPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+ &rcond, work, rwork, &info );
return info;
}
@@ -99,13 +102,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<double> value-type.
//
-inline std::ptrdiff_t pbcon( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbcon( const UpLo uplo, const fortran_int_t n,
const fortran_int_t kd, const std::complex<double>* ab,
const fortran_int_t ldab, const double anorm, double& rcond,
std::complex<double>* work, double* rwork ) {
fortran_int_t info(0);
- LAPACK_ZPBCON( &uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, rwork,
- &info );
+ LAPACK_ZPBCON( &lapack_option< UpLo >::value, &n, &kd, ab, &ldab, &anorm,
+ &rcond, work, rwork, &info );
return info;
}
@@ -133,10 +137,10 @@
// * Asserts that most arguments make sense.
//
template< typename MatrixAB, typename WORK, typename IWORK >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- const real_type anorm, real_type& rcond, detail::workspace2< WORK,
- IWORK > work ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+ real_type& rcond, detail::workspace2< WORK, IWORK > work ) {
namespace bindings = ::boost::numeric::bindings;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixAB >::value) );
BOOST_ASSERT( bindings::bandwidth(ab, uplo()) >= 0 );
BOOST_ASSERT( bindings::size(work.select(fortran_int_t())) >=
@@ -148,7 +152,7 @@
bindings::stride_minor(ab) == 1 );
BOOST_ASSERT( bindings::stride_major(ab) >= bindings::bandwidth(ab,
uplo())+1 );
- return detail::pbcon( uplo, bindings::size_column(ab),
+ return detail::pbcon( uplo(), bindings::size_column(ab),
bindings::bandwidth(ab, uplo()), bindings::begin_value(ab),
bindings::stride_major(ab), anorm, rcond,
bindings::begin_value(work.select(real_type())),
@@ -163,15 +167,15 @@
// * Enables the unblocked algorithm (BLAS level 2)
//
template< typename MatrixAB >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- const real_type anorm, real_type& rcond, minimal_workspace ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+ real_type& rcond, minimal_workspace ) {
namespace bindings = ::boost::numeric::bindings;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
bindings::detail::array< real_type > tmp_work( min_size_work(
bindings::size_column(ab) ) );
bindings::detail::array< fortran_int_t > tmp_iwork(
min_size_iwork( bindings::size_column(ab) ) );
- return invoke( uplo, ab, anorm, rcond, workspace( tmp_work,
- tmp_iwork ) );
+ return invoke( ab, anorm, rcond, workspace( tmp_work, tmp_iwork ) );
}
//
@@ -182,10 +186,11 @@
// * Enables the blocked algorithm (BLAS level 3)
//
template< typename MatrixAB >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- const real_type anorm, real_type& rcond, optimal_workspace ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+ real_type& rcond, optimal_workspace ) {
namespace bindings = ::boost::numeric::bindings;
- return invoke( uplo, ab, anorm, rcond, minimal_workspace() );
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
+ return invoke( ab, anorm, rcond, minimal_workspace() );
}
//
@@ -220,10 +225,10 @@
// * Asserts that most arguments make sense.
//
template< typename MatrixAB, typename WORK, typename RWORK >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- const real_type anorm, real_type& rcond, detail::workspace2< WORK,
- RWORK > work ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+ real_type& rcond, detail::workspace2< WORK, RWORK > work ) {
namespace bindings = ::boost::numeric::bindings;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixAB >::value) );
BOOST_ASSERT( bindings::bandwidth_upper(ab) >= 0 );
BOOST_ASSERT( bindings::size(work.select(real_type())) >=
@@ -235,7 +240,7 @@
bindings::stride_minor(ab) == 1 );
BOOST_ASSERT( bindings::stride_major(ab) >=
bindings::bandwidth_upper(ab)+1 );
- return detail::pbcon( uplo, bindings::size_column(ab),
+ return detail::pbcon( uplo(), bindings::size_column(ab),
bindings::bandwidth_upper(ab), bindings::begin_value(ab),
bindings::stride_major(ab), anorm, rcond,
bindings::begin_value(work.select(value_type())),
@@ -250,15 +255,15 @@
// * Enables the unblocked algorithm (BLAS level 2)
//
template< typename MatrixAB >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- const real_type anorm, real_type& rcond, minimal_workspace ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+ real_type& rcond, minimal_workspace ) {
namespace bindings = ::boost::numeric::bindings;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
bindings::detail::array< value_type > tmp_work( min_size_work(
bindings::size_column(ab) ) );
bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
bindings::size_column(ab) ) );
- return invoke( uplo, ab, anorm, rcond, workspace( tmp_work,
- tmp_rwork ) );
+ return invoke( ab, anorm, rcond, workspace( tmp_work, tmp_rwork ) );
}
//
@@ -269,10 +274,11 @@
// * Enables the blocked algorithm (BLAS level 3)
//
template< typename MatrixAB >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- const real_type anorm, real_type& rcond, optimal_workspace ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, const real_type anorm,
+ real_type& rcond, optimal_workspace ) {
namespace bindings = ::boost::numeric::bindings;
- return invoke( uplo, ab, anorm, rcond, minimal_workspace() );
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
+ return invoke( ab, anorm, rcond, minimal_workspace() );
}
//
@@ -309,13 +315,12 @@
template< typename MatrixAB, typename Workspace >
inline typename boost::enable_if< detail::is_workspace< Workspace >,
std::ptrdiff_t >::type
-pbcon( const char uplo, const MatrixAB& ab,
- const typename remove_imaginary< typename bindings::value_type<
- MatrixAB >::type >::type anorm, typename remove_imaginary<
- typename bindings::value_type< MatrixAB >::type >::type& rcond,
- Workspace work ) {
+pbcon( const MatrixAB& ab, const typename remove_imaginary<
+ typename bindings::value_type< MatrixAB >::type >::type anorm,
+ typename remove_imaginary< typename bindings::value_type<
+ MatrixAB >::type >::type& rcond, Workspace work ) {
return pbcon_impl< typename bindings::value_type<
- MatrixAB >::type >::invoke( uplo, ab, anorm, rcond, work );
+ MatrixAB >::type >::invoke( ab, anorm, rcond, work );
}
//
@@ -325,12 +330,12 @@
template< typename MatrixAB >
inline typename boost::disable_if< detail::is_workspace< MatrixAB >,
std::ptrdiff_t >::type
-pbcon( const char uplo, const MatrixAB& ab,
- const typename remove_imaginary< typename bindings::value_type<
- MatrixAB >::type >::type anorm, typename remove_imaginary<
- typename bindings::value_type< MatrixAB >::type >::type& rcond ) {
+pbcon( const MatrixAB& ab, const typename remove_imaginary<
+ typename bindings::value_type< MatrixAB >::type >::type anorm,
+ typename remove_imaginary< typename bindings::value_type<
+ MatrixAB >::type >::type& rcond ) {
return pbcon_impl< typename bindings::value_type<
- MatrixAB >::type >::invoke( uplo, ab, anorm, rcond,
+ MatrixAB >::type >::invoke( ab, anorm, rcond,
optimal_workspace() );
}
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -50,11 +50,13 @@
// * netlib-compatible LAPACK backend (the default), and
// * float value-type.
//
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( 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, float* b, const fortran_int_t ldb ) {
fortran_int_t info(0);
- LAPACK_SPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+ LAPACK_SPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+ b, &ldb, &info );
return info;
}
@@ -63,11 +65,13 @@
// * netlib-compatible LAPACK backend (the default), and
// * double value-type.
//
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( 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, double* b, const fortran_int_t ldb ) {
fortran_int_t info(0);
- LAPACK_DPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+ LAPACK_DPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+ b, &ldb, &info );
return info;
}
@@ -76,12 +80,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<float> value-type.
//
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( 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,
std::complex<float>* b, const fortran_int_t ldb ) {
fortran_int_t info(0);
- LAPACK_CPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+ LAPACK_CPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+ b, &ldb, &info );
return info;
}
@@ -90,12 +96,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<double> value-type.
//
-inline std::ptrdiff_t pbtrs( const char uplo, const fortran_int_t n,
+template< typename UpLo >
+inline std::ptrdiff_t pbtrs( 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,
std::complex<double>* b, const fortran_int_t ldb ) {
fortran_int_t info(0);
- LAPACK_ZPBTRS( &uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info );
+ LAPACK_ZPBTRS( &lapack_option< UpLo >::value, &n, &kd, &nrhs, ab, &ldab,
+ b, &ldb, &info );
return info;
}
@@ -117,9 +125,9 @@
// * Asserts that most arguments make sense.
//
template< typename MatrixAB, typename MatrixB >
- static std::ptrdiff_t invoke( const char uplo, const MatrixAB& ab,
- MatrixB& b ) {
+ static std::ptrdiff_t invoke( const MatrixAB& ab, MatrixB& b ) {
namespace bindings = ::boost::numeric::bindings;
+ typedef typename result_of::uplo_tag< MatrixAB >::type uplo;
BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixAB >::value) );
BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixB >::value) );
BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
@@ -138,7 +146,7 @@
uplo())+1 );
BOOST_ASSERT( bindings::stride_major(b) >= std::max< std::ptrdiff_t >(1,
bindings::size_column(ab)) );
- return detail::pbtrs( uplo, bindings::size_column(ab),
+ return detail::pbtrs( uplo(), bindings::size_column(ab),
bindings::bandwidth(ab, uplo()), bindings::size_column(b),
bindings::begin_value(ab), bindings::stride_major(ab),
bindings::begin_value(b), bindings::stride_major(b) );
@@ -161,10 +169,9 @@
// * MatrixB&
//
template< typename MatrixAB, typename MatrixB >
-inline std::ptrdiff_t pbtrs( const char uplo, const MatrixAB& ab,
- MatrixB& b ) {
+inline std::ptrdiff_t pbtrs( const MatrixAB& ab, MatrixB& b ) {
return pbtrs_impl< typename bindings::value_type<
- MatrixAB >::type >::invoke( uplo, ab, b );
+ MatrixAB >::type >::invoke( ab, b );
}
//
@@ -172,10 +179,9 @@
// * const MatrixB&
//
template< typename MatrixAB, typename MatrixB >
-inline std::ptrdiff_t pbtrs( const char uplo, const MatrixAB& ab,
- const MatrixB& b ) {
+inline std::ptrdiff_t pbtrs( const MatrixAB& ab, const MatrixB& b ) {
return pbtrs_impl< typename bindings::value_type<
- MatrixAB >::type >::invoke( uplo, ab, b );
+ MatrixAB >::type >::invoke( ab, b );
}
} // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftrf.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,11 +16,13 @@
#include <boost/assert.hpp>
#include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
+#include <boost/numeric/bindings/blas/detail/default_order.hpp>
#include <boost/numeric/bindings/is_mutable.hpp>
#include <boost/numeric/bindings/remove_imaginary.hpp>
#include <boost/numeric/bindings/size.hpp>
#include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
#include <boost/numeric/bindings/value_type.hpp>
#include <boost/static_assert.hpp>
#include <boost/type_traits/is_same.hpp>
@@ -48,11 +50,11 @@
// * netlib-compatible LAPACK backend (the default), and
// * float value-type.
//
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n, float* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+ const fortran_int_t n, float* a ) {
fortran_int_t info(0);
- LAPACK_SPFTRF( &lapack_option< TransR >::value, &lapack_option<
- UpLo >::value, &n, a, &info );
+ LAPACK_SPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
return info;
}
@@ -61,11 +63,11 @@
// * netlib-compatible LAPACK backend (the default), and
// * double value-type.
//
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n, double* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+ const fortran_int_t n, double* a ) {
fortran_int_t info(0);
- LAPACK_DPFTRF( &lapack_option< TransR >::value, &lapack_option<
- UpLo >::value, &n, a, &info );
+ LAPACK_DPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
return info;
}
@@ -74,12 +76,11 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<float> value-type.
//
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n,
- std::complex<float>* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+ const fortran_int_t n, std::complex<float>* a ) {
fortran_int_t info(0);
- LAPACK_CPFTRF( &lapack_option< TransR >::value, &lapack_option<
- UpLo >::value, &n, a, &info );
+ LAPACK_CPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
return info;
}
@@ -88,12 +89,11 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<double> value-type.
//
-template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftrf( TransR, UpLo, const fortran_int_t n,
- std::complex<double>* a ) {
+template< typename TransR >
+inline std::ptrdiff_t pftrf( const TransR transr, const char uplo,
+ const fortran_int_t n, std::complex<double>* a ) {
fortran_int_t info(0);
- LAPACK_ZPFTRF( &lapack_option< TransR >::value, &lapack_option<
- UpLo >::value, &n, a, &info );
+ LAPACK_ZPFTRF( &lapack_option< TransR >::value, &uplo, &n, a, &info );
return info;
}
@@ -108,7 +108,6 @@
typedef Value value_type;
typedef typename remove_imaginary< Value >::type real_type;
- typedef tag::column_major order;
//
// Static member function, that
@@ -116,12 +115,14 @@
// * Asserts that most arguments make sense.
//
template< typename MatrixA >
- static std::ptrdiff_t invoke( MatrixA& a ) {
+ static std::ptrdiff_t invoke( const char uplo, MatrixA& a ) {
+ namespace bindings = ::boost::numeric::bindings;
+ typedef typename blas::detail::default_order< MatrixA >::type order;
typedef typename result_of::trans_tag< MatrixA, order >::type transr;
- BOOST_STATIC_ASSERT( (is_mutable< MatrixA >::value) );
- BOOST_ASSERT( size_column_op(a, transr()) >= 0 );
- return detail::pftrf( transr(), uplo(), size_column_op(a, transr()),
- begin_value(a) );
+ BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
+ BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
+ return detail::pftrf( transr(), uplo, bindings::size_column_op(a,
+ transr()), bindings::begin_value(a) );
}
};
@@ -141,8 +142,9 @@
// * MatrixA&
//
template< typename MatrixA >
-inline std::ptrdiff_t pftrf( MatrixA& a ) {
- return pftrf_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+inline std::ptrdiff_t pftrf( const char uplo, MatrixA& a ) {
+ return pftrf_impl< typename bindings::value_type<
+ MatrixA >::type >::invoke( uplo, a );
}
//
@@ -150,8 +152,9 @@
// * const MatrixA&
//
template< typename MatrixA >
-inline std::ptrdiff_t pftrf( const MatrixA& a ) {
- return pftrf_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+inline std::ptrdiff_t pftrf( const char uplo, const MatrixA& a ) {
+ return pftrf_impl< typename bindings::value_type<
+ MatrixA >::type >::invoke( uplo, a );
}
} // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pftri.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,11 +16,13 @@
#include <boost/assert.hpp>
#include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
+#include <boost/numeric/bindings/blas/detail/default_order.hpp>
#include <boost/numeric/bindings/is_mutable.hpp>
#include <boost/numeric/bindings/remove_imaginary.hpp>
#include <boost/numeric/bindings/size.hpp>
#include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
#include <boost/numeric/bindings/value_type.hpp>
#include <boost/static_assert.hpp>
#include <boost/type_traits/is_same.hpp>
@@ -49,7 +51,8 @@
// * float value-type.
//
template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n, float* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+ const fortran_int_t n, float* a ) {
fortran_int_t info(0);
LAPACK_SPFTRI( &lapack_option< TransR >::value, &lapack_option<
UpLo >::value, &n, a, &info );
@@ -62,7 +65,8 @@
// * double value-type.
//
template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n, double* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+ const fortran_int_t n, double* a ) {
fortran_int_t info(0);
LAPACK_DPFTRI( &lapack_option< TransR >::value, &lapack_option<
UpLo >::value, &n, a, &info );
@@ -75,8 +79,8 @@
// * complex<float> value-type.
//
template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n,
- std::complex<float>* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+ const fortran_int_t n, std::complex<float>* a ) {
fortran_int_t info(0);
LAPACK_CPFTRI( &lapack_option< TransR >::value, &lapack_option<
UpLo >::value, &n, a, &info );
@@ -89,8 +93,8 @@
// * complex<double> value-type.
//
template< typename TransR, typename UpLo >
-inline std::ptrdiff_t pftri( TransR, UpLo, const fortran_int_t n,
- std::complex<double>* a ) {
+inline std::ptrdiff_t pftri( const TransR transr, const UpLo uplo,
+ const fortran_int_t n, std::complex<double>* a ) {
fortran_int_t info(0);
LAPACK_ZPFTRI( &lapack_option< TransR >::value, &lapack_option<
UpLo >::value, &n, a, &info );
@@ -108,7 +112,6 @@
typedef Value value_type;
typedef typename remove_imaginary< Value >::type real_type;
- typedef tag::column_major order;
//
// Static member function, that
@@ -117,12 +120,14 @@
//
template< typename MatrixA >
static std::ptrdiff_t invoke( MatrixA& a ) {
+ namespace bindings = ::boost::numeric::bindings;
+ typedef typename blas::detail::default_order< MatrixA >::type order;
typedef typename result_of::trans_tag< MatrixA, order >::type transr;
- typedef typename result_of::data_side< MatrixA >::type uplo;
- BOOST_STATIC_ASSERT( (is_mutable< MatrixA >::value) );
- BOOST_ASSERT( size_column_op(a, transr()) >= 0 );
- return detail::pftri( transr(), uplo(), size_column_op(a, transr()),
- begin_value(a) );
+ typedef typename result_of::uplo_tag< MatrixA, transr >::type uplo;
+ BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
+ BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
+ return detail::pftri( transr(), uplo(), bindings::size_column_op(a,
+ transr()), bindings::begin_value(a) );
}
};
@@ -143,7 +148,8 @@
//
template< typename MatrixA >
inline std::ptrdiff_t pftri( MatrixA& a ) {
- return pftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+ return pftri_impl< typename bindings::value_type<
+ MatrixA >::type >::invoke( a );
}
//
@@ -152,7 +158,8 @@
//
template< typename MatrixA >
inline std::ptrdiff_t pftri( const MatrixA& a ) {
- return pftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( a );
+ return pftri_impl< typename bindings::value_type<
+ MatrixA >::type >::invoke( a );
}
} // namespace lapack
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-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,11 +16,12 @@
#include <boost/assert.hpp>
#include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/is_column_major.hpp>
+#include <boost/numeric/bindings/data_order.hpp>
#include <boost/numeric/bindings/is_mutable.hpp>
#include <boost/numeric/bindings/remove_imaginary.hpp>
#include <boost/numeric/bindings/size.hpp>
#include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
#include <boost/numeric/bindings/uplo_tag.hpp>
#include <boost/numeric/bindings/value_type.hpp>
#include <boost/static_assert.hpp>
@@ -49,13 +50,13 @@
// * netlib-compatible LAPACK backend (the default), and
// * float value-type.
//
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo 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 );
+ LAPACK_SPFTRS( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
return info;
}
@@ -64,13 +65,13 @@
// * netlib-compatible LAPACK backend (the default), and
// * double value-type.
//
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo 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 );
+ LAPACK_DPFTRS( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
return info;
}
@@ -79,14 +80,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<float> value-type.
//
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo 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 );
+ LAPACK_CPFTRS( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
return info;
}
@@ -95,14 +96,14 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<double> value-type.
//
-template< typename TransR >
-inline std::ptrdiff_t pftrs( const TransR transr, const char uplo,
+template< typename TransR, typename UpLo >
+inline std::ptrdiff_t pftrs( const TransR transr, const UpLo 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 );
+ LAPACK_ZPFTRS( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &n, &nrhs, a, b, &ldb, &info );
return info;
}
@@ -123,27 +124,26 @@
// * Deduces the required arguments for dispatching to LAPACK, and
// * Asserts that most arguments make sense.
//
- template< typename VectorA, typename MatrixB >
- static std::ptrdiff_t invoke( const char uplo, const fortran_int_t n,
- const VectorA& a, MatrixB& b ) {
+ template< typename MatrixA, typename MatrixB >
+ static std::ptrdiff_t invoke( const MatrixA& a, MatrixB& b ) {
namespace bindings = ::boost::numeric::bindings;
- typedef typename result_of::trans_tag< VectorA, order >::type transr;
- BOOST_STATIC_ASSERT( (bindings::is_column_major< MatrixB >::value) );
+ typedef typename result_of::data_order< MatrixB >::type order;
+ typedef typename result_of::trans_tag< MatrixA, order >::type transr;
+ typedef typename result_of::uplo_tag< MatrixA, transr >::type uplo;
BOOST_STATIC_ASSERT( (boost::is_same< typename remove_const<
- typename bindings::value_type< VectorA >::type >::type,
+ typename bindings::value_type< MatrixA >::type >::type,
typename remove_const< typename bindings::value_type<
MatrixB >::type >::type >::value) );
BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixB >::value) );
- BOOST_ASSERT( bindings::size(a) >= n*(n+1)/2 );
BOOST_ASSERT( bindings::size_column(b) >= 0 );
+ BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
BOOST_ASSERT( bindings::size_minor(b) == 1 ||
bindings::stride_minor(b) == 1 );
BOOST_ASSERT( bindings::stride_major(b) >= std::max< std::ptrdiff_t >(1,
- n) );
- BOOST_ASSERT( n >= 0 );
- return detail::pftrs( transr(), uplo, n, bindings::size_column(b),
- bindings::begin_value(a), bindings::begin_value(b),
- bindings::stride_major(b) );
+ bindings::size_column_op(a, transr())) );
+ return detail::pftrs( transr(), uplo(), bindings::size_column_op(a,
+ transr()), bindings::size_column(b), bindings::begin_value(a),
+ bindings::begin_value(b), bindings::stride_major(b) );
}
};
@@ -162,22 +162,20 @@
// Overloaded function for pftrs. Its overload differs for
// * MatrixB&
//
-template< typename VectorA, typename MatrixB >
-inline std::ptrdiff_t pftrs( const char uplo, const fortran_int_t n,
- const VectorA& a, MatrixB& b ) {
+template< typename MatrixA, typename MatrixB >
+inline std::ptrdiff_t pftrs( const MatrixA& a, MatrixB& b ) {
return pftrs_impl< typename bindings::value_type<
- VectorA >::type >::invoke( uplo, n, a, b );
+ MatrixA >::type >::invoke( a, b );
}
//
// Overloaded function for pftrs. Its overload differs for
// * const MatrixB&
//
-template< typename VectorA, typename MatrixB >
-inline std::ptrdiff_t pftrs( const char uplo, const fortran_int_t n,
- const VectorA& a, const MatrixB& b ) {
+template< typename MatrixA, typename MatrixB >
+inline std::ptrdiff_t pftrs( const MatrixA& a, const MatrixB& b ) {
return pftrs_impl< typename bindings::value_type<
- VectorA >::type >::invoke( uplo, n, a, b );
+ MatrixA >::type >::invoke( a, b );
}
} // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tftri.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -16,12 +16,14 @@
#include <boost/assert.hpp>
#include <boost/numeric/bindings/begin.hpp>
-#include <boost/numeric/bindings/data_side.hpp>
+#include <boost/numeric/bindings/blas/detail/default_order.hpp>
#include <boost/numeric/bindings/diag_tag.hpp>
#include <boost/numeric/bindings/is_mutable.hpp>
#include <boost/numeric/bindings/remove_imaginary.hpp>
#include <boost/numeric/bindings/size.hpp>
#include <boost/numeric/bindings/stride.hpp>
+#include <boost/numeric/bindings/trans_tag.hpp>
+#include <boost/numeric/bindings/uplo_tag.hpp>
#include <boost/numeric/bindings/value_type.hpp>
#include <boost/static_assert.hpp>
#include <boost/type_traits/is_same.hpp>
@@ -49,12 +51,12 @@
// * netlib-compatible LAPACK backend (the default), and
// * float value-type.
//
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
- const fortran_int_t n, float* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+ const Diag diag, const fortran_int_t n, float* a ) {
fortran_int_t info(0);
- LAPACK_STFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
- Diag >::value, &n, a, &info );
+ LAPACK_STFTRI( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
return info;
}
@@ -63,12 +65,12 @@
// * netlib-compatible LAPACK backend (the default), and
// * double value-type.
//
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
- const fortran_int_t n, double* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+ const Diag diag, const fortran_int_t n, double* a ) {
fortran_int_t info(0);
- LAPACK_DTFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
- Diag >::value, &n, a, &info );
+ LAPACK_DTFTRI( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
return info;
}
@@ -77,12 +79,12 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<float> value-type.
//
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
- const fortran_int_t n, std::complex<float>* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+ const Diag diag, const fortran_int_t n, std::complex<float>* a ) {
fortran_int_t info(0);
- LAPACK_CTFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
- Diag >::value, &n, a, &info );
+ LAPACK_CTFTRI( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
return info;
}
@@ -91,12 +93,12 @@
// * netlib-compatible LAPACK backend (the default), and
// * complex<double> value-type.
//
-template< typename TransR, typename Diag >
-inline std::ptrdiff_t tftri( TransR, const char uplo, Diag,
- const fortran_int_t n, std::complex<double>* a ) {
+template< typename TransR, typename UpLo, typename Diag >
+inline std::ptrdiff_t tftri( const TransR transr, const UpLo uplo,
+ const Diag diag, const fortran_int_t n, std::complex<double>* a ) {
fortran_int_t info(0);
- LAPACK_ZTFTRI( &lapack_option< TransR >::value, &uplo, &lapack_option<
- Diag >::value, &n, a, &info );
+ LAPACK_ZTFTRI( &lapack_option< TransR >::value, &lapack_option<
+ UpLo >::value, &lapack_option< Diag >::value, &n, a, &info );
return info;
}
@@ -111,7 +113,6 @@
typedef Value value_type;
typedef typename remove_imaginary< Value >::type real_type;
- typedef tag::column_major order;
//
// Static member function, that
@@ -119,13 +120,17 @@
// * Asserts that most arguments make sense.
//
template< typename MatrixA >
- static std::ptrdiff_t invoke( const char uplo, MatrixA& a ) {
+ static std::ptrdiff_t invoke( MatrixA& a ) {
+ namespace bindings = ::boost::numeric::bindings;
+ typedef typename blas::detail::default_order< MatrixA >::type order;
typedef typename result_of::trans_tag< MatrixA, order >::type transr;
+ typedef typename result_of::uplo_tag< MatrixA, transr >::type uplo;
typedef typename result_of::diag_tag< MatrixA >::type diag;
- BOOST_STATIC_ASSERT( (is_mutable< MatrixA >::value) );
- BOOST_ASSERT( size_column_op(a, transr()) >= 0 );
- return detail::tftri( transr(), uplo, diag(), size_column_op(a,
- transr()), begin_value(a) );
+ BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
+ BOOST_ASSERT( bindings::size_column_op(a, transr()) >= 0 );
+ return detail::tftri( transr(), uplo(), diag(),
+ bindings::size_column_op(a, transr()),
+ bindings::begin_value(a) );
}
};
@@ -145,9 +150,9 @@
// * MatrixA&
//
template< typename MatrixA >
-inline std::ptrdiff_t tftri( const char uplo, MatrixA& a ) {
- return tftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( uplo,
- a );
+inline std::ptrdiff_t tftri( MatrixA& a ) {
+ return tftri_impl< typename bindings::value_type<
+ MatrixA >::type >::invoke( a );
}
//
@@ -155,9 +160,9 @@
// * const MatrixA&
//
template< typename MatrixA >
-inline std::ptrdiff_t tftri( const char uplo, const MatrixA& a ) {
- return tftri_impl< typename bindings::value_type< MatrixA >::type >::invoke( uplo,
- a );
+inline std::ptrdiff_t tftri( const MatrixA& a ) {
+ return tftri_impl< typename bindings::value_type<
+ MatrixA >::type >::invoke( a );
}
} // namespace lapack
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -17,7 +17,6 @@
#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_column_major.hpp>
#include <boost/numeric/bindings/is_mutable.hpp>
#include <boost/numeric/bindings/lapack/workspace.hpp>
@@ -110,7 +109,7 @@
BOOST_STATIC_ASSERT( (bindings::is_mutable< MatrixA >::value) );
BOOST_ASSERT( bindings::size(tau) >= n-1 );
BOOST_ASSERT( bindings::size(work.select(value_type())) >=
- min_size_work( side, m, n ));
+ min_size_work( n ));
BOOST_ASSERT( bindings::size_minor(a) == 1 ||
bindings::stride_minor(a) == 1 );
BOOST_ASSERT( bindings::stride_major(a) >= n );
@@ -133,8 +132,7 @@
const VectorTAU& tau, minimal_workspace ) {
namespace bindings = ::boost::numeric::bindings;
typedef typename result_of::uplo_tag< MatrixA >::type uplo;
- bindings::detail::array< value_type > tmp_work( min_size_work( side,
- m, n ) );
+ bindings::detail::array< value_type > tmp_work( min_size_work( n ) );
return invoke( n, a, tau, workspace( tmp_work ) );
}
@@ -163,11 +161,8 @@
// Static member function that returns the minimum size of
// workspace-array work.
//
- template< typename Side >
- static std::ptrdiff_t min_size_work( const Side side,
- const std::ptrdiff_t m, const std::ptrdiff_t n ) {
- return std::max< std::ptrdiff_t >( 1, bindings::detail::if_left( side,
- n, m ) );
+ static std::ptrdiff_t min_size_work( const std::ptrdiff_t n ) {
+ return n-1;
}
};
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -1209,6 +1209,26 @@
const fortran_int_t* ldab, void* b, const fortran_int_t* ldb,
fortran_int_t* info );
+// Value-type variants of pftrf
+void LAPACK_SPFTRF( const char* transr, const char* uplo,
+ const fortran_int_t* n, float* a, fortran_int_t* info );
+void LAPACK_DPFTRF( const char* transr, const char* uplo,
+ const fortran_int_t* n, double* a, fortran_int_t* info );
+void LAPACK_CPFTRF( const char* transr, const char* uplo,
+ const fortran_int_t* n, void* a, fortran_int_t* info );
+void LAPACK_ZPFTRF( const char* transr, const char* uplo,
+ const fortran_int_t* n, void* a, fortran_int_t* info );
+
+// Value-type variants of pftri
+void LAPACK_SPFTRI( const char* transr, const char* uplo,
+ const fortran_int_t* n, float* a, fortran_int_t* info );
+void LAPACK_DPFTRI( const char* transr, const char* uplo,
+ const fortran_int_t* n, double* a, fortran_int_t* info );
+void LAPACK_CPFTRI( const char* transr, const char* uplo,
+ const fortran_int_t* n, void* a, fortran_int_t* info );
+void LAPACK_ZPFTRI( const char* transr, const char* uplo,
+ const fortran_int_t* n, void* a, fortran_int_t* info );
+
// Value-type variants of pftrs
void LAPACK_SPFTRS( const char* transr, const char* uplo,
const fortran_int_t* n, const fortran_int_t* nrhs, const float* a,
@@ -1675,6 +1695,16 @@
const fortran_int_t* nrhs, const void* ab, const fortran_int_t* ldab,
void* b, const fortran_int_t* ldb, fortran_int_t* info );
+// Value-type variants of tftri
+void LAPACK_STFTRI( const char* transr, const char* uplo, const char* diag,
+ const fortran_int_t* n, float* a, fortran_int_t* info );
+void LAPACK_DTFTRI( const char* transr, const char* uplo, const char* diag,
+ const fortran_int_t* n, double* a, fortran_int_t* info );
+void LAPACK_CTFTRI( const char* transr, const char* uplo, const char* diag,
+ const fortran_int_t* n, void* a, fortran_int_t* info );
+void LAPACK_ZTFTRI( const char* transr, const char* uplo, const char* diag,
+ const fortran_int_t* n, void* a, fortran_int_t* info );
+
// Value-type variants of tpcon
void LAPACK_STPCON( const char* norm, const char* uplo, const char* diag,
const fortran_int_t* n, const float* ap, float* rcond, float* work,
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -426,6 +426,18 @@
#define LAPACK_CPBTRS FORTRAN_ID( cpbtrs )
#define LAPACK_ZPBTRS FORTRAN_ID( zpbtrs )
+// Value-type variants of pftrf
+#define LAPACK_SPFTRF FORTRAN_ID( spftrf )
+#define LAPACK_DPFTRF FORTRAN_ID( dpftrf )
+#define LAPACK_CPFTRF FORTRAN_ID( cpftrf )
+#define LAPACK_ZPFTRF FORTRAN_ID( zpftrf )
+
+// Value-type variants of pftri
+#define LAPACK_SPFTRI FORTRAN_ID( spftri )
+#define LAPACK_DPFTRI FORTRAN_ID( dpftri )
+#define LAPACK_CPFTRI FORTRAN_ID( cpftri )
+#define LAPACK_ZPFTRI FORTRAN_ID( zpftri )
+
// Value-type variants of pftrs
#define LAPACK_SPFTRS FORTRAN_ID( spftrs )
#define LAPACK_DPFTRS FORTRAN_ID( dpftrs )
@@ -606,6 +618,12 @@
#define LAPACK_CTBTRS FORTRAN_ID( ctbtrs )
#define LAPACK_ZTBTRS FORTRAN_ID( ztbtrs )
+// Value-type variants of tftri
+#define LAPACK_STFTRI FORTRAN_ID( stftri )
+#define LAPACK_DTFTRI FORTRAN_ID( dtftri )
+#define LAPACK_CTFTRI FORTRAN_ID( ctftri )
+#define LAPACK_ZTFTRI FORTRAN_ID( ztftri )
+
// Value-type variants of tpcon
#define LAPACK_STPCON FORTRAN_ID( stpcon )
#define LAPACK_DTPCON FORTRAN_ID( dtpcon )
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -87,6 +87,8 @@
[include computational/pbrfs.qbk]
[include computational/pbtrf.qbk]
[include computational/pbtrs.qbk]
+[include computational/pftrf.qbk]
+[include computational/pftri.qbk]
[include computational/pftrs.qbk]
[include computational/pocon.qbk]
[include computational/poequ.qbk]
@@ -117,6 +119,7 @@
[include computational/tbcon.qbk]
[include computational/tbrfs.qbk]
[include computational/tbtrs.qbk]
+[include computational/tftri.qbk]
[include computational/tpcon.qbk]
[include computational/tprfs.qbk]
[include computational/tptri.qbk]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbcon.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -9,7 +9,7 @@
[heading Prototype]
There is one prototype of `pbcon` available, please see below.
``
-pbcon( const char uplo, const MatrixAB& ab, const Scalar >, Scalar > );
+pbcon( const MatrixAB& ab, const Scalar >, Scalar > );
``
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pbtrs.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -9,7 +9,7 @@
[heading Prototype]
There is one prototype of `pbtrs` available, please see below.
``
-pbtrs( const char uplo, const MatrixAB& ab, MatrixB& b );
+pbtrs( const MatrixAB& ab, MatrixB& b );
``
Added: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrf.qbk
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrf.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,91 @@
+[/
+
+THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
+
+]
+
+[section pftrf]
+
+[heading Prototype]
+There is one prototype of `pftrf` available, please see below.
+``
+pftrf( const char uplo, MatrixA& a );
+``
+
+
+[heading Description]
+
+`pftrf` (short for $FRIENDLY_NAME) provides a C++
+interface to LAPACK routines SPFTRF, DPFTRF, CPFTRF, and ZPFTRF.
+`pftrf` computes the Cholesky factorization of a complex Hermitian
+positive definite matrix A.
+
+The factorization has the form
+A = U**H * U, if UPLO = 'U', or
+A = L * L**H, if UPLO = 'L',
+where U is an upper triangular matrix and L is lower triangular.
+
+This is the block version of the algorithm, calling Level 3 BLAS.
+
+The selection of the LAPACK routine is done during compile-time,
+and is determined by the type of values contained in type `MatrixA`.
+The type of values is obtained through the `value_type` meta-function
+ `typename value_type<MatrixA>::type`.
+The dispatching table below illustrates to which specific routine
+the code path will be generated.
+
+[table Dispatching of pftrf
+[ [ Value type of MatrixA ] [LAPACK routine] ]
+[ [`float`][SPFTRF] ]
+[ [`double`][DPFTRF] ]
+[ [`complex<float>`][CPFTRF] ]
+[ [`complex<double>`][ZPFTRF] ]
+
+]
+
+
+[heading Definition]
+Defined in header [headerref boost/numeric/bindings/lapack/computational/pftrf.hpp].
+
+
+[heading Parameters or Requirements on Types]
+
+[variablelist Parameters
+ [[MatrixA] [The definition of term 1]]
+ [[MatrixB] [The definition of term 2]]
+ [[MatrixC] [
+ The definition of term 3.
+
+ Definitions may contain paragraphs.
+ ]]
+]
+
+
+[heading Complexity]
+
+
+[heading Example]
+``
+#include <boost/numeric/bindings/lapack/computational/pftrf.hpp>
+using namespace boost::numeric::bindings;
+
+lapack::pftrf( x, y, z );
+
+``
+
+this will output
+
+``
+[5] 0 1 2 3 4 5
+``
+
+
+
+[heading Notes]
+
+
+[heading See Also]
+
+* Originating Fortran source files [@http://www.netlib.org/lapack/explore-html/spftrf.f.html spftrf.f], [@http://www.netlib.org/lapack/explore-html/dpftrf.f.html dpftrf.f], [@http://www.netlib.org/lapack/explore-html/cpftrf.f.html cpftrf.f], and [@http://www.netlib.org/lapack/explore-html/zpftrf.f.html zpftrf.f] at Netlib.
+
+[endsect]
Added: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftri.qbk
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftri.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,85 @@
+[/
+
+THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
+
+]
+
+[section pftri]
+
+[heading Prototype]
+There is one prototype of `pftri` available, please see below.
+``
+pftri( MatrixA& a );
+``
+
+
+[heading Description]
+
+`pftri` (short for $FRIENDLY_NAME) provides a C++
+interface to LAPACK routines SPFTRI, DPFTRI, CPFTRI, and ZPFTRI.
+`pftri` computes the inverse of a complex Hermitian positive definite
+matrix A using the Cholesky factorization A = U**H*U or A = L*L**H
+computed by ZPFTRF.
+
+The selection of the LAPACK routine is done during compile-time,
+and is determined by the type of values contained in type `MatrixA`.
+The type of values is obtained through the `value_type` meta-function
+ `typename value_type<MatrixA>::type`.
+The dispatching table below illustrates to which specific routine
+the code path will be generated.
+
+[table Dispatching of pftri
+[ [ Value type of MatrixA ] [LAPACK routine] ]
+[ [`float`][SPFTRI] ]
+[ [`double`][DPFTRI] ]
+[ [`complex<float>`][CPFTRI] ]
+[ [`complex<double>`][ZPFTRI] ]
+
+]
+
+
+[heading Definition]
+Defined in header [headerref boost/numeric/bindings/lapack/computational/pftri.hpp].
+
+
+[heading Parameters or Requirements on Types]
+
+[variablelist Parameters
+ [[MatrixA] [The definition of term 1]]
+ [[MatrixB] [The definition of term 2]]
+ [[MatrixC] [
+ The definition of term 3.
+
+ Definitions may contain paragraphs.
+ ]]
+]
+
+
+[heading Complexity]
+
+
+[heading Example]
+``
+#include <boost/numeric/bindings/lapack/computational/pftri.hpp>
+using namespace boost::numeric::bindings;
+
+lapack::pftri( x, y, z );
+
+``
+
+this will output
+
+``
+[5] 0 1 2 3 4 5
+``
+
+
+
+[heading Notes]
+
+
+[heading See Also]
+
+* Originating Fortran source files [@http://www.netlib.org/lapack/explore-html/spftri.f.html spftri.f], [@http://www.netlib.org/lapack/explore-html/dpftri.f.html dpftri.f], [@http://www.netlib.org/lapack/explore-html/cpftri.f.html cpftri.f], and [@http://www.netlib.org/lapack/explore-html/zpftri.f.html zpftri.f] at Netlib.
+
+[endsect]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/pftrs.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -9,8 +9,7 @@
[heading Prototype]
There is one prototype of `pftrs` available, please see below.
``
-pftrs( const char uplo, const int_t n, const VectorA& a,
- MatrixB& b );
+pftrs( const MatrixA& a, MatrixB& b );
``
@@ -23,14 +22,14 @@
A = U**H*U or A = L*L**H computed by ZPFTRF.
The selection of the LAPACK routine is done during compile-time,
-and is determined by the type of values contained in type `VectorA`.
+and is determined by the type of values contained in type `MatrixA`.
The type of values is obtained through the `value_type` meta-function
- `typename value_type<VectorA>::type`.
+ `typename value_type<MatrixA>::type`.
The dispatching table below illustrates to which specific routine
the code path will be generated.
[table Dispatching of pftrs
-[ [ Value type of VectorA ] [LAPACK routine] ]
+[ [ Value type of MatrixA ] [LAPACK routine] ]
[ [`float`][SPFTRS] ]
[ [`double`][DPFTRS] ]
[ [`complex<float>`][CPFTRS] ]
Added: sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/tftri.qbk
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/doc/lapack/computational/tftri.qbk 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,86 @@
+[/
+
+THIS FILE IS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT!
+
+]
+
+[section tftri]
+
+[heading Prototype]
+There is one prototype of `tftri` available, please see below.
+``
+tftri( MatrixA& a );
+``
+
+
+[heading Description]
+
+`tftri` (short for $FRIENDLY_NAME) provides a C++
+interface to LAPACK routines STFTRI, DTFTRI, CTFTRI, and ZTFTRI.
+`tftri` computes the inverse of a triangular matrix A stored in RFP
+format.
+
+This is a Level 3 BLAS version of the algorithm.
+
+The selection of the LAPACK routine is done during compile-time,
+and is determined by the type of values contained in type `MatrixA`.
+The type of values is obtained through the `value_type` meta-function
+ `typename value_type<MatrixA>::type`.
+The dispatching table below illustrates to which specific routine
+the code path will be generated.
+
+[table Dispatching of tftri
+[ [ Value type of MatrixA ] [LAPACK routine] ]
+[ [`float`][STFTRI] ]
+[ [`double`][DTFTRI] ]
+[ [`complex<float>`][CTFTRI] ]
+[ [`complex<double>`][ZTFTRI] ]
+
+]
+
+
+[heading Definition]
+Defined in header [headerref boost/numeric/bindings/lapack/computational/tftri.hpp].
+
+
+[heading Parameters or Requirements on Types]
+
+[variablelist Parameters
+ [[MatrixA] [The definition of term 1]]
+ [[MatrixB] [The definition of term 2]]
+ [[MatrixC] [
+ The definition of term 3.
+
+ Definitions may contain paragraphs.
+ ]]
+]
+
+
+[heading Complexity]
+
+
+[heading Example]
+``
+#include <boost/numeric/bindings/lapack/computational/tftri.hpp>
+using namespace boost::numeric::bindings;
+
+lapack::tftri( x, y, z );
+
+``
+
+this will output
+
+``
+[5] 0 1 2 3 4 5
+``
+
+
+
+[heading Notes]
+
+
+[heading See Also]
+
+* Originating Fortran source files [@http://www.netlib.org/lapack/explore-html/stftri.f.html stftri.f], [@http://www.netlib.org/lapack/explore-html/dtftri.f.html dtftri.f], [@http://www.netlib.org/lapack/explore-html/ctftri.f.html ctftri.f], and [@http://www.netlib.org/lapack/explore-html/ztftri.f.html ztftri.f] at Netlib.
+
+[endsect]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -1579,7 +1579,8 @@
# matrices in our bindings. E.g. as used in spsv.
#
packed_keywords = re.compile( '(stored|packed)\s+(columnwise|triangular\s+matrix)', re.M | re.S ).findall( comment_block )
- if len( packed_keywords ) > 0:
+ rectangular_full_packed = ' RFP '
+ if len( packed_keywords ) > 0 or rectangular_full_packed in comment_block:
#
# Overrule my type :-)
#
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/org.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -1,7 +1,7 @@
$TEMPLATE[orgbr.all.min_size_work.args]
M,N
$TEMPLATE[orgbr.all.min_size_work]
-return std::max< $INTEGER_TYPE >( 1, std::min< $INTEGER_TYPE >( m, n );
+return std::max< $INTEGER_TYPE >( 1, std::min< $INTEGER_TYPE >( m, n ) );
$TEMPLATE[orglq.all.min_size_work.args]
M
$TEMPLATE[orglq.all.min_size_work]
@@ -24,8 +24,4 @@
N
$TEMPLATE[orgqr.all.min_size_work]
return std::max< $INTEGER_TYPE >( 1, n );
-$TEMPLATE[orgtr.all.min_size_work.args]
-N
-$TEMPLATE[orgtr.all.min_size_work]
-return std::max< $INTEGER_TYPE >( 1, n-1 );
$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbcon.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbcon.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,3 @@
+$TEMPLATE[pbcon.all.UPLO.trait_of]
+AB
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbtrs.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pbtrs.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,3 @@
+$TEMPLATE[pbtrs.all.UPLO.trait_of]
+AB
+$TEMPLATE[end]
Added: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pftrs.hpp
==============================================================================
--- (empty file)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/pftrs.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -0,0 +1,7 @@
+$TEMPLATE[pftrs.all.TRANSR.trait_of]
+A
+$TEMPLATE[pftrs.all.UPLO.trait_of]
+A
+$TEMPLATE[pftrs.all.N.trait_of]
+A
+$TEMPLATE[end]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/computational/ung.hpp 2010-07-16 18:32:12 EDT (Fri, 16 Jul 2010)
@@ -24,10 +24,4 @@
M
$TEMPLATE[ungrq.all.min_size_work]
return std::max< $INTEGER_TYPE >( 1, m );
-$TEMPLATE[ungtr.all.min_size_work.args]
-SIDE,M,N
-$TEMPLATE[ungtr.includes]
-#include <boost/numeric/bindings/detail/if_left.hpp>
-$TEMPLATE[ungtr.all.min_size_work]
-return std::max< $INTEGER_TYPE >( 1, bindings::detail::if_left( side, n, m ) );
$TEMPLATE[end]
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk