File: GB_bitmap_subref_template.c

package info (click to toggle)
suitesparse 1%3A7.10.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, 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 (61 lines) | stat: -rw-r--r-- 2,499 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
//------------------------------------------------------------------------------
// GB_bitmap_subref_template: C = A(I,J) where A is bitmap/full
//------------------------------------------------------------------------------

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

//------------------------------------------------------------------------------

// C=A(I,J), where C and A are bitmap/full, numeric and non-iso

{


    //--------------------------------------------------------------------------
    // C = A(I,J)
    //--------------------------------------------------------------------------

    int64_t cnvals = 0 ;

    if (GB_C_IS_BITMAP)
    { 

        //----------------------------------------------------------------------
        // C=A(I,J) non-iso numeric with A and C bitmap; both non-iso
        //----------------------------------------------------------------------

        #undef  GB_IXJ_WORK
        #define GB_IXJ_WORK(pA,pC)                                  \
        {                                                           \
            int8_t ab = Ab [pA] ;                                   \
            Cb [pC] = ab ;                                          \
            if (ab)                                                 \
            {                                                       \
                /* Cx [pC] = Ax [pA] */                             \
                GB_COPY_ENTRY (pC, pA)                              \
                task_cnvals++ ;                                     \
            }                                                       \
        }
        #include "template/GB_bitmap_assign_IxJ_template.c"
        C->nvals = cnvals ;
    }
    else
    { 

        //----------------------------------------------------------------------
        // C=A(I,J) non-iso numeric with A and C full, both are non-iso
        //----------------------------------------------------------------------

        #undef  GB_IXJ_WORK
        #define GB_IXJ_WORK(pA,pC)                                  \
        {                                                           \
            /* Cx [pC] = Ax [pA] */                                 \
            GB_COPY_ENTRY (pC, pA)                                  \
        }
        #define GB_NO_CNVALS
        #include "template/GB_bitmap_assign_IxJ_template.c"
        #undef  GB_NO_CNVALS
    }
}