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