File: test55b.m

package info (click to toggle)
suitesparse 1%3A5.8.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 152,716 kB
  • sloc: ansic: 774,385; cpp: 24,213; makefile: 6,310; fortran: 1,927; java: 1,826; csh: 1,686; ruby: 725; sh: 535; perl: 225; python: 209; sed: 164; awk: 60
file content (79 lines) | stat: -rw-r--r-- 1,453 bytes parent folder | download
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
function test55b
%TEST55B test GrB_assign, illustrate duplicate indices, MATLAB vs GraphBLAS

% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2020, All Rights Reserved.
% http://suitesparse.com   See GraphBLAS/Doc/License.txt for license.

% MATLAB and GraphBLAS differ on how repeated indices are handled
%
% MATLAB: last value, no accumulation
% GraphBLAS: not defined, SuiteSparse:GraphBLAS accumulates

A = magic (5)

A ([2 2], [4 5])

B = [1000 800 ; 60000 2000 ]
% B (1,1) = nan

i = [2 2]
j = [4 5]

C1 = A ;
C1 ([2 2], [4 5]) = A ([2 2], [4 5]) + B

a = sparse (A)
b = sparse (B)
i0 = uint64 (i-1)
j0 = uint64 (j-1)

C2 = GB_mex_assign (a, [], 'plus', b, i0, j0)

C1
full (C2.matrix)

c = sparse ([ 1 2 3 4 5 ])
i = uint64 (0)
j = uint64 ([ 0 0 4 ]) 
a = sparse ([ 10 100 1000]) 
e = GB_mex_assign (c, [], 'plus', a, i, j)
e = full (e.matrix)

ac = accumarray (double (j+1)', full(a)')'
e2 = c ;
e2 (i+1, :) = e2 (i+1, :) + ac
e2 = full (e2)

e2 = c ;
e2 (i+1,j+1) = e2 (i+1,j+1) + a
e2 = full (e2)

a = sparse ([ 1000 1000 1000]) 
e = GB_mex_assign (c, [], 'plus', a, i, j)
e = full (e.matrix)

e2 = c ;
e2 (i+1,j+1) = e2 (i+1,j+1) + a
e2 = full (e2)


e2 = c ;
e2 (i+1,j+1) = e2 (i+1,j+1) + 1000
e2 = full (e2)


a = sparse ([ 1000 1000 1000]) 
e = GB_mex_assign (c, [], '', a, i, j)
e = full (e.matrix)

e2 = c ;
e2 (i+1,j+1) = a
e2 = full (e2)

e2 = c ;
e2 (i+1,j+1) = 1000 
e2 = full (e2)

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