Lines Matching defs:dual
1680 /// Compute max(dotProduct(dir, x - y)) and save the dual variables for only
1681 /// the direction equalities to `dual`.
1683 SmallVectorImpl<DynamicAPInt> &dual,
1698 dual.clear();
1699 dual.reserve((conIndex - simplexConstraintOffset) / 2);
1704 // The dual variable for an inequality in column orientation is the
1706 // in row orientation, the corresponding dual variable is zero.
1708 // We want the dual for the original equality, which corresponds to two
1715 // position, its dual is the dual corresponding to the equality. If the
1716 // negative inequality is in column position, the negation of its dual is
1717 // the dual corresponding to the equality. If neither is in column
1718 // position, then that means that this equality is redundant, and its dual
1722 // the duals. This entire dual computation must be performed on the same
1729 dual.emplace_back(-simplex.tableau(row, simplex.con[i].pos));
1731 dual.emplace_back(simplex.tableau(row, simplex.con[i + 1].pos));
1733 dual.emplace_back(0);
1786 /// be the dual variable associated with the constraint <b_i, x - y> = 0 when
1836 SmallVector<DynamicAPInt, 8> dual;
1858 assert(i < level + dual.size() && "dual_i is not known!");
1860 DynamicAPInt u = floorDiv(dual[i - level], dualDenom);
1862 if (dual[i - level] % dualDenom != 0) {
1867 // Initially u is floor(dual) and basis reflects this.
1871 // Now try ceil(dual), i.e. floor(dual) + 1.
1879 // Subtract 1 to go from u = ceil(dual) back to floor(dual).
1900 dual = std::move(candidateDual[j]);
1906 // f_i(b_{i+1} + dual*b_i) == width_{i+1}(b_{i+1}) when `dual` minimizes the
1907 // LHS. (note: the basis has already been updated, so b_{i+1} + dual*b_i in
1931 gbrSimplex.computeWidthAndDuals(basis.getRow(i), dual, dualDenom));
1934 if (i >= level + dual.size()) {
1937 // We don't know dual for our level, so let's find it.
1940 dual, dualDenom));
1953 dual.clear();
1963 dual.clear();