示例#1
0
文件: stedc.hpp 项目: fluxdark/jflib
 static void invoke( char const compz, integer_t const n, VectorD& d,
         VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
     traits::detail::array< real_type > tmp_work( min_size_work(
             $CALL_MIN_SIZE ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork( compz,
             n ) );
     invoke( compz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
 }
示例#2
0
文件: sprfs.hpp 项目: fluxdark/jflib
 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< real_type > tmp_work( min_size_work( n ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
     invoke( n, ap, afp, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
             tmp_iwork ) );
 }
示例#3
0
文件: syevd.hpp 项目: fluxdark/jflib
 static void invoke( char const jobz, MatrixA& a, VectorW& w,
         integer_t& info, minimal_workspace work ) {
     traits::detail::array< real_type > tmp_work( min_size_work( jobz,
             traits::matrix_num_columns(a) ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
             traits::matrix_num_columns(a) ) );
     invoke( jobz, a, w, info, workspace( tmp_work, tmp_iwork ) );
 }
示例#4
0
 static std::ptrdiff_t invoke( const char jobz, const fortran_int_t n,
         VectorD& d, VectorE& e, MatrixZ& z, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     bindings::detail::array< real_type > tmp_work( min_size_work( jobz,
             n ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             min_size_iwork( jobz, n ) );
     return invoke( jobz, n, d, e, z, workspace( tmp_work, tmp_iwork ) );
 }
示例#5
0
文件: gecon.hpp 项目: CQMP/scripts
 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< real_type > tmp_work( min_size_work(
             bindings::size_column(a) ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             min_size_iwork( bindings::size_column(a) ) );
     return invoke( norm, a, anorm, rcond, workspace( tmp_work,
             tmp_iwork ) );
 }
示例#6
0
文件: posvx.hpp 项目: fluxdark/jflib
 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< real_type > tmp_work( min_size_work(
             traits::matrix_num_columns(a) ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
             traits::matrix_num_columns(a) ) );
     invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
             workspace( tmp_work, tmp_iwork ) );
 }
示例#7
0
文件: sbgvx.hpp 项目: fluxdark/jflib
 static void invoke( char const jobz, char const range, integer_t const n,
         integer_t const ka, integer_t const kb, MatrixAB& ab,
         MatrixBB& bb, MatrixQ& q, 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< real_type > tmp_work( min_size_work( n ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
     invoke( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
             w, z, ifail, info, workspace( tmp_work, tmp_iwork ) );
 }
示例#8
0
 static std::ptrdiff_t invoke( const MatrixAP& ap, const VectorIPIV& ipiv,
         const real_type anorm, real_type& rcond, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
     bindings::detail::array< real_type > tmp_work( min_size_work(
             bindings::size_column(ap) ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             min_size_iwork( bindings::size_column(ap) ) );
     return invoke( ap, ipiv, anorm, rcond, workspace( tmp_work,
             tmp_iwork ) );
 }
示例#9
0
文件: bdsdc.hpp 项目: CQMP/scripts
 static std::ptrdiff_t invoke( const char uplo, const char compq,
         const fortran_int_t n, VectorD& d, VectorE& e, MatrixU& u,
         MatrixVT& vt, VectorQ& q, VectorIQ& iq, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     bindings::detail::array< real_type > tmp_work( min_size_work( compq,
             n ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             min_size_iwork( n ) );
     return invoke( uplo, compq, n, d, e, u, vt, q, iq,
             workspace( tmp_work, tmp_iwork ) );
 }
示例#10
0
文件: stebz.hpp 项目: fluxdark/jflib
 static void invoke( char const range, char const order, integer_t const n,
         real_type const vl, real_type const vu, integer_t const il,
         integer_t const iu, real_type const abstol, VectorD& d,
         VectorE& e, integer_t& m, integer_t& nsplit, VectorW& w,
         VectorIBLOCK& iblock, VectorISPLIT& isplit, integer_t& info,
         minimal_workspace work ) {
     traits::detail::array< real_type > tmp_work( min_size_work( n ) );
     traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
     invoke( range, order, n, vl, vu, il, iu, abstol, d, e, m, nsplit, w,
             iblock, isplit, info, workspace( tmp_work, tmp_iwork ) );
 }
示例#11
0
文件: hegvd.hpp 项目: fluxdark/jflib
 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 ) );
 }
示例#12
0
 static std::ptrdiff_t invoke( const char range, const char order,
         const fortran_int_t n, const real_type vl, const real_type vu,
         const fortran_int_t il, const fortran_int_t iu,
         const real_type abstol, const VectorD& d, const VectorE& e,
         fortran_int_t& m, fortran_int_t& nsplit, VectorW& w,
         VectorIBLOCK& iblock, VectorISPLIT& isplit, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     bindings::detail::array< real_type > tmp_work( min_size_work( n ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             min_size_iwork( n ) );
     return invoke( range, order, n, vl, vu, il, iu, abstol, d, e, m,
             nsplit, w, iblock, isplit, workspace( tmp_work, tmp_iwork ) );
 }
示例#13
0
文件: syevd.hpp 项目: fluxdark/jflib
 static void invoke( char const jobz, MatrixA& a, VectorW& w,
         integer_t& info, optimal_workspace work ) {
     real_type opt_size_work;
     integer_t opt_size_iwork;
     detail::syevd( jobz, traits::matrix_uplo_tag(a),
             traits::matrix_num_columns(a), traits::matrix_storage(a),
             traits::leading_dimension(a), traits::vector_storage(w),
             &opt_size_work, -1, &opt_size_iwork, -1, info );
     traits::detail::array< real_type > tmp_work(
             traits::detail::to_int( opt_size_work ) );
     traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
     invoke( jobz, a, w, info, workspace( tmp_work, tmp_iwork ) );
 }
示例#14
0
文件: stedc.hpp 项目: fluxdark/jflib
 static void invoke( char const compz, integer_t const n, VectorD& d,
         VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
     real_type opt_size_work;
     integer_t opt_size_iwork;
     detail::stedc( compz, n, traits::vector_storage(d),
             traits::vector_storage(e), traits::matrix_storage(z),
             traits::leading_dimension(z), &opt_size_work, -1,
             &opt_size_iwork, -1, info );
     traits::detail::array< real_type > tmp_work(
             traits::detail::to_int( opt_size_work ) );
     traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
     invoke( compz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
 }
示例#15
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< 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( fact, ab, afb, equed, s, b, x, rcond, ferr, berr,
             workspace( tmp_work, tmp_iwork ) );
 }
示例#16
0
文件: heevx.hpp 项目: fluxdark/jflib
 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 ) );
 }
