1function test5 2%TEST5 test cs_add 3% 4% Example: 5% test5 6% See also: testall 7 8% Copyright 2006-2012, Timothy A. Davis, http://www.suitesparse.com 9 10rand ('state', 0) ; 11 12for trial = 1:200 13 m = fix (100 * rand (1)) ; 14 n = fix (100 * rand (1)) ; 15 d = rand (1) ; 16 A = sprandn (m,n,d) ; 17 B = sprandn (m,n,d) ; 18 19 if (~ispc) 20 if (mod (trial, 4) == 0) 21 A = A + 1i*sprand(A) ; 22 end 23 if (mod (trial, 2) == 0) 24 B = B + 1i*sprand(B) ; 25 end 26 end 27 28 C = A+B ; 29 D = cs_add (A,B) ; 30 err = nnz (spones (C) - spones (D)) ; 31 if (err > 0) 32 error ('nz!') ; 33 end 34 err = norm (C-D,1) ; 35 fprintf ('m %3d n %3d nnz(A) %6d nnz(B) %6d nnz(C) %6d err %g\n', ... 36 m, n, nnz(A), nnz(B), nnz(C), err) ; 37 if (err > 1e-12) 38 error ('!') ; 39 end 40 41 alpha = pi ; 42 beta = 3 ; 43 44 if (~ispc) 45 if (rand () > .5) 46 alpha = alpha + rand ( ) * 1i ; 47 end 48 if (rand () > .5) 49 beta = beta + rand ( ) * 1i ; 50 end 51 end 52 53 C = alpha*A+B ; 54 D = cs_add (A,B,alpha) ; 55 err = nnz (spones (C) - spones (D)) ; 56 if (err > 0) 57 error ('nz!') ; 58 end 59 err = norm (C-D,1) ; 60 fprintf ('m %3d n %3d nnz(A) %6d nnz(B) %6d nnz(C) %6d err %g\n', ... 61 m, n, nnz(A), nnz(B), nnz(C), err) ; 62 if (err > 1e-12) 63 error ('!') ; 64 end 65 66 C = alpha*A + beta*B ; 67 D = cs_add (A,B,alpha,beta) ; 68 err = nnz (spones (C) - spones (D)) ; 69 if (err > 0) 70 error ('nz!') ; 71 end 72 err = norm (C-D,1) ; 73 fprintf ('m %3d n %3d nnz(A) %6d nnz(B) %6d nnz(C) %6d err %g\n', ... 74 m, n, nnz(A), nnz(B), nnz(C), err) ; 75 if (err > 1e-12) 76 error ('!') ; 77 end 78 79end 80