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// <-- CLI SHELL MODE -->
10// <-- Non-regression test for bug 9196 -->
11//
12// <-- Bugzilla URL -->
13// http://bugzilla.scilab.org/show_bug.cgi?id=9196
14//
15// <-- Short Description -->
16//    The threshold level for conditioning in backslash is too small.
17// =============================================================================
18n=9;
19A = testmatrix("hilb",n);
20b=ones(n,1);
21xexpected=[7129/2520
22           4861/2520
23           42131/27720
24           35201/27720
25           395243/360360
26           348911/360360
27           62575/72072
28           113567/144144
29           1768477/2450448];
30x=A\b;
31assert_checkalmostequal(x, xexpected, [], 1e-6);
32Ac=complex(A,zeros(A));
33bc=complex(b,zeros(b));
34xc = Ac\bc;
35xcexpected=complex(xexpected,zeros(xexpected));
36assert_checkalmostequal(xc, xcexpected, [], 1e-5);
37b=(1:n)';
38xexpected=[9;
39           17819/2520;
40           82609/13860;
41           47959/9240;
42           415567/90090;
43           299737/72072;
44           45533/12012;
45           71761/20592;
46           988277/306306];
47x=A\b;
48assert_checkalmostequal(x, xexpected, [], 1e-5);
49Ac=complex(A,zeros(A));
50bc=complex(b,zeros(b));
51xc = Ac\bc;
52xcexpected=complex(xexpected,zeros(xexpected));
53assert_checkalmostequal(xc, xcexpected, [], 1e-5);
54b=[1;-1;1;-1;1;-1;1;-1;1];
55xexpected=[1879/2520;
56           893/2520;
57           6557/27720;
58           4993/27720;
59           52901/360360;
60           44911/360360;
61           39173/360360;
62           69659/720720;
63           1068047/12252240];
64x=A\b;
65assert_checkalmostequal(x, xexpected, [], 1e-7);
66Ac=complex(A,zeros(A));
67bc=complex(b,zeros(b));
68xc = Ac\bc;
69xcexpected=complex(xexpected,zeros(xexpected));
70assert_checkalmostequal(xc, xcexpected, [], 1e-6);
71n=9;
72A = testmatrix("hilb",n);
73b = ones(n,1);
74x = (b'/A')';
75xexpected=[
762.82896825396825370e+000
771.92896825396825400e+000
781.51987734487734480e+000
791.26987734487734480e+000
801.09680042180042170e+000
819.68228993228993360e-001
828.68228993228993270e-001
837.87871850371850480e-001
847.21695379783615090e-001
85];
86assert_checkalmostequal(x, xexpected, [], 1e-6);
87