1function test25
2%TEST25 test sdmult on a large matrix
3% Example:
4%   test25
5% See also cholmod_test
6
7% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
8
9fprintf ('=================================================================\n');
10fprintf ('test25: test sdmult on a large matrix\n') ;
11
12Prob = ssget (936) ;
13A = Prob.A ;
14n = size (A,1) ;
15
16nz = nnz (A) ;
17fprintf ('\nTest matrix: %d-by-%d, nnz %d\n', n, n, nz) ;
18
19Z = rand (n, 500) ;
20
21fprintf ('\nA*X where X is %d-by-k\n', n) ;
22
23for k = [0:10 10:10:50 100:100:500]
24
25    X = Z (:, 1:k) ;
26
27    tic ;
28    D = A*X ;
29    t1 = toc ;
30
31    tic ;
32    C = sdmult (A,X) ;
33    t2 = toc ;
34
35    err = norm (C-D,1) ;
36    fprintf (...
37	'k: %3d time: MATLAB %8.2f CHOLMOD %8.2f speedup %8.2f err %6.0e',...
38	k, t1, t2, t1/t2, err) ;
39    fl = 2*nz*k ;
40    fprintf ('  mflop: MATLAB %8.1f CHOLMOD %8.1f\n', 1e-6*fl/t1, 1e-6*fl/t2) ;
41
42    clear C D X
43end
44
45fprintf ('\nFor comparison, here is CHOLMOD''s x=A\\b time:\n') ;
46for k = [1 100:100:500]
47    B = Z (:, 1:k) ;
48    tic
49    x = cholmod2 (A,B) ;
50    t2 = toc ;
51    err2 = norm (sdmult(A,x)-B,1) ;
52    fprintf (...
53       'CHOLMOD x=A\\b time: %8.2f (b is n-by-%d) resid %6.0e\n', t2, k, err2) ;
54    clear x B
55end
56
57b = Z (:,1) ;
58clear Z
59
60tic
61x = A\b ;
62t1 = toc ;
63err1 = norm (A*x-b,1) ;
64fprintf ('\nMATLAB  x=A\\b time: %8.2f (b is n-by-1) resid %6.0e\n', t1, err1) ;
65
66fprintf ('test25 passed\n') ;
67