| 529 | } |
| 530 | |
| 531 | void HEkkDualRow::updateFlip(HVector* bfrtColumn) { |
| 532 | double* workDual = ekk_instance_.info_.workDual_.data(); |
| 533 | double dual_objective_value_change = 0; |
| 534 | bfrtColumn->clear(); |
| 535 | for (HighsInt i = 0; i < workCount; i++) { |
| 536 | const HighsInt iCol = workData[i].first; |
| 537 | const double change = workData[i].second; |
| 538 | double local_dual_objective_change = change * workDual[iCol]; |
| 539 | local_dual_objective_change *= ekk_instance_.cost_scale_; |
| 540 | dual_objective_value_change += local_dual_objective_change; |
| 541 | ekk_instance_.flipBound(iCol); |
| 542 | ekk_instance_.lp_.a_matrix_.collectAj(*bfrtColumn, iCol, change); |
| 543 | } |
| 544 | ekk_instance_.info_.updated_dual_objective_value += |
| 545 | dual_objective_value_change; |
| 546 | } |
| 547 | |
| 548 | void HEkkDualRow::updateDual(double theta) { |
| 549 | analysis->simplexTimerStart(UpdateDualClock); |
no test coverage detected