bug 2003 fixed
[scilab.git] / scilab / modules / sparse / tests / nonreg_tests / bug_2003.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- Non-regression test for bug 2003 -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/show_bug.cgi?id=2003
12 //
13 // <-- Short Description -->
14 //lusolve crashes scilab when handle has been freed
15
16 a=[0.2,0.6,0.6,0.2,0.3;
17 0.8,0.8,0.7,0.2,0.9;
18 0,0.7,0.7,0.2,0.2;
19 0.3,0.9,0.2,0.9,0.3;
20 0.7,0.1,0.5,0.7,0.4];
21 b=[0.3;0.6;0.5;0.3;0.6];
22 A=sparse(a);
23 [h,rk]=lufact(A);
24 x=lusolve(h,b);
25 if norm(a*x-b)>1d-10 then pause,end
26 [P,L,U,Q]=luget(h);
27 if norm(P*L*U*Q-A)>1d-10 then pause,end
28 ludel(h)
29 if execstr('x=lusolve(h,b);','errcatch')<>247 then pause,end
30 if execstr('ludel(h);','errcatch')<>247 then pause,end
31 if execstr('[P,L,U,Q]=luget(h);','errcatch')<>247 then pause,end
32
33 //try to allocate a lot of handles
34 for k=1:20
35   [h1,rk]=lufact(A);
36 end     
37
38 x=lusolve(h1,b);
39 if norm(a*x-b)>1d-10 then pause,end