@@ -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