14#ifndef ORTOOLS_GLOP_UPDATE_ROW_H_
15#define ORTOOLS_GLOP_UPDATE_ROW_H_
21#include "absl/types/span.h"
77 return update_row_computed_for_ == leaving_row;
99 std::string
StatString()
const {
return stats_.StatString(); }
107 const std::string& algorithm);
121 void ComputeUpdatesRowWise();
122 void ComputeUpdatesRowWiseHypersparse();
123 void ComputeUpdatesColumnWise();
124 void ComputeUpdatesForSingleRow(ColIndex row_as_col);
138 std::vector<ColIndex> unit_row_left_inverse_filtered_non_zeros_;
142 int num_non_zeros_ = 0;
155 unit_row_left_inverse_density(
"unit_row_left_inverse_density", this),
156 unit_row_left_inverse_accuracy(
"unit_row_left_inverse_accuracy",
158 update_row_density(
"update_row_density", this) {}
166 int64_t num_operations_;
169 GlopParameters parameters_;
const DenseRow & GetCoefficients() const
const ScatteredRow & ComputeAndGetUnitRowLeftInverse(RowIndex leaving_row)
void SetParameters(const GlopParameters ¶meters)
void ComputeFullUpdateRow(RowIndex leaving_row, DenseRow *output) const
std::string StatString() const
const ScatteredRow & GetUnitRowLeftInverse() const
void ComputeUnitRowLeftInverse(RowIndex leaving_row)
void ComputeUpdateRow(RowIndex leaving_row)
UpdateRow(const UpdateRow &)=delete
UpdateRow & operator=(const UpdateRow &)=delete
bool IsComputedFor(RowIndex leaving_row) const
double DeterministicTime() const
Fractional GetCoefficient(ColIndex col) const
UpdateRow(const CompactSparseMatrix &matrix, const CompactSparseMatrix &transposed_matrix, const VariablesInfo &variables_info, const RowToColMapping &basis, const BasisFactorization &basis_factorization)
void ComputeUpdateRowForBenchmark(const DenseRow &lhs, const std::string &algorithm)
absl::Span< const ColIndex > GetNonZeroPositions() const
StrictITIVector< RowIndex, ColIndex > RowToColMapping
std::vector< ColIndex > ColIndexVector
Bitset64< ColIndex > DenseBitRow
constexpr RowIndex kInvalidRow(-1)
StrictITIVector< ColIndex, Fractional > DenseRow
static double DeterministicTimeForFpOperations(int64_t n)