CMR  1.3.0
Macros | Functions
matroid.c File Reference
#include <cmr/matroid.h>
#include "env_internal.h"
#include "matroid_internal.h"
#include "matrix_internal.h"
#include "listmatrix.h"
#include <assert.h>
#include <string.h>

Macros

#define MIN_IF_EXISTS(currentValue, child, childValue)
 

Functions

static CMR_ERROR computePivots (CMR *cmr, CMR_CHRMAT *matrix, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, int8_t characteristic, CMR_CHRMAT **presult)
 
CMR_ERROR CMRchrmatBinaryPivot (CMR *cmr, CMR_CHRMAT *matrix, size_t pivotRow, size_t pivotColumn, CMR_CHRMAT **presult)
 Applie a pivot to matrix and returns the resulting matrix in *presult. More...
 
CMR_ERROR CMRchrmatTernaryPivot (CMR *cmr, CMR_CHRMAT *matrix, size_t pivotRow, size_t pivotColumn, CMR_CHRMAT **presult)
 Applies a sequence of pivots to matrix and returns the resulting matrix in *presult. More...
 
CMR_ERROR CMRchrmatBinaryPivots (CMR *cmr, CMR_CHRMAT *matrix, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, CMR_CHRMAT **presult)
 Applies a sequence of pivots to matrix and returns the resulting matrix in *presult. More...
 
CMR_ERROR CMRchrmatTernaryPivots (CMR *cmr, CMR_CHRMAT *matrix, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, CMR_CHRMAT **presult)
 Applies a sequence of pivots to matrix and returns the resulting matrix in *presult. More...
 
CMR_ERROR CMRminorCreate (CMR *cmr, CMR_MINOR **pminor, size_t numPivots, CMR_SUBMAT *submatrix)
 Creates a minor, allocating space for numPivots pivots and a remaining submatrix. More...
 
CMR_ERROR CMRminorFree (CMR *cmr, CMR_MINOR **pminor)
 Frees the minor *pminor (if pminor is not NULL). More...
 
CMR_ERROR CMRminorPrint (CMR *cmr, CMR_MINOR *minor, size_t numRows, size_t numColumns, FILE *stream)
 Writes the minor minor to the file \fileName by means of lists of row and column indices as well as pivot entries. More...
 
CMR_ERROR CMRminorWriteToFile (CMR *cmr, CMR_MINOR *minor, size_t numRows, size_t numColumns, const char *fileName)
 Writes the minor minor to the file \fileName by means of lists of row and column indices as well as pivot entries. More...
 
bool CMRmatroiddecIsTernary (CMR_MATROID_DEC *dec)
 Returns true iff the decomposition is over \( \mathbb{F}_3 \). More...
 
bool CMRmatroiddecThreeSumDistributedRanks (CMR_MATROID_DEC *dec)
 Returns true iff the 3-sum decomposition node has \( 3 \)-separation with two rank-1 matrices. More...
 
bool CMRmatroiddecThreeSumConcentratedRank (CMR_MATROID_DEC *dec)
 Returns true iff the 3-sum decomposition node has \( 3 \)-separation with one rank-2 matrix. More...
 
CMR_CHRMATCMRmatroiddecGetMatrix (CMR_MATROID_DEC *dec)
 Returns the matrix of the decomposition node dec (or NULL if it is not stored). More...
 
bool CMRmatroiddecHasTranspose (CMR_MATROID_DEC *dec)
 Returns true iff the transposed matrix of the decomposition node dec is stored. More...
 
CMR_CHRMATCMRmatroiddecGetTranspose (CMR_MATROID_DEC *dec)
 Returns the transposed matrix of the decomposition node dec (or NULL if it is not stored). More...
 
size_t CMRmatroiddecNumChildren (CMR_MATROID_DEC *dec)
 Returns the number of children of the decomposition node dec. More...
 
CMR_MATROID_DECCMRmatroiddecChild (CMR_MATROID_DEC *dec, size_t childIndex)
 Returns a child of the decomposition node dec. More...
 
CMR_MATROID_DEC_TYPE CMRmatroiddecType (CMR_MATROID_DEC *dec)
 Returns the type of a decomposition node dec. More...
 
int8_t CMRmatroiddecGraphicness (CMR_MATROID_DEC *dec)
 Indicates graphicness/being network. More...
 
int8_t CMRmatroiddecCographicness (CMR_MATROID_DEC *dec)
 Indicates cographicness/being conetwork. More...
 
