Benoît Jacob ([info]bjacob) wrote,
@ 2007-09-05 14:53:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Eigen2 restart from scratch
On saturday I decided that after all TVMET wasn't the appropriate starting point for Eigen2, so I restarted Eigen2 from scratch.

I started coding on Sunday, and today I made the initial commit to KDE's SVN in w /branches/work/eigen2.

I'm very happy about how things have been going since this restart. The basics are already there. Eigen2 already has matrices and vectors, both fixed-size and dynamic-size (reusing the CRTP trick from Eigen1), and of course expression templates (ETs). Non-square matrices are handled, and the ETs can be lvalues, not just rvalues.


(Post a new comment)

Greate !
(Anonymous)
2007-09-05 02:27 pm UTC (link)
Thanks for doing so valuable work !
One question: why do you use CapitalizedNames.h for headers: quite more commonly used variants are lowercasenames.h or CapitalizedNames (without .h).

(Reply to this)(Thread)

Re: Greate !
[info]bjacob
2007-09-05 02:40 pm UTC (link)
I didn't really think much about it so I don't know exactly _why_ I did it that way :)

The .h help editos detect it's C++ and enable C++ syntax highlighting. I know I had problems in KDevelop 3.4 when I created files without .h, syntax highlighting was turned off.

The CapitalizedNames are more readable IMO, especially for RowAndCol.

(Reply to this)(Parent)

Re: Greate !
(Anonymous)
2007-09-07 06:16 pm UTC (link)
The alllowercasenaming is just a thing from the past, where nobody really has a good reason for it.
So why not use readable filenames that match C++ class names better?

(Reply to this)(Parent)

Good work !
(Anonymous)
2007-09-05 02:33 pm UTC (link)
Looking forward to use your ET-powered library in my project ;-)

(Reply to this)(Thread)

Re: Good work !
[info]bjacob
2007-09-05 02:49 pm UTC (link)
Thanks :)

Here's a teaser: Eigen2 already allows you to do things like

matrix.xpr().row(i) = 2 * matrix.row(j) + otherMatrix.row(k) + someVector;

to operate directly on the rows and columns of matrices, without overhead, and with a minimal API (only two methods, row() and col()).

This is a case where expression templates are not only a speed improvement but also allow a whole new world of clean APIs.

(Reply to this)(Parent)

unit tests?
(Anonymous)
2007-09-07 06:18 pm UTC (link)
Just curious; as 'restart' sounds quite dangerous. And I don't want to see a version 2 that has loads of regressions from version 1.
So; do you have a big set of unit tests to see if the stuff that works in version 1 still works in version 2?

Cheers! Thomas.

(Reply to this)(Thread)

Re: unit tests?
[info]bjacob
2007-09-07 09:50 pm UTC (link)
Don't worry, Eigen 2 will have very extensive unit-tests just like Eigen 1 did. Actually I already started writing them, as you can see in the test/ directory.

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…