Exemple #1
0
 static std::ptrdiff_t invoke( const VectorD& d, const VectorE& e,
         const real_type anorm, real_type& rcond, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
             bindings::size(d) ) );
     return invoke( d, e, anorm, rcond, workspace( tmp_rwork ) );
 }
Exemple #2
0
 static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
         VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
         VectorBERR& berr, integer_t& info, minimal_workspace work ) {
     traits::detail::array< value_type > tmp_work( min_size_work( n ) );
     traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
     invoke( n, ap, afp, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
             tmp_rwork ) );
 }
Exemple #3
0
 static std::ptrdiff_t invoke( const char norm, const MatrixA& a,
         const real_type anorm, real_type& rcond, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     bindings::detail::array< value_type > tmp_work( min_size_work(
             bindings::size_column(a) ) );
     bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
             bindings::size_column(a) ) );
     return invoke( norm, a, anorm, rcond, workspace( tmp_work,
             tmp_rwork ) );
 }
Exemple #4
0
 static void invoke( char const fact, MatrixA& a, MatrixAF& af,
         char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
         VectorFERR& ferr, VectorBERR& berr, integer_t& info,
         minimal_workspace work ) {
     traits::detail::array< value_type > tmp_work( min_size_work(
             traits::matrix_num_columns(a) ) );
     traits::detail::array< real_type > tmp_rwork( min_size_rwork(
             traits::matrix_num_columns(a) ) );
     invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
             workspace( tmp_work, tmp_rwork ) );
 }
Exemple #5
0
 static void invoke( integer_t const itype, char const jobz,
         integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
         integer_t& info, minimal_workspace work ) {
     traits::detail::array< value_type > tmp_work( min_size_work( jobz,
             n ) );
     traits::detail::array< real_type > tmp_rwork( min_size_rwork( jobz,
             n ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
             n ) );
     invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work, tmp_rwork,
             tmp_iwork ) );
 }
Exemple #6
0
 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,
         VectorIFAILL& ifaill, VectorIFAILR& ifailr, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     bindings::detail::array< value_type > tmp_work( min_size_work(
             bindings::size_column(h) ) );
     bindings::detail::array< real_type > tmp_rwork( min_size_rwork(
             bindings::size_column(h) ) );
     return invoke( side, eigsrc, initv, select, h, w, vl, vr, mm, m,
             ifaill, ifailr, workspace( tmp_work, tmp_rwork ) );
 }
Exemple #7
0
 static std::ptrdiff_t invoke( const char fact, MatrixAB& ab,
         MatrixAFB& afb, char& equed, VectorS& s, MatrixB& b, MatrixX& x,
         real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
         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( fact, ab, afb, equed, s, b, x, rcond, ferr, berr,
             workspace( tmp_work, tmp_rwork ) );
 }
Exemple #8
0
 static void invoke( char const jobz, char const range, MatrixA& a,
         real_type const vl, real_type const vu, integer_t const il,
         integer_t const iu, real_type const abstol, integer_t& m,
         VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
         minimal_workspace work ) {
     traits::detail::array< value_type > tmp_work( min_size_work(
             traits::matrix_num_columns(a) ) );
     traits::detail::array< real_type > tmp_rwork( min_size_rwork(
             traits::matrix_num_columns(a) ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
             traits::matrix_num_columns(a) ) );
     invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
             workspace( tmp_work, tmp_rwork, tmp_iwork ) );
 }
Exemple #9
0
 static void invoke( integer_t const itype, char const jobz,
         integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
         integer_t& info, optimal_workspace work ) {
     value_type opt_size_work;
     real_type opt_size_rwork;
     integer_t opt_size_iwork;
     detail::hegvd( itype, jobz, traits::matrix_uplo_tag(a), n,
             traits::matrix_storage(a), traits::leading_dimension(a),
             traits::matrix_storage(b), traits::leading_dimension(b),
             traits::vector_storage(w), &opt_size_work, -1,
             &opt_size_rwork, -1, &opt_size_iwork, -1, info );
     traits::detail::array< value_type > tmp_work(
             traits::detail::to_int( opt_size_work ) );
     traits::detail::array< real_type > tmp_rwork(
             traits::detail::to_int( opt_size_rwork ) );
     traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
     invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work, tmp_rwork,
             tmp_iwork ) );
 }
Exemple #10
0
 static void invoke( char const jobz, char const range, MatrixA& a,
         real_type const vl, real_type const vu, integer_t const il,
         integer_t const iu, real_type const abstol, integer_t& m,
         VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
         optimal_workspace work ) {
     value_type opt_size_work;
     traits::detail::array< real_type > tmp_rwork( min_size_rwork(
             traits::matrix_num_columns(a) ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
             traits::matrix_num_columns(a) ) );
     detail::heevx( jobz, range, traits::matrix_uplo_tag(a),
             traits::matrix_num_columns(a), traits::matrix_storage(a),
             traits::leading_dimension(a), vl, vu, il, iu, abstol, m,
             traits::vector_storage(w), traits::matrix_storage(z),
             traits::leading_dimension(z), &opt_size_work, -1,
             traits::vector_storage(tmp_rwork),
             traits::vector_storage(tmp_iwork),
             traits::vector_storage(ifail), info );
     traits::detail::array< value_type > tmp_work(
             traits::detail::to_int( opt_size_work ) );
     invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
             workspace( tmp_work, tmp_rwork, tmp_iwork ) );
 }