int8_t CMRmatroiddecRegularity (CMR_MATROID_DEC *dec)
 Indicates regularity/total unimodularity. More...
 
size_t CMRmatroiddecNumRows (CMR_MATROID_DEC *dec)
 Returns the number of rows. More...
 
CMR_ELEMENTCMRmatroiddecChildRowsToParent (CMR_MATROID_DEC *dec, size_t childIndex)
 Returns the mapping of rows of child childIndex to this node's elements. More...
 
CMR_ELEMENTCMRmatroiddecChildColumnsToParent (CMR_MATROID_DEC *dec, size_t childIndex)
 Returns the mapping of columns of child childIndex to this node's elements. More...
 
size_t CMRmatroiddecNumColumns (CMR_MATROID_DEC *dec)
 Returns the number of columns. More...
 
CMR_GRAPHCMRmatroiddecGraph (CMR_MATROID_DEC *dec)
 Returns the graph (if available). More...
 
CMR_GRAPH_EDGECMRmatroiddecGraphForest (CMR_MATROID_DEC *dec)
 Returns the forest of the graph (if available). More...
 
size_t CMRmatroiddecGraphSizeForest (CMR_MATROID_DEC *dec)
 Returns the number of edges of the graph's forest (if available). More...
 
CMR_GRAPH_EDGECMRmatroiddecGraphCoforest (CMR_MATROID_DEC *dec)
 Returns the coforest of the graph (if available). More...
 
size_t CMRmatroiddecGraphSizeCoforest (CMR_MATROID_DEC *dec)
 Returns the number of edges of the graph's coforest (if available). More...
 
bool * CMRmatroiddecGraphArcsReversed (CMR_MATROID_DEC *dec)
 Returns an array that indicates for the graph's edges whether they must be reversed (if available). More...
 
CMR_GRAPHCMRmatroiddecCograph (CMR_MATROID_DEC *dec)
 Returns the cograph (if available). More...
 
size_t CMRmatroiddecCographSizeForest (CMR_MATROID_DEC *dec)
 Returns the number of edges of the cograph's forest (if available). More...
 
CMR_GRAPH_EDGECMRmatroiddecCographForest (CMR_MATROID_DEC *dec)
 Returns the forest of the cograph (if available). More...
 
size_t CMRmatroiddecCographSizeCoforest (CMR_MATROID_DEC *dec)
 Returns the number of edges of the cograph's coforest (if available). More...
 
CMR_GRAPH_EDGECMRmatroiddecCographCoforest (CMR_MATROID_DEC *dec)
 Returns the coforest of the cograph (if available). More...
 
bool * CMRmatroiddecCographArcsReversed (CMR_MATROID_DEC *dec)
 Returns an array that indicates for the cograph's edges whether they must be reversed (if available). More...
 
size_t CMRmatroiddecNumPivots (CMR_MATROID_DEC *dec)
 Returns the number of pivots (if available). More...
 
size_t * CMRmatroiddecPivotRows (CMR_MATROID_DEC *dec)
 Returns the array with the pivot rows (if available). More...
 
size_t * CMRmatroiddecPivotColumns (CMR_MATROID_DEC *dec)
 Returns the array with the pivot columns (if available). More...
 
CMR_ERROR CMRmatroiddecPrintChild (CMR *cmr, CMR_MATROID_DEC *child, CMR_MATROID_DEC *parent, size_t childIndex, FILE *stream, size_t indent, bool printChildren, bool printParentElements, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots)
 Prints the decomposition child to stream. More...
 
CMR_ERROR CMRmatroiddecPrint (CMR *cmr, CMR_MATROID_DEC *dec, FILE *stream, bool printChildren, bool printParentElements, bool printMatrices, bool printGraphs, bool printReductions, bool printPivots)
 Prints the decomposition dec to stream. More...
 
CMR_ERROR CMRmatroiddecCapture (CMR *cmr, CMR_MATROID_DEC *dec)
 Increases the reference counter by 1. More...
 
CMR_ERROR CMRmatroiddecRelease (CMR *cmr, CMR_MATROID_DEC **pdec)
 Releases a decomposition node, freeing it if this was the last reference. More...
 
static CMR_ERROR createNode (CMR *cmr, CMR_MATROID_DEC **pdec, bool isTernary, CMR_MATROID_DEC_TYPE type, size_t numRows, size_t numColumns)
 
