コード例 #1
0
ファイル: in_specialized.hpp プロジェクト: cpplibivl/ivl
    static
    inline
    void exec(A1& out, A2& in,
              int inner_dim_1, int inner_dim_2)
    {
        using namespace ivl::types;

        if(in.iter_specialization() == I_SPECIALIZED) {
            loop_base_nd<3, F, A1, A2,
                         O_OPTIMAL_ACCESS, I_OPTIMAL_ACCESS,
                         t_false, t_false,
                         O_ITER_1, typename
                         types::best_fast_iterator_nd<A2, I_SPECIALIZED>::type,
                         term, term>::exec(out, in, inner_dim_1, inner_dim_2);
        }
        else {
            loop_base_nd<2, F, A1, A2,
                         O_OPTIMAL_ACCESS, I_OPTIMAL_ACCESS,
                         t_false, number<I_SPECIALIZED - 1>,
                         O_ITER_1, term, term, term
                         >::exec(out, in, inner_dim_1, inner_dim_2);
        }
    }
コード例 #2
0
ファイル: geev_wvr.hpp プロジェクト: gilbert0571/nt2
 BOOST_FORCEINLINE result_type operator()( A0& a, A1& w, A2& vr) const
 {
   char jobvl = 'N';
   char jobvr = 'V';
   result_type info = 0;
   details::workspace<typename A0::value_type> wk;
   nt2_la_int n = nt2::width(a);
   BOOST_ASSERT_MSG(n == nt2_la_int(nt2::height(a)), "input must be square");
   nt2_la_int lda  = nt2::max(a.leading_size(), One<size_t>());
   nt2_la_int ldvl = n;
   nt2_la_int ldvr = vr.leading_size();
   NT2_F77NAME(cgeev) ( &jobvl, &jobvr
                      , &n
                      , 0 /*a*/, &lda
                      , 0 /*w*/
                      , 0 /*vl*/, &ldvl
                      , 0 /*vr*/, &ldvr
                      , wk.main(), details::query()
                      , wk.reals()
                      , &info);
  info = nt2::geev_wvr(a, w, vr, wk);
   return info;
  }