So, you agree then that, numerical performance of Eigen sucks for large matrices.
Not explicitly, since I've not benchmarked it or read any benchmarks but I'm prepared to believe it. I know that BLAS people put a lot of effort into all sorts of cunning blocking stuff.
For small, fixed size matrices it likely is no better than Fortran either.
Depends on how much hand-coding you're prepared to do. C++ has the advantage that you can bake the type into the type, which aids the compiler.
Syntactically, Eigen is pretty lousy as well: you can write some array expressions, but defining functions on matrices is messy, and slicing and similar operations also are restrictive.
I agree there, which is why I don't use Eigen. I'm holding it up since it's for some reason the most popular library, rather then the best.
and parallelization support in it is close to non-existent.
I don't really care much for parallelisation at that level. For my stuff, large matrices are donw with LAPACK which seems to have it and large amounts of small matrices are solved with a #pragma parallel for
Fortran these days has built in matrices that automatically use the best possible BLAS/LAPACK backends.
Maybe, but a BLAS backend is never going to do anything but a wretchedly slow job on a 2x2, 3x3 or 4x4 matrix :) If you have a few billion of them, then the performance matters.
Anyway, we were talking about the comparison to C, not FORTRAN originally. I don't know all that much about FORTRAN except that C++ does seem more expressive for the bits which aren't purely numerical.
Large parts of the numerical and high performance computing community never touch C++ at all. C++ is mostly popular in computer vision, embedded systems, and some areas of machine learning
It seems pretty popular with the supercomputer folks for new codes. But yes, it is popular for computer vision. I can't imagine something like PTAM being written in anything other then C++. Not only do you need high performance numerics, you need high performance book-keeping and other bits and bobs as well. C++ is the only one that gives you the good performance and expressivity across the board.
Anyway, when it comes to array-banging as opposed to linear algebra, I rather prefer using explicit for-loops to array notation. I can do the array notation---I've spent enough time with MATLAB---but I find it clumsy and one often has to work rather hard to solve the problems compared to a for loop. That's personal preference.