23 template <
typename SparseColumnLike>
27 sum +=
Square(e.coefficient());
33 return SquaredNormTemplate<SparseColumn>(v);
37 return SquaredNormTemplate<ColumnView>(v);
73 const size_t num_blocks =
column.size().value() / 4;
74 for (
size_t i = 0; i < num_blocks; ++i) {
97 infinity_norm =
std::max(infinity_norm, fabs(v[
row]));
102 template <
typename SparseColumnLike>
106 infinity_norm =
std::max(infinity_norm, fabs(e.coefficient()));
108 return infinity_norm;
112 return InfinityNormTemplate<SparseColumn>(v);
116 return InfinityNormTemplate<ColumnView>(v);
120 if (
row.empty())
return 0.0;
125 return static_cast<double>(sum) /
row.size().value();
131 if (fabs((*
row)[
col]) < threshold) {
148 RowIndex* row_index) {
151 if (rows_to_consider[e.row()] && fabs(e.coefficient()) > infinity_norm) {
152 infinity_norm = fabs(e.coefficient());
153 *row_index = e.row();
156 return infinity_norm;
161 if (e.coefficient() != 0.0) {
162 (*b)[e.row()] =
false;
169 DCHECK_GE(radius[e.row()], 0.0);
170 if (fabs(e.coefficient()) > radius[e.row()])
return false;
void Add(const FpNumber &value)
typename Iterator::Entry Entry
Fractional Square(Fractional f)
Fractional PreciseSquaredNorm(const SparseColumn &v)
Fractional InfinityNorm(const DenseColumn &v)
Fractional SquaredNorm(const SparseColumn &v)
void RemoveNearZeroEntries(Fractional threshold, DenseRow *row)
Fractional InfinityNormTemplate(const SparseColumnLike &column)
double Density(const DenseRow &row)
void SetSupportToFalse(const ColumnView &column, DenseBooleanColumn *b)
Fractional SquaredNormTemplate(const SparseColumnLike &column)
bool IsDominated(const ColumnView &column, const DenseColumn &radius)
Fractional RestrictedInfinityNorm(const ColumnView &column, const DenseBooleanColumn &rows_to_consider, RowIndex *row_index)
Collection of objects used to extend the Constraint Solver library.
bool ShouldUseDenseIteration(double ratio_for_using_dense_representation) const
std::vector< Index > non_zeros
StrictITIVector< Index, Fractional > values