Re: [eigen] On lazy evaluation and temporary matrices

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


Hi Thomas,

Thanks, I added the EIGEN_ALIGN16 macro to all the number arrays, it
definitively makes sense... but it behaves exactly the same :-(

Best,
JL

PS: And yes, it's beta3*, actually an hg checkout from a few days ago...

On Thu, Nov 25, 2010 at 2:22 AM, Thomas Capricelli
<orzel@xxxxxxxxxxxxxxx> wrote:
> It looks like an alignement problem. You should ensure "numbers" is aligned,
> see bottom of http://eigen.tuxfamily.org/dox-devel/
>
> (I assume you use the devel branch.. 3.0beta*)
>
> regards,
>
> --
>
> Thomas Capricelli <orzel@xxxxxxxxxxxxxxx>
>
> http://www.freehackers.org/thomas
>
> On Thursday 25 November 2010 02:01:48 Jose Luis Blanco wrote:
>
>> Hi guys,
>
>>
>
>> I need the help of someone knowing the inner workings of Eigen. I've
>
>> spent a few days stuck debugging an error in some silly computations
>
>> with Eigen matrices, and want to rule out potential errors...
>
>> Consider this code:
>
>>
>
>> ======================
>
>> void func( Matrix<...> &m_out )
>
>> {
>
>> Matrix<...> I = ....
>
>> const double numbers[] = { 1.0, x(), -y()*x() , whatever, .... };
>
>> m_out = I * Matrix<...>(numbers);
>
>> }
>
>>
>
>> int main()
>
>> {
>
>> Matrix<...> M;
>
>> func(M);
>
>> cout << M << endl;
>
>> }
>
>> ======================
>
>>
>
>> Is it a problem for the temporary object "Matrix<...>(numbers)" to be
>
>> created with a pointer to memory on the stack, while the evaluation of
>
>> the object for the matrix product is actually evaluated *out* of that
>
>> function (where obviously that pointer is invalid)??
>
>>
>
>> I ask because I'm having a very erratic behavior in code like above
>
>> (on GCC doesn't work, it does on MSVC; adding a "cout << ..." for an
>
>> unrelated matrix changes the result, etc...).
>
>> Is it necessary to use instead:
>
>>
>
>> ( I * Matrix<...>(numbers) ).eval();
>
>>
>
>> or not even with this .eval() is my code correct?
>
>> I'm still having random wrong matrix elements with and without eval(),
>
>> so I wanted to be sure on this part before keep on debugging...
>
>>
>
>> Thanks for your time!
>
>> JL
>
>>
>
>>
>
>>



-- 
___________________________________________________________

Dr. Jose-Luis Blanco-Claraco
Dpt. Ing. Civil, Mat. y Fabric - Phone: +34 952 152435
E.T.S.I. Industriales - Despacho 2.037
Dpt. Ing. Sist. y Automática  - Phone: +34 952 132848
E.T.S.I. Telecomunicacion - Lab. 2.3.6
Universidad de Malaga - Campus Universitario de Teatinos
29071 Malaga, Spain
http://www.isa.uma.es/jlblanco
http://www.mrpt.org/
___________________________________________________________



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