Optimization: minor fix for qpsolve
[scilab.git] / scilab / modules / optimization / macros / qpsolve.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - Serge Steer
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9 //
10
11 function [x, iact, iter, f]=qpsolve(Q,p,C,b,ci,cs,me)
12     rhs = argn(2);
13     if rhs <> 7
14         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "qpsolve", 7));
15     end
16     C(me+1:$,:)=-C(me+1:$,:);
17     b(me+1:$)=-b(me+1:$);
18     // Replace boundary contraints by linear constraints
19     Cb=[];bb=[];
20     if ci<>[] then
21         Cb=[Cb;speye(Q)]
22         bb=[bb;ci]
23     end
24     if cs<>[] then
25         Cb=[Cb;speye(Q)]
26         bb=[bb;-cs]
27     end
28     C=[C;Cb];b=[b;bb]
29     [x, iact, iter, f]=qp_solve(Q,-p,C',b,me)
30 endfunction
31