static CMR_ERROR updateRowsColumnsToParent (CMR *cmr, CMR_MATROID_DEC *parent, size_t childIndex, size_t *parentRows, size_t *parentColumns)
 Allocates and sets childRowsToParent and childColumnsToParent of the child of parent indicated by childIndex. More...
 
static CMR_ERROR updateRowsColumnsToChild (CMR_MATROID_DEC *parent, size_t childIndex, size_t *parentRows, size_t firstRow, size_t beyondRow, size_t *parentColumns, size_t firstColumn, size_t beyondColumn)
 Updates rowsToChild and columnsToChild of the parent. More...
 
static CMR_ERROR updateChildMatrix (CMR *cmr, CMR_MATROID_DEC *parent, size_t childIndex)
 Updates matrix of dec from parent using rowsParent and columnsParent arrays. More...
 
CMR_ERROR CMRmatroiddecCreateMatrixRoot (CMR *cmr, CMR_MATROID_DEC **pdec, bool isTernary, CMR_CHRMAT *matrix)
 Creates an unknown decomposition node as a root. More...
 
CMR_ERROR CMRmatroiddecSetNumChildren (CMR *cmr, CMR_MATROID_DEC *dec, size_t numChildren)
 Sets the number of children and allocates memory accordingly. More...
 
CMR_ERROR CMRmatroiddecCreateChildFromMatrices (CMR *cmr, CMR_MATROID_DEC *parent, size_t childIndex, CMR_CHRMAT *matrix, CMR_CHRMAT *transpose, CMR_ELEMENT *rowsToParent, CMR_ELEMENT *columnsToParent)
 Creates a decomposition node as a child. More...
 
CMR_ERROR CMRmatroiddecUpdateOneSum (CMR *cmr, CMR_MATROID_DEC *dec, size_t numChildren)
 Initialize an existing unknown decomposition node as a 1-sum with numChildren children. More...
 
CMR_ERROR CMRmatroiddecUpdateSubmatrix (CMR *cmr, CMR_MATROID_DEC *dec, CMR_SUBMAT *submatrix, CMR_MATROID_DEC_TYPE type)
 Initialize an existing unknown decomposition node as a submatrix node whose child is of given type. More...
 
CMR_ERROR CMRmatroiddecUpdateTwoSum (CMR *cmr, CMR_MATROID_DEC *dec, CMR_SEPA *separation)
 Initialize an existing unknown decomposition node as a 2-separation node according to the given separation. More...
 
CMR_ERROR CMRmatroiddecUpdatePivots (CMR *cmr, CMR_MATROID_DEC *dec, size_t numPivots, size_t *pivotRows, size_t *pivotColumns, CMR_CHRMAT *matrix, CMR_CHRMAT *transpose)
 Initialize an existing unknown decomposition node as a pivot node according to the given arrays of pivots. More...
 
CMR_ERROR CMRmatroiddecUpdateThreeSumInit (CMR *cmr, CMR_MATROID_DEC *dec)
 Initialize an existing unknown decomposition node as a 3-sum node. More...
 
CMR_ERROR CMRmatroiddecUpdateThreeSumCreateWideFirstChild (CMR *cmr, CMR_MATROID_DEC *dec, CMR_SEPA *separation, size_t *rowsToChild, size_t *columnsToChild, size_t numChildBaseRows, size_t numChildBaseColumns, size_t extraRow, size_t extraColumn1, size_t extraColumn2, int8_t extraEntry)
 Creates wide first child of an initialized 3-sum node. More...
 
CMR_ERROR CMRmatroiddecUpdateThreeSumCreateWideSecondChild (CMR *cmr, CMR_MATROID_DEC *dec, CMR_SEPA *separation, size_t *rowsToChild, size_t *columnsToChild, size_t numChildBaseRows, size_t numChildBaseColumns, size_t extraRow, size_t extraColumn1, size_t extraColumn2, int8_t extraEntry)
 Creates wide second child of an initialized 3-sum node. More...
 
CMR_ERROR CMRmatroiddecUpdateThreeSumCreateMixedFirstChild (CMR *cmr, CMR_MATROID_DEC *dec, CMR_SEPA *separation, size_t *rowsToChild, size_t *columnsToChild, size_t numChildBaseRows, size_t numChildBaseColumns, size_t extraRow1, size_t extraRow2, int8_t extraEntry)
 Creates mixed first child of an initialized 3-sum node. More...
 
