/// <summary> /// Do a pivot. Move entryVar into the basis and move exitVar /// out of the basis. /// </summary> /// <remarks> /// We could for example make entryVar a basic variable and /// make exitVar a parametric variable. /// </remarks> protected void Pivot(ClAbstractVariable entryVar, ClAbstractVariable exitVar) /* throws ExClInternalError */ { // the entryVar might be non-pivotable if we're doing a // RemoveConstraint -- otherwise it should be a pivotable // variable -- enforced at call sites, hopefully ClLinearExpression pexpr = RemoveRow(exitVar); pexpr.ChangeSubject(exitVar, entryVar); SubstituteOut(entryVar, pexpr); AddRow(entryVar, pexpr); }