Re: [eigen] Coercion of matrices with mixed types ?

 Firstly, I want to thank everyone for their explanations.  Also, I wish to explain why this is an issue for me, and how I have solved it.  Referring to the same two types, double and OTHER_TYPE, the difference of the two scalars is also of type OTHER_TYPE.  This is a  type of some complexity, so it would be inefficient to cast a vector to be vector.  Instead, I have written my own  (very simple)   vector operator-(const  vector&, const vector& ) and this has resolved the issue for me (I also needed to augment some of the Eigen Traits, etc). Another aspect to this is that I do not want to include casting as a matter of course into my source code, for two reasons: -- The code is harder to read/write and resembles less the mathematics that it is implementing, and -- As a coding practice, explicit casting is frowned upon. I know very little about meta programming, so the solution I have outlined can probably be done in a better, or more efficient way, with guidelines from the Eigen experts. Thanks, again! To: eigen@xxxxxxxxxxxxxxxxxxx Subject: Re: [eigen] Coercion of matrices with mixed types ? From: Christoph Hertzberg Date: Mon, 06 Aug 2012 10:34:10 +0200 ```On 04.08.2012 16:52, Brad Bell wrote: ``` ```It appears that Eigen will not coerce matrices, even if the scalar type does. Is this a design decision or am I missing something ? ``` ```It's a design decision. ``` ```[...] int main(void) { typedef Eigen::Matrix< double, Eigen::Dynamic, 1 > d_vector; typedef Eigen::Matrix< OTHER_TYPE, Eigen::Dynamic, 1 > other_vector; size_t n = 10; other_vector u(n); d_vector v(n), w(n); [...] w = v - u; ``` ```You need to cast u to double here: w = v - u.cast(); Be aware that in some cases you need to write u.template cast(), not in this case, though. See here: http://eigen.tuxfamily.org/dox-devel/TopicTemplateKeyword.html Christoph -- ---------------------------------------------- Dipl.-Inf. Christoph Hertzberg Cartesium 0.049 Universität Bremen Enrique-Schmidt-Straße 5 28359 Bremen Tel: +49 (421) 218-64252 ---------------------------------------------- ```

 Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/