Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h')
-rw-r--r--extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h181
1 files changed, 0 insertions, 181 deletions
diff --git a/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h b/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h
deleted file mode 100644
index a0ba7eeb6ce..00000000000
--- a/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h
+++ /dev/null
@@ -1,181 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2010, 2011, 2012 Google Inc. All rights reserved.
-// http://code.google.com/p/ceres-solver/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-// used to endorse or promote products derived from this software without
-// specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: sameeragarwal@google.com (Sameer Agarwal)
-
-#ifndef CERES_INTERNAL_COMPRESSED_ROW_SPARSE_MATRIX_H_
-#define CERES_INTERNAL_COMPRESSED_ROW_SPARSE_MATRIX_H_
-
-#include <vector>
-#include "ceres/internal/macros.h"
-#include "ceres/internal/port.h"
-#include "ceres/sparse_matrix.h"
-#include "ceres/types.h"
-#include "glog/logging.h"
-
-namespace ceres {
-
-struct CRSMatrix;
-
-namespace internal {
-
-class TripletSparseMatrix;
-
-class CompressedRowSparseMatrix : public SparseMatrix {
- public:
- // Build a matrix with the same content as the TripletSparseMatrix
- // m. TripletSparseMatrix objects are easier to construct
- // incrementally, so we use them to initialize SparseMatrix
- // objects.
- //
- // We assume that m does not have any repeated entries.
- explicit CompressedRowSparseMatrix(const TripletSparseMatrix& m);
-
- // Use this constructor only if you know what you are doing. This
- // creates a "blank" matrix with the appropriate amount of memory
- // allocated. However, the object itself is in an inconsistent state
- // as the rows and cols matrices do not match the values of
- // num_rows, num_cols and max_num_nonzeros.
- //
- // The use case for this constructor is that when the user knows the
- // size of the matrix to begin with and wants to update the layout
- // manually, instead of going via the indirect route of first
- // constructing a TripletSparseMatrix, which leads to more than
- // double the peak memory usage.
- CompressedRowSparseMatrix(int num_rows,
- int num_cols,
- int max_num_nonzeros);
-
- // Build a square sparse diagonal matrix with num_rows rows and
- // columns. The diagonal m(i,i) = diagonal(i);
- CompressedRowSparseMatrix(const double* diagonal, int num_rows);
-
- virtual ~CompressedRowSparseMatrix();
-
- // SparseMatrix interface.
- virtual void SetZero();
- virtual void RightMultiply(const double* x, double* y) const;
- virtual void LeftMultiply(const double* x, double* y) const;
- virtual void SquaredColumnNorm(double* x) const;
- virtual void ScaleColumns(const double* scale);
-
- virtual void ToDenseMatrix(Matrix* dense_matrix) const;
- virtual void ToTextFile(FILE* file) const;
- virtual int num_rows() const { return num_rows_; }
- virtual int num_cols() const { return num_cols_; }
- virtual int num_nonzeros() const { return rows_[num_rows_]; }
- virtual const double* values() const { return &values_[0]; }
- virtual double* mutable_values() { return &values_[0]; }
-
- // Delete the bottom delta_rows.
- // num_rows -= delta_rows
- void DeleteRows(int delta_rows);
-
- // Append the contents of m to the bottom of this matrix. m must
- // have the same number of columns as this matrix.
- void AppendRows(const CompressedRowSparseMatrix& m);
-
- void ToCRSMatrix(CRSMatrix* matrix) const;
-
- // Low level access methods that expose the structure of the matrix.
- const int* cols() const { return &cols_[0]; }
- int* mutable_cols() { return &cols_[0]; }
-
- const int* rows() const { return &rows_[0]; }
- int* mutable_rows() { return &rows_[0]; }
-
- const vector<int>& row_blocks() const { return row_blocks_; }
- vector<int>* mutable_row_blocks() { return &row_blocks_; }
-
- const vector<int>& col_blocks() const { return col_blocks_; }
- vector<int>* mutable_col_blocks() { return &col_blocks_; }
-
- // Destructive array resizing method.
- void SetMaxNumNonZeros(int num_nonzeros);
-
- // Non-destructive array resizing method.
- void set_num_rows(const int num_rows) { num_rows_ = num_rows; }
- void set_num_cols(const int num_cols) { num_cols_ = num_cols; }
-
- void SolveLowerTriangularInPlace(double* solution) const;
- void SolveLowerTriangularTransposeInPlace(double* solution) const;
-
- CompressedRowSparseMatrix* Transpose() const;
-
- static CompressedRowSparseMatrix* CreateBlockDiagonalMatrix(
- const double* diagonal,
- const vector<int>& blocks);
-
- // Compute the sparsity structure of the product m.transpose() * m
- // and create a CompressedRowSparseMatrix corresponding to it.
- //
- // Also compute a "program" vector, which for every term in the
- // outer product points to the entry in the values array of the
- // result matrix where it should be accumulated.
- //
- // This program is used by the ComputeOuterProduct function below to
- // compute the outer product.
- //
- // Since the entries of the program are the same for rows with the
- // same sparsity structure, the program only stores the result for
- // one row per row block. The ComputeOuterProduct function reuses
- // this information for each row in the row block.
- static CompressedRowSparseMatrix* CreateOuterProductMatrixAndProgram(
- const CompressedRowSparseMatrix& m,
- vector<int>* program);
-
- // Compute the values array for the expression m.transpose() * m,
- // where the matrix used to store the result and a program have been
- // created using the CreateOuterProductMatrixAndProgram function
- // above.
- static void ComputeOuterProduct(const CompressedRowSparseMatrix& m,
- const vector<int>& program,
- CompressedRowSparseMatrix* result);
-
- private:
- int num_rows_;
- int num_cols_;
- vector<int> rows_;
- vector<int> cols_;
- vector<double> values_;
-
- // If the matrix has an underlying block structure, then it can also
- // carry with it row and column block sizes. This is auxilliary and
- // optional information for use by algorithms operating on the
- // matrix. The class itself does not make use of this information in
- // any way.
- vector<int> row_blocks_;
- vector<int> col_blocks_;
-
- CERES_DISALLOW_COPY_AND_ASSIGN(CompressedRowSparseMatrix);
-};
-
-} // namespace internal
-} // namespace ceres
-
-#endif // CERES_INTERNAL_COMPRESSED_ROW_SPARSE_MATRIX_H_