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