示例#17
0
文件: spevx.hpp 项目: CQMP/scripts
 static std::ptrdiff_t invoke( const char jobz, const char range,
         MatrixAP& ap, const real_type vl, const real_type vu,
         const fortran_int_t il, const fortran_int_t iu,
         const real_type abstol, fortran_int_t& m, VectorW& w,
         MatrixZ& z, VectorIFAIL& ifail, minimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     typedef typename result_of::uplo_tag< MatrixAP >::type uplo;
     bindings::detail::array< real_type > tmp_work( min_size_work(
             bindings::size_column(ap) ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             min_size_iwork( bindings::size_column(ap) ) );
     return invoke( jobz, range, ap, vl, vu, il, iu, abstol, m, w, z,
             ifail, workspace( tmp_work, tmp_iwork ) );
 }
示例#18
0
 static std::ptrdiff_t invoke( const char jobz, const fortran_int_t n,
         VectorD& d, VectorE& e, MatrixZ& z, optimal_workspace ) {
     namespace bindings = ::boost::numeric::bindings;
     real_type opt_size_work;
     fortran_int_t opt_size_iwork;
     detail::stevd( jobz, n, bindings::begin_value(d),
             bindings::begin_value(e), bindings::begin_value(z),
             bindings::stride_major(z), &opt_size_work, -1,
             &opt_size_iwork, -1 );
     bindings::detail::array< real_type > tmp_work(
             traits::detail::to_int( opt_size_work ) );
     bindings::detail::array< fortran_int_t > tmp_iwork(
             opt_size_iwork );
     return invoke( jobz, n, d, e, z, workspace( tmp_work, tmp_iwork ) );
 }
示例#19
0
文件: hegvd.hpp 项目: fluxdark/jflib
 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 ) );
 }
示例#20
0
文件: heevx.hpp 项目: fluxdark/jflib
 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 ) );
 }