10 #ifndef EIGEN_PARTIALREDUX_H
11 #define EIGEN_PARTIALREDUX_H
42 template<
typename Func,
typename Evaluator>
46 OuterSize =
int(Evaluator::IsRowMajor) ? Evaluator::RowsAtCompileTime : Evaluator::ColsAtCompileTime,
55 template<
typename PacketType,
typename Func>
60 template<
typename PacketType,
typename Scalar>
65 template<
typename Func,
typename Evaluator,
66 int Unrolling = packetwise_redux_traits<Func, Evaluator>::Unrolling
71 template<
typename Func,
typename Evaluator>
77 template<
typename PacketType>
89 template<
typename Func,
typename Evaluator,
int Start>
92 template<
typename PacketType>
96 return packetwise_redux_empty_value<PacketType>(
f);
101 template<
typename Func,
typename Evaluator>
107 template<
typename PacketType>
112 return packetwise_redux_empty_value<PacketType>(
func);
115 PacketType p =
eval.template packetByOuterInner<Unaligned,PacketType>(0,0);
123 func.packetOp(
eval.template packetByOuterInner<Unaligned,PacketType>(
i+0,0),
eval.template packetByOuterInner<Unaligned,PacketType>(
i+1,0)),
124 func.packetOp(
eval.template packetByOuterInner<Unaligned,PacketType>(
i+2,0),
eval.template packetByOuterInner<Unaligned,PacketType>(
i+3,0))));
126 p =
func.packetOp(
p,
eval.template packetByOuterInner<Unaligned,PacketType>(
i,0));
131 template<
typename ArgType,
typename MemberOp,
int Direction>
142 TraversalSize = Direction==
int(
Vertical) ?
int(ArgType::RowsAtCompileTime) :
int(ArgType::ColsAtCompileTime)
147 : TraversalSize==0 ? 1
153 && bool(MemberOp::Vectorizable)
155 && (TraversalSize!=0),
166 : m_arg(xpr.nestedExpression()), m_functor(xpr.functor())
186 template<
int LoadMode,
typename PacketType>
190 return packet<LoadMode,PacketType>(Direction==
Vertical ?
j :
i);
193 template<
int LoadMode,
typename PacketType>
199 Direction==
Vertical ?
int(ArgType::RowsAtCompileTime) :
int(PacketSize),
200 Direction==
Vertical ?
int(PacketSize) :
int(ArgType::ColsAtCompileTime),
203 PanelType panel(m_arg,
214 return internal::pset1<PacketType>(coeff(idx));
217 PanelEvaluator panel_eval(panel);
218 typedef typename MemberOp::BinaryOp BinaryOp;
232 #endif // EIGEN_PARTIALREDUX_H