1function err = test_all_svd 2%TEST_ALL_SVD tests the svd factorization method for a range of problems. 3% 4% Example 5% test_all_svd 6% 7% See also test_all. 8 9% Copyright 2011-2012, Timothy A. Davis, http://www.suitesparse.com 10 11reset_rand ; 12err = test_svd ; 13 14err = max (err, test_svd (ones (3))) ; 15A = zeros (3) ; 16F = factorize (A, 'svd') ; 17nrm = norm (F) ; 18err = max (err, nrm) ; 19nrm = norm (inverse (F)) ; 20c = cond (F,1) ; 21if (~isequal (nrm, inf) || ~isequal (c, inf)) 22 error ('svd test failure') ; 23end 24 25for sp = 0:1 26 for n = 0:6 27 for m = 0:6 28 for im = 0:1 29 A = rand (m,n) ; 30 if (im) 31 A = A + 1i*rand (m,n) ; 32 end 33 if (sp) 34 A = sparse (A) ; 35 end 36 err = max (err, test_svd (A)) ; 37 end 38 end 39 fprintf ('\n') ; 40 end 41end 42 43for n = 2:7 44 A = gallery ('chow', n, pi, 2) ; 45 err = max (err, test_svd (A)) ; 46 err = max (err, test_svd (A')) ; 47 err = max (err, test_svd (gallery ('clement', n, 0))) ; 48 err = max (err, test_svd (gallery ('clement', n, 1))) ; 49 A = sprandn (n, 2*n, 0.2) ; 50 err = max (err, test_svd (A)) ; 51 err = max (err, test_svd (A')) ; 52end 53fprintf ('\n') ; 54err = max (err, test_svd (gallery ('condex', 4, 1))) ; 55err = max (err, test_svd (gallery ('condex', 3, 2))) ; 56err = max (err, test_svd (gallery ('condex', 7, 3))) ; 57err = max (err, test_svd (gallery ('condex', 8, 4))) ; 58err = max (err, test_svd (gallery ('dorr', 20))) ; 59err = max (err, test_svd (gallery ('frank', 20))) ; 60err = max (err, test_svd (gallery ('gearmat', 20))) ; 61err = max (err, test_svd (gallery ('lauchli', 20))) ; 62err = max (err, test_svd (gallery ('neumann', 6^2))) ; 63fprintf ('\ntest_all_svd error so far: %g\n', err) ; 64 65if (err > 1e-6) 66 error ('error too high') ; 67end 68 69fprintf ('Testing on gallery (''randsvd'',50) matrices:\n') ; 70err = max (err, test_svd (gallery ('randsvd', 50))) ; 71err = max (err, test_svd (gallery ('randsvd', 50, 10/eps))) ; 72fprintf ('\nFinal test_all_svd error: %g\n', err) ; 73 74if (err > 1e-6) 75 error ('error too high') ; 76end 77 78