File: GB_spec_kron_idx.m

package info (click to toggle)
suitesparse 1%3A7.10.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 254,920 kB
  • sloc: ansic: 1,134,743; cpp: 46,133; makefile: 4,875; fortran: 2,087; java: 1,826; sh: 996; ruby: 725; python: 495; asm: 371; sed: 166; awk: 44
file content (57 lines) | stat: -rw-r--r-- 1,057 bytes parent folder | download | duplicates (3)
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
function C = GB_spec_kron_idx (A, B, atrans, btrans)
% C = kron(A,B), using the mykronidx operator

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

if (nargin < 3)
    atrans = [ ] ;
end
if (nargin < 4)
    btrans = [ ] ;
end
if (isempty (atrans))
    atrans = 0 ;
end
if (isempty (btrans))
    btrans = 0 ;
end

if (atrans)
    A = A' ;
end

if (btrans)
    B = B' ;
end

[ia,ja,x] = find (A) ;
[ib,jb,x] = find (B) ;

anz = length (ia) ;
bnz = length (ib) ;
cnz = anz * bnz ;

ic = zeros (cnz,1) ;
jc = zeros (cnz,1) ;
xc = zeros (cnz,1) ;
[ma, na] = size (A) ;
[mb, nb] = size (B) ;
nc = na * nb ;
mc = ma * mb ;

kc = 0 ;
for ka = 1:anz
    for kb = 1:bnz
        kc = kc + 1 ;
        ic (kc) = (ia (ka) - 1) * mb + ib (kb) ;
        jc (kc) = (ja (ka) - 1) * nb + jb (kb) ;
        xc (kc) = (ia (ka) * 1000000 + ...
                   ja (ka) *   10000 + ...
                   ib (kb) *     100 + ...
                   jb (kb)) ;
    end
end

C = sparse (ic, jc, xc, mc, nc) ;