15 namespace alps {
namespace alea {
namespace internal {
16 template <
typename Str,
typename Arg1,
typename Arg2>
class outer_expr;
21 namespace alps {
namespace alea {
namespace internal {
30 template <
class Str,
typename Arg1,
typename Arg2>
32 const Eigen::MatrixBase<Arg2> &arg2)
38 template <
typename Str,
typename Arg1,
typename Arg2>
40 :
public Eigen::MatrixBase< outer_expr<Str, Arg1, Arg2> >
43 typedef typename Eigen::internal::ref_selector<outer_expr>::type
Nested;
45 typedef typename Eigen::internal::ref_selector<Arg1>::type
Arg1Nested;
46 typedef typename Eigen::internal::ref_selector<Arg2>::type
Arg2Nested;
49 : arg1_(arg1), arg2_(arg2)
51 EIGEN_STATIC_ASSERT(Arg1::ColsAtCompileTime == 1,
52 YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX);
53 EIGEN_STATIC_ASSERT(Arg2::ColsAtCompileTime == 1,
54 YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX);
56 Index
rows()
const {
return arg1_.rows(); }
57 Index
cols()
const {
return arg2_.rows(); }
65 namespace Eigen {
namespace internal {
69 template <
typename Str,
typename Arg1,
typename Arg2>
75 typedef typename Str::cov_type
Scalar;
79 Flags = Eigen::ColMajor,
80 RowsAtCompileTime = Arg1::RowsAtCompileTime,
81 ColsAtCompileTime = Arg2::RowsAtCompileTime,
82 MaxRowsAtCompileTime = Arg1::MaxRowsAtCompileTime,
83 MaxColsAtCompileTime = Arg2::MaxRowsAtCompileTime
87 template <
typename Str,
typename Arg1,
typename Arg2>
89 : evaluator_base<outer_expr<Str, Arg1, Arg2> >
96 typedef typename nested_eval<Arg1, XprType::ColsAtCompileTime>::type
Arg1Nested;
97 typedef typename nested_eval<Arg2, XprType::ColsAtCompileTime>::type
Arg2Nested;
103 CoeffReadCost = evaluator<Arg1NestedCleaned>::CoeffReadCost,
104 Flags = Eigen::ColMajor
108 : arg1_impl_(xpr.arg1_)
109 , arg2_impl_(xpr.arg2_)
114 CoeffReturnType
coeff(Index i, Index j)
const 116 assert(i >= 0 && i < rows_);
117 assert(j >= 0 && j < cols_);
118 return Str::outer(arg1_impl_.coeff(i), arg2_impl_.coeff(j));
122 evaluator<Arg1NestedCleaned> arg1_impl_;
123 evaluator<Arg2NestedCleaned> arg2_impl_;
124 const Index rows_, cols_;
outer_expr< Str, Arg1, Arg2 > outer(const Eigen::MatrixBase< Arg1 > &arg1, const Eigen::MatrixBase< Arg2 > &arg2)
evaluator(const XprType &xpr)
remove_all< Arg1Nested >::type Arg1NestedCleaned
outer_expr(const Arg1 &arg1, const Arg2 &arg2)
remove_all< Arg2Nested >::type Arg2NestedCleaned
XprType::CoeffReturnType CoeffReturnType
Eigen::internal::ref_selector< outer_expr >::type Nested
Eigen::internal::ref_selector< Arg2 >::type Arg2Nested
nested_eval< Arg1, XprType::ColsAtCompileTime >::type Arg1Nested
Str::cov_type CoeffReturnType
Eigen::internal::ref_selector< Arg1 >::type Arg1Nested
nested_eval< Arg2, XprType::ColsAtCompileTime >::type Arg2Nested
CoeffReturnType coeff(Index i, Index j) const
outer_expr< Str, Arg1, Arg2 > XprType
Arg1::StorageIndex StorageIndex