CMR_ERROR CMRmatroiddecUpdateThreeSumCreateMixedSecondChild (CMR *cmr, CMR_MATROID_DEC *dec, CMR_SEPA *separation, size_t *rowsToChild, size_t *columnsToChild, size_t numChildBaseRows, size_t numChildBaseColumns, size_t extraColumn1, size_t extraColumn2, int8_t extraEntry)
 Creates mixed second child of an initialized 3-sum node. More...
 
CMR_ERROR CMRmatroiddecSetAttributes (CMR_MATROID_DEC *dec)
 Set regularity and (co)graphicness attributes of a decomposition tree. More...
 

Macro Definition Documentation

◆ MIN_IF_EXISTS

#define MIN_IF_EXISTS (   currentValue,
  child,
  childValue 
)
Value:
( (child != NULL) \
? ( ((childValue) < (currentValue)) ? (childValue) : (currentValue) ) \
: ( (0 < (currentValue)) ? 0 : (currentValue) ) \
)

Function Documentation

◆ CMRmatroiddecCreateChildFromMatrices()

CMR_ERROR CMRmatroiddecCreateChildFromMatrices ( CMR cmr,
CMR_MATROID_DEC parent,
size_t  childIndex,
CMR_CHRMAT matrix,
CMR_CHRMAT transpose,
CMR_ELEMENT rowsToParent,
CMR_ELEMENT columnsToParent 
)

Creates a decomposition node as a child.

Copies matrix and transpose into the node.

Parameters
cmrCMR environment.
parentParent node.
childIndexChild index of parent.
matrixThe matrix corresponding to this node.
transposeThe transpose matrix corresponding to this node.
rowsToParentArray for mapping rows to elements of parent.
columnsToParentArray for mapping columns to elements of parent.

◆ CMRmatroiddecCreateMatrixRoot()

CMR_ERROR CMRmatroiddecCreateMatrixRoot ( CMR cmr,
CMR_MATROID_DEC **  pdec,
bool  isTernary,
CMR_CHRMAT matrix 
)

Creates an unknown decomposition node as a root.

Copies matrix into the node.

Parameters
cmrCMR environment.
pdecPointer for storing the decomposition node.
isTernaryWhether we consider ternary matrices.
matrixThe matrix corresponding to this node; will be copied.

◆ CMRmatroiddecPrintChild()

CMR_ERROR CMRmatroiddecPrintChild ( CMR cmr,
CMR_MATROID_DEC child,
CMR_MATROID_DEC parent,
size_t  childIndex,
FILE *  stream,
size_t  indent,
bool  printChildren,
bool  printParentElements,
bool  printMatrices,
bool  printGraphs,
bool  printReductions,
bool  printPivots 
)

Prints the decomposition child to stream.

Parameters
cmrCMR environment.
childDecomposition node of parent.
parentDecomposition node of parent.
childIndexIndex of child as a child of parent.
streamStream to write to.
indentIndentation of this node.
printChildrenWhether to recurse.
printParentElementsWhether to print mapping of rows/columns to parent elements (if parent is not NULL).
printMatricesWhether to print matrices.
printGraphsWhether to print graphs.
printReductionsWhether to print series-parallel reductions.
printPivotsWhether to print pivots.

◆ CMRmatroiddecSetAttributes()

CMR_ERROR CMRmatroiddecSetAttributes ( CMR_MATROID_DEC dec)

Set regularity and (co)graphicness attributes of a decomposition tree.

Parameters
decDecomposition node.

◆ CMRmatroiddecSetNumChildren()

CMR_ERROR CMRmatroiddecSetNumChildren ( CMR cmr,
CMR_MATROID_DEC dec,
size_t  numChildren 
)

Sets the number of children and allocates memory accordingly.

Parameters
cmrCMR environment.
decDecomposition node.
numChildrenNumber of children.

◆ CMRmatroiddecUpdateOneSum()

CMR_ERROR CMRmatroiddecUpdateOneSum ( CMR cmr,
CMR_MATROID_DEC dec,
size_t  numChildren 
)

Initialize an existing unknown decomposition node as a 1-sum with numChildren children.

Parameters
cmrCMR environment.
decDecomposition node.
numChildrenNumber of child nodes.

◆ CMRmatroiddecUpdatePivots()

