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