Todo for 3.0
From Eigen
This Todo is to keep track of the things that must be done for Eigen 3.0. There is a separate Todo for long-term and generalist Todo items. There is also a separate Release schedule for 3.0.
Note that this is a sortable table, so try to make it sort nicely. For the "status" column, let's use this convention:
Grade | Meaning |
---|---|
0 | nothing started |
1 | some discussion happened |
2 | some development started |
3 | mostly feature-complete |
4 | feature-complete and mostly stable API |
5 | complete, tested, and stable API |
For the "owner" 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
Topic | Task | Who | Status |
---|---|---|---|
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 |
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 |
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 |
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 |
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 | |
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" | |
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. | 0 |