* Bug 15701 fixed: now A\B is faster when A is square and triangular
[scilab.git] / scilab / modules / ast / tests / nonreg_tests / bug_15701.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2019 - St├ęphane MOTTELET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
10 //
11 // <-- Non-regression test for bug 15701 -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/15701
15 //
16 // <-- Short Description -->
17 // A\B is not faster when A is square and triangular
18
19 N = 3000;
20 // matrix A with good condition number in order to prevent
21 // least squares solution
22 A=tril(rand(N,N))+10*eye(N,N);
23 B=rand(N,1);
24
25 // general case
26 A(1,N)=%eps;
27 tic;
28 x1=A\B;
29 t1=toc();
30
31 // triangular case
32 A(1,N)=0;
33 tic;
34 x2=A\B;
35 t2=toc();
36
37 assert_checkalmostequal(x1,x2);
38 assert_checktrue(t1/t2 > 10);
39
40 // complex case
41 A=A+%i*tril(rand(N,N));
42 B=B+%i*rand(N,1);
43
44 // general case
45 A(1,N)=%eps;
46 tic;
47 x1=A\B;
48 t1=toc();
49
50 // triangular case
51 A(1,N)=0;
52 tic;
53 x2=A\B;
54 t2=toc();
55
56 assert_checkalmostequal(x1,x2);
57 assert_checktrue(t1/t2 > 10);