1// =============================================================================
2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
4// Copyright (C) 2013 - Michaël Baudin
5// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
6//
7//  This file is distributed under the same license as the Scilab package.
8// =============================================================================
9
10// <-- CLI SHELL MODE -->
11
12// <-- Non-regression test for bug 9196 -->
13//
14// <-- Bugzilla URL -->
15// http://bugzilla.scilab.org/show_bug.cgi?id=9196
16//
17// <-- Short Description -->
18//    The threshold level for conditioning in backslash is too small.
19// =============================================================================
20
21n=9;
22A = testmatrix("hilb",n);
23b=ones(n,1);
24xexpected=[7129/2520
25           4861/2520
26           42131/27720
27           35201/27720
28           395243/360360
29           348911/360360
30           62575/72072
31           113567/144144
32           1768477/2450448];
33x=A\b;
34assert_checkalmostequal(x, xexpected, [], 1e-5);
35
36
37Ac=complex(A,zeros(A));
38bc=complex(b,zeros(b));
39xc = Ac\bc;
40xcexpected=complex(xexpected,zeros(xexpected));
41assert_checkalmostequal(xc, xcexpected, [], 1e-5);
42
43b=(1:n)';
44xexpected=[9;
45           17819/2520;
46           82609/13860;
47           47959/9240;
48           415567/90090;
49           299737/72072;
50           45533/12012;
51           71761/20592;
52           988277/306306];
53x=A\b;
54assert_checkalmostequal(x, xexpected, [], 1e-5);
55Ac=complex(A,zeros(A));
56bc=complex(b,zeros(b));
57xc = Ac\bc;
58xcexpected=complex(xexpected,zeros(xexpected));
59assert_checkalmostequal(xc, xcexpected, [], 1e-5);
60
61b=[1;-1;1;-1;1;-1;1;-1;1];
62xexpected=[1879/2520;
63           893/2520;
64           6557/27720;
65           4993/27720;
66           52901/360360;
67           44911/360360;
68           39173/360360;
69           69659/720720;
70           1068047/12252240];
71x=A\b;
72assert_checkalmostequal(x, xexpected, [], 1e-7);
73Ac=complex(A,zeros(A));
74bc=complex(b,zeros(b));
75xc = Ac\bc;
76xcexpected=complex(xexpected,zeros(xexpected));
77assert_checkalmostequal(xc, xcexpected, [], 1e-6);
78
79n=9;
80A = testmatrix("hilb",n);
81b = ones(n,1);
82x = (b'/A')';
83xexpected=[
842.82896825396825370e+000
851.92896825396825400e+000
861.51987734487734480e+000
871.26987734487734480e+000
881.09680042180042170e+000
899.68228993228993360e-001
908.68228993228993270e-001
917.87871850371850480e-001
927.21695379783615090e-001
93];
94assert_checkalmostequal(x, xexpected, [], 1e-6);
95