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