[eigen] Re: Eigen 2 design

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


On Thursday 26 April 2007 00:13:42 Schleimer, Ben wrote:
> Sounds great. Are you going to have different sized matrices/vectors
> (2,3,4) or use expression templates and have just one matrix and one vector
> class. Check out the TinyVector class if you're going for the second
> option. If might help you...

My plan for eigen-basic was to do something like
template<typename T, int height, int width> class Matrix;
and then have typedefs like
typedef Matrix<double, 4, 4> Matrix4d;
I hadn't considered expression templates because they scared me (both from the 
programmer's and the compiler's point of view) but since you mention 
TinyVector I'll have a look at it and might change my mind.
It's true that in eigen-basic, expression templates are the only way to 
achieve fast arithmetic operators, since copy-on-write is not an option there 
(there must be no dynamic memory allocation in eigen-basic). Without 
expression templates, we'd have to do as in Eigen1, namely make it clear in 
the documentation that the arithmetic operators are slow and provide 
alternative C-style methods doing the same thing faster (like multiply() vs. 
operator*).

> > Eigen-gmm can't reuse GMM by inheritance, if only because we want to
> > implement copy-on-write.
>
> Perhapse, the eigen-gmm matrix needs to have-a gmm matrix and internal
> copy-on-write checking...

I have yet to look at how copy-on-write is implemented, but yes, I was 
thinking that the gmm matrix would be a member data of the eigen-gmm matrix. 
(Here take the words "member data" in a loose sense -- I guess a 
d-pointer-like mechanism is needed for copy-on-write).

>
> > Thus there's a lot of work to do here, and help is welcome :)
>
> Ask and we will come if there is time. Which there is too little of right
> now. :(

Busy with KOffice? Go on then and good luck :)

Cheers,
Benoit

Attachment: pgp0JfVyk23p6.pgp
Description: PGP signature



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