File: gb_sum.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 (40 lines) | stat: -rw-r--r-- 858 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
function C = gb_sum (op, G, option)
%GB_SUM C = sum (G) or C = any (G)

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

if (nargin == 2)
    % C = sum (G)
    if (gb_isvector (G))
        option = 'all' ;
    else
        option = 1 ;
    end
end

switch (option)

    case { 'all' }

        % C = sum (G, 'all'), reducing all entries to a scalar
        C = gbreduce (op, G) ;

    case { 1 }

        % C = sum (G, 1) reduces each column to a scalar,
        % giving a 1-by-n row vector.
        desc.in0 = 'transpose' ;
        C = gbtrans (gbvreduce (op, G, desc)) ;

    case { 2 }

        % C = sum (G, 2) reduces each row to a scalar,
        % giving an m-by-1 column vector.
        C = gbvreduce (op, G) ;

    otherwise

        error ('GrB:error', 'unknown option') ;
end