File: gbtest97.m

package info (click to toggle)
suitesparse-graphblas 7.4.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 67,112 kB
  • sloc: ansic: 1,072,243; cpp: 8,081; sh: 512; makefile: 506; asm: 369; python: 125; awk: 10
file content (346 lines) | stat: -rw-r--r-- 15,638 bytes parent folder | download | duplicates (2)
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
function gbtest97
%GBTEST97 test GrB.apply2
%
% C = GrB.apply2 (op, A, y)
% C = GrB.apply2 (C, accum, op, A, y)
% C = GrB.apply2 (C, M, op, A, y)
% C = GrB.apply2 (C, M, accum, op, A, y)
%
% C = GrB.apply2 (op, x, A)
% C = GrB.apply2 (C, accum, op, x, A)
% C = GrB.apply2 (C, M, op, x, A)
% C = GrB.apply2 (C, M, accum, op, x, A)

% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
% SPDX-License-Identifier: Apache-2.0

rng ('default')

C     = GrB.random (9, 9, 0.5) ;
M     = GrB.random (9, 9, 0.5, 'range', logical ([false true])) ;
accum = '+' ;
mult  = '*' ;
div   = '/' ;
A     = GrB.random (9, 9, 0.5) ;
x     = exp (1) ;
y     = pi ;
desc  = struct ;

c = double (C) ;
a = double (A) ;
m = logical (M) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (op, A, y)
%----------------------------------------------------------------------

% 2 matrix: A, y
% 1 string: op

C2 = A / y ;

C1 = GrB.apply2 (div, A, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (A, div, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (A, y, div) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (div, a, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (a, div, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (a, y, div) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (op, A, y, desc)
%----------------------------------------------------------------------

% 2 matrix: A, y
% 1 string: op

C2 = A / y ;

C1 = GrB.apply2 (div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (A, y, div, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (a, y, div, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (op, x, A, desc)
%----------------------------------------------------------------------

% 2 matrix: x, A
% 1 string: op

C2 = x * A ;

C1 = GrB.apply2 (mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (x, A, mult, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (x, a, mult, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, accum, op, A, y)
%----------------------------------------------------------------------

% 3 matrices: C, A, y
% 2 strings: accum, op

C2 = C + A / y ;
c2 = c + a / y ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, accum, div, A, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, A, div, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, A, y, div) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, A, y, accum, div) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, A, y, div) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, A, div, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, div, A, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, div, C, A, y) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, accum, div, a, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, a, div, y) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, a, y, div) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, a, y, accum, div) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, a, y, div) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, accum, op, A, y, desc)
%----------------------------------------------------------------------

% 3 matrices: C, A, y
% 2 strings: accum, op

C2 = C + A / y ;
c2 = c + a / y ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, accum, div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, A, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, A, y, accum, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, A, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, div, C, A, y, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, accum, div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, a, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, a, y, accum, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, a, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, div, c, a, y, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, accum, op, x, A)
%----------------------------------------------------------------------

% 3 matrices: C, x, A
% 2 strings: accum, op

C2 = C + x * A ;
c2 = c + x * a ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, accum, mult, x, A) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, x, mult, A) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, x, A, mult) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, x, A, accum, mult) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, x, A, mult) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, x, mult, A) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, mult, x, A) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, mult, C, x, A) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, accum, mult, x, a) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, x, mult, a) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, x, a, mult) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, x, a, accum, mult) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, x, a, mult) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, x, mult, a) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, mult, x, a) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, mult, c, x, a) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, accum, op, x, A, desc)
%----------------------------------------------------------------------

% 3 matrices: C, x, A
% 2 strings: accum, op

C2 = C + x * A ;
c2 = c + x * a ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, accum, mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, x, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, x, A, accum, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, x, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, mult, C, x, A, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, accum, mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, x, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, x, a, accum, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, x, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, mult, c, x, a, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, M, op, A, y, desc)
%----------------------------------------------------------------------

% 4 matrices: C, M, A, y
% 1 string:   op

% C<M> = A / y
C2 = GrB.assign (C, M, A / y) ;

t = a / y ;
c2 = c ;
c2 (m) = t (m) ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, M, div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, A, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, div, M, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (div, C, M, A, y, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, m, div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, m, a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, m, a, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, div, m, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (div, c, m, a, y, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, M, op, x, A, desc)
%----------------------------------------------------------------------

% 4 matrices: C, M, x, A
% 1 string:   op

% C<M> = x * A
C2 = GrB.assign (C, M, x * A) ;

t = x * a ;
c2 = c ;
c2 (m) = t (m) ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, M, mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, x, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, mult, M, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (mult, C, M, x, A, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, m, mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, m, x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, m, x, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, mult, m, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (mult, c, m, x, a, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, M, accum, op, A, y, desc)
%----------------------------------------------------------------------

% 4 matrices: C, M, A, y
% 2 strings:  accum, op

% C<M> += A / y
C2 = GrB.assign (C, M, accum, A / y) ;

t = c + a / y ;
c2 = c ;
c2 (m) = t (m) ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, M, accum, div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, accum, A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, accum, A, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, A, y, accum, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, A, accum, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, A, accum, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, M, div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, M, A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, M, A, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, div, M, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, M, div, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, M, A, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, M, A, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, div, M, A, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, div, C, M, A, y, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, M, accum, div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, accum, a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, accum, a, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, a, y, accum, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, a, accum, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, a, accum, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, M, div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, M, a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, M, a, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, div, M, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, M, div, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, M, a, div, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, M, a, y, div, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, div, M, a, y, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, div, c, M, a, y, desc) ; assert (isequal (C1, C2)) ;

%----------------------------------------------------------------------
% C = GrB.apply2 (C, M, accum, op, x, A, desc)
%----------------------------------------------------------------------

% 4 matrices: C, M, x, A
% 2 strings:  accum, op

% C<M> += x * A
C2 = GrB.assign (C, M, accum, x * A) ;

t = c + x * a ;
c2 = c ;
c2 (m) = t (m) ;
assert (isequal (c2, C2)) ;

C1 = GrB.apply2 (C, M, accum, mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, accum, x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, accum, x, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, x, A, accum, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, x, accum, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, M, x, accum, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, M, mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, M, x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, M, x, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (C, accum, mult, M, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, M, mult, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, M, x, mult, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, M, x, A, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, C, mult, M, x, A, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, mult, C, M, x, A, desc) ; assert (isequal (C1, C2)) ;

C1 = GrB.apply2 (c, M, accum, mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, accum, x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, accum, x, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, x, a, accum, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, x, accum, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, M, x, accum, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, M, mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, M, x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, M, x, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (c, accum, mult, M, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, M, mult, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, M, x, mult, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, M, x, a, mult, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, c, mult, M, x, a, desc) ; assert (isequal (C1, C2)) ;
C1 = GrB.apply2 (accum, mult, c, M, x, a, desc) ; assert (isequal (C1, C2)) ;

fprintf ('gbtest97: all tests passed\n') ;