Skip to main content

eliminate

Function eliminate 

Source
pub fn eliminate(rows: Vec<Vec<Scalar>>, n: usize) -> Elimination
Expand description

Gauss-Jordan elimination of rows (each over n variables) with complete pivoting: each pivot the entry of largest magnitude among the rows and the columns not used yet — a free choice among those that cannot be zero; elimination stops when every candidate could be zero. Which constraints are independent and which variables they determine is decided from the rows’ own enclosures; where it matters for correctness, crate::solvers::system’s enclosure verifies what it is used for.

Complete, not column by column: going column by column takes the first column with any entry that cannot be zero, and rounding leaves entries of 1e-16 that cannot. Such a pivot determines a variable the constraints barely touch, in place of one they do — a half circle tangent to two parallel sides was left with its sweep free and two tangencies over the same coordinate, and could not be enclosed.