* Bug #9688 fixed - optim could crash when imp option was < 0
[scilab.git] / scilab / modules / optimization / tests / nonreg_tests / bug_9688.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- ENGLISH IMPOSED -->
10 //
11 // <-- Non-regression test for bug 9688 -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/show_bug.cgi?id=9688
15 //
16 // <-- Short Description -->
17 // optim could crash when "imp" option was < 0
18 //
19 function [ f , g , ind ] = woodFG ( x , ind )
20     f = []
21     g = []
22     if ind == 2 | ind == 3 | ind == 4 then
23         A = x(2)-x(1)^2
24         B = x(4)-x(3)^2
25     end
26     if ind == 2 | ind == 4 then
27         f = 100*A^2+(1-x(1))^2+90*B^2+(1-x(3))^2+...
28         10.1*((x(2)-1)^2+(x(4)-1)^2)+19.8*(x(2)-1)*(x(4)-1)
29     end
30     if ind == 3 | ind == 4 then
31         g(1) = -2*(200*x(1)*A+1-x(1))
32         g(2) = 2*(100*A+10.1*(x(2)-1)+9.9*(x(4)-1))
33         g(3) = -2*(180*x(3)*B+1.-x(3))
34         g(4) = 2*(90*B+10.1*(x(4)-1)+9.9*(x(2)-1))
35     end
36 endfunction
37 x0 = [-3 -1 -3 -1];
38
39 [ fopt, xopt, gopt ] = optim ( woodFG, x0, "qn", imp=-1);
40 [ fopt, xopt, gopt ] = optim ( woodFG, x0, "qn", imp=-1);
41 [ fopt, xopt, gopt ] = optim ( woodFG, x0, "nd", imp=-1);