Difference between revisions of "Todo for 3.0"
|Line 46:||Line 46:|
For the "
For the "" column, put whoever started working on it or is planning to, multiple persons possible, don't hesitate to add yourself as more help is always welcome!
== Must-have for Eigen 3.0 ==
== Must-have for Eigen 3.0 ==
Revision as of 03:47, 10 November 2009
Note that this is a sortable table, so try to make it sort nicely. For the "status" column, let's use this convention:
|1||some discussion happened|
|2||some development started|
|4||feature-complete and mostly stable API|
|5||complete, tested, and stable API|
For the "nice" column, let's use this convention:
|0||Required for 3.0-beta1|
|1||Required for 3.0|
|2||Very important feature, but should not block 3.0|
|3||Can I have a pony, too?|
For the "who" column, put whoever started working on it or is planning to, multiple persons possible, don't hesitate to add yourself as more help is always welcome!
Must-have for Eigen 3.0
|Core - xpr trees||Investigate making nest-by-value the default for expressions and killing NestByValue. Thoroughly test the impact on performance.||Hauke||2 - Hauke started it||0|
|Decompositions - rank API||Do in the QR module (ColPiv and FullPiv), in the SVD module, and in the self-adjoint eigensolver, the same rank-determining API as in FullPivLU. That involves making rank(), isInvertible() etc... methods, using a threshold controlled by a setThreshold method. That also involves adding kernel/image methods.||Benoit||1 - some threads||0|
|Decompositions - kernel for given dimension||In all rank-revealing decompositions, it would be nice to have a function to construct the kernel matrix for a prescribed dimension of the kernel. At the very least for SVD decompositions, where this would just be taking the n singular vectors associated to the n smallest singular values. In real-world use cases, this is the most useful way to get the kernel. The same idea should then be applied to image() for good measure.||Benoit||1 - discussed with Keir||1|
|Binary library: BLAS||Implement a BLAS library using Eigen. Useful both in itself, and as a prerequisite for other Todo items (ultimately for using the LAPACK test-suite).||Gael||2 - see blas/ directory||1|
|Binary library: LAPACK||Implement a LAPACK library using Eigen. Useful both in itself, and as a prerequisite for the Todo item about using the LAPACK test-suite.||1 - some threads||2|
|Tests : original LAPACK testsuite||The idea is that once we have a LAPACK library implemented using Eigen, we should be able to run the original LAPACK testsuite directly against it.||1 - thread "back from google"||2 - however we need precision testing anyhow for 3.0-beta1|
|Tests : precision-oriented tests||Most of our current tests only check for rough sanity of the result, we need precision-oriented tests too. Since it's impossible to predict what the precision of a computation should be in general, one should manually record precision at a time when the algorithm is known to be sane, and make that the benchmark to check against, to prevent future regressions. Another approach is to compare precision to other existing libraries, but then, probably only some LAPACK libs are reliable enough for that. Also notice that if the "LAPACK test suite" todo item is achieved, it will already guarantee precision quite nicely, making this todo item less of an emergency.||0||0 - and 2 if the "lapack test suite" item is done|