Re: [eigen] Operations involving constants |

[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]

On 22.10.2014 18:30, oz wrote:

So I'm working on my own little test class to learn expression
templates, etc. and have run into a bit of a snag.
I'd appreciate any help in understanding. I'm uncertain how to implement
the following kinds expressions:
2*array
array+1
It looks like Eigen somehow implements this in the Unary Operators,
which makes sense, but I can't figure it out.

ArrayBase<Derived>::operator*(Scalar) is defined in
Eigen/src/plugins/CommonCwiseUnaryOps.h
it returns a
CwiseUnaryOp<internal::scalar_mult_op<Scalar>, Derived> >.

`operator+(Scalar) is defined in ArrayCwiseBinaryOp (but still returns a
``CwiseUnaryOp object.
`

I tried encapsulating the constant into a Constant<T> class, and using
the BinaryOps like normal, but that gave me segfaults for some reason.
How would y'all suggest I approach this issue?

`See ArrayBase::max(Scalar) (also in ArrayCwiseBinaryOp.h) for an example
``how to implement a unary operation as a BinaryOp with a Constant.
`
Developer-question:

`Is there a reason why we implement operator+(Scalar) as CwiseUnaryOp,
``but max(Scalar) as CwiseBinaryOp?
`
Christoph
--
----------------------------------------------
Dipl.-Inf., Dipl.-Math. Christoph Hertzberg
Cartesium 0.049
Universität Bremen
Enrique-Schmidt-Straße 5
28359 Bremen
Tel: +49 (421) 218-64252
----------------------------------------------