123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #ifndef CERES_INTERNAL_SPARSE_MATRIX_H_
- #define CERES_INTERNAL_SPARSE_MATRIX_H_
- #include <cstdio>
- #include "ceres/internal/eigen.h"
- #include "ceres/internal/export.h"
- #include "ceres/linear_operator.h"
- #include "ceres/types.h"
- namespace ceres::internal {
- class ContextImpl;
- class CERES_NO_EXPORT SparseMatrix : public LinearOperator {
- public:
- ~SparseMatrix() override;
-
- using LinearOperator::RightMultiplyAndAccumulate;
- void RightMultiplyAndAccumulate(const double* x,
- double* y) const override = 0;
-
- void LeftMultiplyAndAccumulate(const double* x, double* y) const override = 0;
-
- virtual void SquaredColumnNorm(double* x) const = 0;
- virtual void SquaredColumnNorm(double* x,
- ContextImpl* context,
- int num_threads) const;
-
- virtual void ScaleColumns(const double* scale) = 0;
- virtual void ScaleColumns(const double* scale,
- ContextImpl* context,
- int num_threads);
-
-
- virtual void SetZero() = 0;
- virtual void SetZero(ContextImpl* , int ) {
- SetZero();
- }
-
-
- virtual void ToDenseMatrix(Matrix* dense_matrix) const = 0;
-
-
-
- virtual void ToTextFile(FILE* file) const = 0;
-
-
-
-
- virtual double* mutable_values() = 0;
- virtual const double* values() const = 0;
- int num_rows() const override = 0;
- int num_cols() const override = 0;
- virtual int num_nonzeros() const = 0;
- };
- }
- #endif
|