1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
function gbtest12
%GBTEST12 test GrB.eadd, GrB.emult, GrB.eunion
% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
% SPDX-License-Identifier: Apache-2.0
rng ('default') ;
A = sparse (rand (2)) ;
B = sparse (rand (2)) ;
C = A+B ;
D = A.*B ;
F = A-B ;
G = GrB.eadd ('+', A, B) ;
err = norm (C-G, 1) %#ok<*NOPRT>
assert (logical (err < 1e-12))
H = GrB.emult ('*', A, B) ;
err = norm (D-H, 1)
assert (logical (err < 1e-12))
G = GrB.eunion ('-', A, 0, B, 0) ;
err = norm (F-G, 1) %#ok<*NOPRT>
assert (logical (err < 1e-12))
d.kind = 'sparse' ;
d.in0 = 'transpose' ;
d
G = GrB.eadd ('+', A, B, d) ;
C = A'+B ;
err = norm (C-G, 1)
assert (logical (err < 1e-12))
H = GrB.emult ('*', A, B, d) ;
D = A'.*B ;
err = norm (H-D, 1)
assert (logical (err < 1e-12))
d.kind = 'GrB' ;
G = GrB.eadd ('+', A, B, d) ;
err = norm (C-G, 1) %#ok<*NASGU>
H = GrB.emult ('*', A, B, d) ;
err = norm (D-H, 1)
E = sparse (rand (2)) ;
C = E + A+B ;
G = GrB.eadd (E, '+', '+', A, B) ;
C-G %#ok<*MNEFF>
F = sparse (rand (2)) ;
D = F + A.*B ;
H = GrB.emult (F, '+', '*', A, B) ;
D-H
assert (gbtest_eq (D, H)) ;
G = GrB.eadd ('+', A, B)
C = A+B
assert (gbtest_eq (C, G)) ;
H = GrB.emult ('*', A, B)
D = A.*B
assert (gbtest_eq (D, H)) ;
m = 10 ;
n = 12 ;
A = sprand (m, n, 0.5) ;
B = sprand (m, n, 0.5) ;
M = logical (sprand (m, n, 0.5)) ;
Cin = sprand (m, n, 0.5) ;
G = GrB (Cin) ;
T = Cin + A .* B ;
C = Cin ;
C (M) = T (M) ;
G = GrB.emult (Cin, M, '+', '*', A, B) ;
err = norm (C-G, 1) ;
assert (err < 1e-12)
G = GrB.eadd (Cin, M, '+', '+', A, B) ;
C = Cin ;
T = Cin + A + B ;
C (M) = T (M) ;
err = norm (C-G, 1) ;
assert (err < 1e-12)
G = GrB.eadd (Cin, M, '+', A, B) ;
C = Cin ;
T = A + B ;
C (M) = T (M) ;
err = norm (C-G, 1) ;
assert (err < 1e-12)
G = GrB.eunion ('-', A, 0, B, 0) ;
F = A-B ;
err = norm (F-G, 1) ;
assert (err < 1e-12)
C = sprand (m, n, 0.5) ;
G = GrB (C) ;
T = A .* B ;
C (M) = T (M) ;
G = GrB.emult (G, M, '*', A, B) ;
err = norm (C-G, 1) ;
assert (err < 1e-12)
C1 = 2 - C ;
C2 = 2 - G ;
assert (isequal (C1, C2)) ;
C1 = 0 - C ;
C2 = 0 - G ;
assert (isequal (C1, C2)) ;
C1 = C - 2 ;
C2 = C - 2 ;
assert (isequal (C1, C2)) ;
fprintf ('gbtest12: all tests passed\n') ;
|