12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- namespace ceres::internal {
- Preconditioner::~Preconditioner() = default;
- PreconditionerType Preconditioner::PreconditionerForZeroEBlocks(
- PreconditionerType preconditioner_type) {
- if (preconditioner_type == SCHUR_JACOBI ||
- preconditioner_type == CLUSTER_JACOBI ||
- preconditioner_type == CLUSTER_TRIDIAGONAL) {
- return JACOBI;
- }
- return preconditioner_type;
- }
- SparseMatrixPreconditionerWrapper::SparseMatrixPreconditionerWrapper(
- const SparseMatrix* matrix, const Preconditioner::Options& options)
- : matrix_(matrix), options_(options) {
- CHECK(matrix != nullptr);
- }
- SparseMatrixPreconditionerWrapper::~SparseMatrixPreconditionerWrapper() =
- default;
- bool SparseMatrixPreconditionerWrapper::UpdateImpl(const SparseMatrix& ,
- const double* ) {
- return true;
- }
- void SparseMatrixPreconditionerWrapper::RightMultiplyAndAccumulate(
- const double* x, double* y) const {
- matrix_->RightMultiplyAndAccumulate(
- x, y, options_.context, options_.num_threads);
- }
- int SparseMatrixPreconditionerWrapper::num_rows() const {
- return matrix_->num_rows();
- }
- }
|