CMR_ERROR CMRmatroiddecUpdatePivots ( CMR cmr,
CMR_MATROID_DEC dec,
size_t  numPivots,
size_t *  pivotRows,
size_t *  pivotColumns,
CMR_CHRMAT matrix,
CMR_CHRMAT transpose 
)

Initialize an existing unknown decomposition node as a pivot node according to the given arrays of pivots.

The unique child node will be of type CMR_MATROID_DEC_TYPE_UNKNOWN.

Parameters
cmrCMR environment.
decDecomposition node.
numPivotsNumber of pivots.
pivotRowsArray with pivot rows.
pivotColumnsArray with pivot columns.
matrixNew matrix.
transposeTranspose of matrix.

◆ CMRmatroiddecUpdateSubmatrix()

CMR_ERROR CMRmatroiddecUpdateSubmatrix ( CMR cmr,
CMR_MATROID_DEC dec,
CMR_SUBMAT submatrix,
CMR_MATROID_DEC_TYPE  type 
)

Initialize an existing unknown decomposition node as a submatrix node whose child is of given type.

Parameters
cmrCMR environment.
decDecomposition node.
submatrixSubmatrix.
typeType of submatrix node.

◆ CMRmatroiddecUpdateThreeSumCreateMixedFirstChild()

CMR_ERROR CMRmatroiddecUpdateThreeSumCreateMixedFirstChild ( CMR cmr,
CMR_MATROID_DEC dec,
CMR_SEPA separation,
size_t *  rowsToChild,
size_t *  columnsToChild,
size_t  numChildBaseRows,
size_t  numChildBaseColumns,
size_t  extraRow1,
size_t  extraRow2,
int8_t  extraEntry 
)

Creates mixed first child of an initialized 3-sum node.

A nonzero extraEntry indicates the bottom-right nonzero entry.

Parameters
cmrCMR environment.
decDecomposition node (initialized with CMRmatroiddecUpdateThreeSumInit).
separationSeparation.
rowsToChildArray mapping rows to child rows.
columnsToChildArray mapping columns to child columns.
numChildBaseRowsNumber of base rows of this child.
numChildBaseColumnsNumber of base rows of this child.
extraRow1Index of the first extra row.
extraRow2Index of the second extra row.
extraEntrySign of the extra entry.

◆ CMRmatroiddecUpdateThreeSumCreateMixedSecondChild()

CMR_ERROR CMRmatroiddecUpdateThreeSumCreateMixedSecondChild ( CMR cmr,
CMR_MATROID_DEC dec,
CMR_SEPA separation,
size_t *  rowsToChild,
size_t *  columnsToChild,
size_t  numChildBaseRows,
size_t  numChildBaseColumns,
size_t  extraColumn1,
size_t  extraColumn2,
int8_t  extraEntry 
)

Creates mixed second child of an initialized 3-sum node.

A nonzero extraEntry indicates the top-left nonzero entry.

Parameters
cmrCMR environment.
decDecomposition node (initialized with CMRmatroiddecUpdateThreeSumInit).
separationSeparation.
rowsToChildArray mapping rows to child rows.
columnsToChildArray mapping columns to child columns.
numChildBaseRowsNumber of base rows of this child.
numChildBaseColumnsNumber of base rows of this child.
extraColumn1Index of the first extra column.
extraColumn2Index of the second extra column.
extraEntrySign of the extra entry.

◆ CMRmatroiddecUpdateThreeSumCreateWideFirstChild()

CMR_ERROR CMRmatroiddecUpdateThreeSumCreateWideFirstChild ( CMR cmr,
CMR_MATROID_DEC dec,
CMR_SEPA separation,
size_t *  rowsToChild,
size_t *  columnsToChild,
size_t  numChildBaseRows,
size_t  numChildBaseColumns,
size_t  extraRow,
size_t  extraColumn1,
size_t  extraColumn2,
int8_t  extraEntry 
)

Creates wide first child of an initialized 3-sum node.

A nonzero extraEntry indicates the bottom-right nonzero entry.

Parameters
cmrCMR environment.
decDecomposition node (initialized with CMRmatroiddecUpdateThreeSumInit).
separationSeparation.
rowsToChildArray mapping rows to child rows.
columnsToChildArray mapping columns to child columns.
numChildBaseRowsNumber of base rows of this child.
numChildBaseColumnsNumber of base rows of this child.
extraRowIndex of the extra row.
extraColumn1Index of 1st extra column.
extraColumn2Index of 2nd extra column, parallel to extraColumn1; equality is allowed.
extraEntrySign of the extra entry.

