1function descriptorinfo (d)
2%GRB.DESCRIPTOR list the contents of a SuiteSparse:GraphBLAS descriptor.
3%
4%   GrB.descriptorinfo
5%   GrB.descriptorinfo (d)
6%
7% The GraphBLAS descriptor is a MATLAB struct that modifies the behavior
8% of GraphBLAS operations.  It contains the following components, each of
9% which are a string or a number.  Any component of struct that is not
10% present is set to the default value.  If the descriptor d is empty, or
11% not present, in a GraphBLAS function, all default settings are used.
12%
13% The following descriptor values are strings:
14%
15%   d.out   'default' or 'replace'      determines if C is cleared before
16%                                       the accum/mask step
17%
18%   d.mask  'default'                   use M as the mask (if present)
19%           'complement'                use ~M as the mask
20%           'structural' or 'structure' use the pattern of M
21%           'structural complement'     use the pattern of ~M
22%
23%   d.in0   'default' or 'transpose'    determines A or A.' is used
24%   d.in1   'default' or 'transpose'    determines B or B.' is used
25%
26%   d.axb   'default', 'saxpy', 'dot', 'Gustavson', or 'hash'.  Determines
27%            the method used in GrB.mxm.  The default is to let GraphBLAS
28%            determine the method automatically, via a heuristic.
29%
30%   d.kind   For most GrB.methods, this is a string equal to 'default',
31%            'GrB', 'sparse', 'full', or 'matlab'.  The default is 'GrB',
32%            where the GraphBLAS operation returns an object, which is
33%            preferred since GraphBLAS sparse matrices are faster and can
34%            represent many more data types.  However, if you want a
35%            standard MATLAB sparse matrix on ouput, use d.kind='sparse'.
36%            Use d.kind='full' to return a MATLAB full matrix.  Use
37%            d.kind='matlab' for a MATLAB sparse or full matrix (full if
38%            all entries are present, sparse otherwise).
39%
40%   d.base   A string equal to 'default', 'zero-based', 'one-based', or
41%            'one-based int'.  The default is 'one-based'.  If d.base is
42%            'zero-based', then indices are zero-based, in the range 0 to
43%            n-1, for a matrix of dimension n.
44%
45%   d.format a string that describes the sparsity format of the output
46%            matrix C.  The following rules are used to determine the
47%            format of the result, in order:
48%
49%            (1) If d.format appears in the descriptor for a method, then
50%               that determines the format of C.
51%            (2) If C is a column vector then C is stored by column.
52%            (3) If C is a row vector then C is stored by row.
53%            (4) If the method has a first matrix input (usually called A),
54%                and it is not a row or column vector, then its format is
55%                used for C.
56%            (5) If the method has a second matrix input (usually called
57%                B), and it is not a row or column vector, then its format
58%                is used for C.
59%            (6) Otherwise, the global default format is used for C.
60%                See GrB.format for details.
61%
62%           The d.format string optionally includes one or more strings
63%           'sparse', 'hypersparse' (or 'hyper' for short), 'bitmap', and
64%           'full', separated by '/', and then optionally followed by the
65%           string 'by row' or 'by col'.  For example, to allow C to be
66%           sparse or bitmap, use d.format = 'sparse/bitmap'.  To return
67%           C as hypersparse in row-oriented format, use 'hyper by row'.
68%
69% These descriptor values are scalars:
70%
71%   d.nthreads  max # of threads to use; default is omp_get_max_threads.
72%   d.chunk     controls # of threads to use for small problems.
73%
74% GrB.descriptorinfo (d) lists the contents of a GraphBLAS descriptor and
75% checks if its contents are valid.  Also refer to the
76% SuiteSparse:GraphBLAS User Guide for more details.
77%
78% See also GrB.binopinfo, GrB.monoidinfo, GrB.selectopinfo,
79% GrB.semiringinfo, GrB.unopinfo.
80
81% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
82% SPDX-License-Identifier: GPL-3.0-or-later
83
84% FUTURE: add desc.in* = 'conjugate transpose'
85
86if (nargin == 0)
87    help GrB.descriptorinfo
88    gbdescriptorinfo ;
89else
90    gbdescriptorinfo (d) ;
91end
92
93