<Chapter><Heading> Sparse Chain complexes</Heading>

<Table Align="|l|" >


<Row>
<Item>
<Index>SparseMat</Index>
<C>SparseMat(A)</C>


<P/>
Inputs a  matrix <M>A</M> and returns the matrix in sparse format.
</Item>
</Row>

<Row>
<Item>
<Index>TransposeOfSparseMat</Index>
<C>TransposeOfSparseMat(A)</C>


<P/>
Inputs a  sparse matrix <M>A</M> and returns its transpose sparse format.
</Item>
</Row>

<Row>
<Item>
<Index>ReverseSparseMat</Index>
<C>ReverseSparseMat(A)</C>


<P/>
Inputs a  sparse matrix <M>A</M> and modifies it by reversing the order of the columns. This function modifies <M>A</M> and returns no value. 
</Item>
</Row>


<Row>
<Item>
<Index>SparseRowMult</Index>
<C>SparseRowMult(A,i,k)</C>


<P/>
Multiplies the i-th row of a sparse matrix <M>A</M> by <M>k</M>. The sparse matrix <M>A</M> is modified but nothing is returned.

</Item>
</Row>

<Row>
<Item>
<Index>SparseRowInterchange</Index>
<C>SparseRowInterchange(A,i,k)</C>


<P/>
Interchanges the i-th and j-th rows of a sparse matrix <M>A</M> by <M>k</M>. The sparse matrix <M>A</M> is modified but nothing is returned.

</Item>
</Row>

<Row>
<Item>
<Index>SparseRowAdd</Index>
<C>SparseRowAdd(A,i,j,k)</C>


<P/>
Adds <M>k</M> times the j-th row to the i-th row of a sparse matrix <M>A</M>. The sparse matrix <M>A</M> is modified but nothing is returned.

</Item>
</Row>

<Row>
<Item>
<Index>SparseSemiEchelon</Index>
<C>SparseSemiEchelon(A)</C>


<P/>
Converts a sparse matrix <M>A</M> to semi-echelon form (which means echelon form up to a permutation of rows). The sparse matrix <M>A</M> is modified but nothing is returned.

</Item>
</Row>

<Row>
<Item>
<Index>RankMatDestructive</Index>
<C>RankMatDestructive(A)</C>


<P/>
Returns the rank of a sparse matrix <M>A</M>. The sparse matrix <M>A</M> is modified during the calculation.

</Item>
</Row>

<Row>
<Item>
<Index>RankMat</Index>
<C>RankMat(A)</C>


<P/>
Returns the rank of a sparse matrix <M>A</M>. 

</Item>
</Row>

<Row>
<Item>
<Index>SparseChainComplex</Index>
<C>SparseChainComplex(Y)</C>


<P/>
Inputs a regular CW-complex <M>Y</M> and returns a sparse chain complex which is chain homotopy equivalent to the cellular chain complex of <M>Y</M>. The function uses discrete vector fields to calculate a smallish chain complex. 

</Item>
</Row>

<Row>
<Item>
<Index>SparseChainComplexOfRegularCWComplex</Index>
<C>SparseChainComplexOfRegularCWComplex(Y)</C>


<P/>
Inputs a regular CW-complex <M>Y</M> and returns its cellular chain complex as
 a sparse chain complex. The function SparseChainComplex(Y) will usually return a smaller chain complex.

</Item>
</Row>



<Row>
<Item>
<Index>SparseBoundaryMatrix</Index>
<C>SparseBoundaryMatrix(C,n)</C>


<P/>
Inputs a sparse chain complex <M>C</M> and integer <M>n</M>.  Returns the n-th boundary matrix of the chain complex in sparse format.  

</Item>
</Row>

<Row>
<Item>
<Index>Bettinumbers</Index>
<C>Bettinumbers(C,n)</C>


<P/>
Inputs a sparse chain complex <M>C</M> and integer <M>n</M>.  Returns the n-th Netti number of the chain complex.

</Item>
</Row>








</Table>
</Chapter>


