with Standard_Floating_Numbers; use Standard_Floating_Numbers; with Standard_Integer_Vectors; use Standard_Integer_Vectors; with Standard_Floating_Vectors; use Standard_Floating_Vectors; with Standard_Floating_Matrices; use Standard_Floating_Matrices; package Floating_Linear_Inequalities is -- DESCRIPTION : -- This procedure contains some routines for verifying the Farkas lemma. procedure Complementary_Slackness ( tableau : in out Matrix; lastcol : in integer; rhs : in out Standard_Floating_Vectors.Vector; tol : in double_float; solution : out Standard_Floating_Vectors.Vector; columns : out Standard_Integer_Vectors.Vector; feasible : out boolean ); procedure Complementary_Slackness ( tableau : in out Matrix; rhs : in out Standard_Floating_Vectors.Vector; tol : in double_float; solution : out Standard_Floating_Vectors.Vector; columns : out Standard_Integer_Vectors.Vector; feasible : out boolean ); -- DESCRIPTION : -- Solves the complementary slackness problem: determines -- whether there exists a positive combination of the columns -- such that the right hand side is satisfied. -- REQUIRED : -- rhs'range = solution'range = columns'range = tableau'range(1) -- ON ENTRY : -- tableau inequalities as columns; -- lastcol indicates the last significant column in the tableau, -- if not given, then lastcol = tableau'last(2); -- tol tolerance to decide whether a number equals zero. -- rhs right hand side vector; -- ON RETURN : -- tableau modified tableau of inequalities; -- rhs modified right hand side; -- solution the computed solution; -- columns indicates which columns has been used; -- feasible if true then the solution is feasible. end Floating_Linear_Inequalities;