14template <
class A,
class Func>
15class Exp_Functor :
public ExprSparseG<Exp_Functor<A, Func> > {
20 : a_(a), functor_(functor) {}
22 inline double getValue(
int i,
const IndexDimension &I)
const {
23 return functor_->evaluate(a_.getValue(i, I));
27 ExpressionDescription getDescription()
const {
return a_.getDescription(); }
30template<
class A,
class B,
class Func>
31class Atan2_Functor :
public ExprSparseG<Atan2_Functor<A, B, Func> > {
36 inline Atan2_Functor(
const A &a,
const B &b, Func *functor)
37 : a_(a), b_(b), functor_(functor) {}
39 inline double getValue(
int i,
const IndexDimension &I)
const {
40 return functor_->evaluate(a_.getValue(i, I), b_.getValue(i, I));
46 ExpressionDescription getDescription()
const {
return a_.getDescription(); }
61 Functor(Func &functor) : functor_(&functor) {};
65 operator()(
const ExprSparseG<A> &a)
const {
69 template<
class A,
class B>
70 inline Atan2_Functor<A, B, Func>
71 operator()(
const ExprSparseG<A> &a,
const ExprSparseG<B> &b)
const {
72 return Atan2_Functor<A, B, Func>(a, b, functor_);