Skip to content

Commit 1f4a941

Browse files
committed
Switched function to build structure of NE
1 parent 9197ab6 commit 1f4a941

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

highs/ipm/hipo/ipm/FactorHiGHSSolver.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,17 @@ Int FactorHiGHSSolver::buildNEstructureSparse(const HighsSparseMatrix& A,
181181
temp_index[nz_in_col] = row2;
182182
++nz_in_col;
183183
}
184+
185+
// the same if loop could be executed without branching:
186+
// (there does not seem to be a performance advantage)
187+
/*
188+
Int old_v = is_nz[row2];
189+
Int new_v = 1;
190+
Int diff_v = new_v - old_v;
191+
is_nz[row2] = true;
192+
temp_index[nz_in_col] = temp_index[nz_in_col] * old_v + diff_v * row2;
193+
nz_in_col += diff_v;
194+
*/
184195
}
185196
}
186197
// intersection of row with rows below finished.
@@ -410,6 +421,8 @@ Int FactorHiGHSSolver::analyseAS(Symbolic& S) {
410421
// Perform analyse phase of augmented system and return symbolic factorisation
411422
// in object S and the status.
412423

424+
log_.printDevInfo("Building AS structure\n");
425+
413426
Clock clock;
414427
std::vector<Int> ptrLower, rowsLower;
415428
if (Int status = getASstructure(model_.A(), ptrLower, rowsLower))
@@ -443,7 +456,7 @@ Int FactorHiGHSSolver::analyseNE(Symbolic& S, int64_t nz_limit) {
443456
log_.printDevInfo("Building NE structure\n");
444457

445458
Clock clock;
446-
if (Int status = buildNEstructureDense(model_.A(), nz_limit)) return status;
459+
if (Int status = buildNEstructureSparse(model_.A(), nz_limit)) return status;
447460
if (info_) info_->matrix_structure_time = clock.stop();
448461

449462
// create vector of signs of pivots

0 commit comments

Comments
 (0)