◆ CMRmatroiddecUpdateThreeSumCreateWideSecondChild()

CMR_ERROR CMRmatroiddecUpdateThreeSumCreateWideSecondChild ( CMR cmr,
CMR_MATROID_DEC dec,
CMR_SEPA separation,
size_t *  rowsToChild,
size_t *  columnsToChild,
size_t  numChildBaseRows,
size_t  numChildBaseColumns,
size_t  extraRow,
size_t  extraColumn1,
size_t  extraColumn2,
int8_t  extraEntry 
)

Creates wide second child of an initialized 3-sum node.

A nonzero extraEntry indicates the bottom-right nonzero entry.

Parameters
cmrCMR environment.
decDecomposition node (initialized with CMRmatroiddecUpdateThreeSumInit).
separationSeparation.
rowsToChildArray mapping rows to child rows.
columnsToChildArray mapping columns to child columns.
numChildBaseRowsNumber of base rows of this child.
numChildBaseColumnsNumber of base rows of this child.
extraRowIndex of the extra row.
extraColumn1Index of 1st extra column.
extraColumn2Index of 2nd extra column, parallel to extraColumn1; equality is allowed.
extraEntrySign of the extra entry, if known.

◆ CMRmatroiddecUpdateThreeSumInit()

CMR_ERROR CMRmatroiddecUpdateThreeSumInit ( CMR cmr,
CMR_MATROID_DEC dec 
)

Initialize an existing unknown decomposition node as a 3-sum node.

The two child nodes remain uninitialized.

Parameters
cmrCMR environment.
decDecomposition node.

◆ CMRmatroiddecUpdateTwoSum()

CMR_ERROR CMRmatroiddecUpdateTwoSum ( CMR cmr,
CMR_MATROID_DEC dec,
CMR_SEPA separation 
)

Initialize an existing unknown decomposition node as a 2-separation node according to the given separation.

The two child nodes will be of type CMR_MATROID_DEC_TYPE_UNKNOWN.

Parameters
cmrCMR environment.
decDecomposition node.
separation2-separation.

◆ computePivots()

static CMR_ERROR computePivots ( CMR cmr,
CMR_CHRMAT matrix,
size_t  numPivots,
size_t *  pivotRows,
size_t *  pivotColumns,
int8_t  characteristic,
CMR_CHRMAT **  presult 
)
static

◆ createNode()

static CMR_ERROR createNode ( CMR cmr,
CMR_MATROID_DEC **  pdec,
bool  isTernary,
CMR_MATROID_DEC_TYPE  type,
size_t  numRows,
size_t  numColumns 
)
static

◆ updateChildMatrix()

static CMR_ERROR updateChildMatrix ( CMR cmr,
CMR_MATROID_DEC parent,
size_t  childIndex 
)
static

Updates matrix of dec from parent using rowsParent and columnsParent arrays.

Parameters
cmrCMR environment.
parentDecomposition node.
childIndexIndex of child to update.

◆ updateRowsColumnsToChild()

static CMR_ERROR updateRowsColumnsToChild ( CMR_MATROID_DEC parent,
size_t  childIndex,
size_t *  parentRows,
size_t  firstRow,
size_t  beyondRow,
size_t *  parentColumns,
size_t  firstColumn,
size_t  beyondColumn 
)
static

Updates rowsToChild and columnsToChild of the parent.

Parameters
parentDecomposition node of parent.
childIndexAn index of a child of parent.
parentRowsArray indicating parent row of each row of the child.
firstRowFirst index of parentRows to consider.
beyondRowBeyond index of parentRows to consider.
parentColumnsArray indicating parent column of each column of the child.
firstColumnFirst index of parentColumns to consider.
beyondColumnBeyond index of parentColumns to consider.

◆ updateRowsColumnsToParent()

static CMR_ERROR updateRowsColumnsToParent ( CMR cmr,
CMR_MATROID_DEC parent,
size_t  childIndex,
size_t *  parentRows,
size_t *  parentColumns 
)
static

Allocates and sets childRowsToParent and childColumnsToParent of the child of parent indicated by childIndex.

Parameters
cmrCMR environment.
parentParent node.
childIndexChild index.
parentRowsArray indicating parent row of each row of the child.
parentColumnsArray indicating parent column of each column of the child.