Add a general sparse iterative solver: CGNR

This adds a new LinearOperator which implements symmetric
products of a matrix, and a new CGNR solver to leverage
CG to directly solve the normal equations. This also
includes a block diagonal preconditioner. In experiments
on problem-16, the non-preconditioned version is about
1/5 the speed of SPARSE_SCHUR, and the preconditioned
version using block cholesky is about 20% slower than
SPARSE_SCHUR.
13 files changed
tree: 27743595ecfa8990efb19ea5212c214b65d08e85
  1. data/
  2. docs/
  3. examples/
  4. include/
  5. internal/
  6. .gitignore
  7. CMakeLists.txt
  8. LICENSE
  9. README