## Version 1.0.0

Given a sparse matrix $A$, this subroutine computes the sparse matrix ${A}^{T}A$. Three forms of data storage are permitted for the input matrix: storage by columns, where the row indices and column pointers describe the matrix; storage by rows, where the column indices and row pointers describe the matrix; and the coordinate scheme, where both row and column indices describe the position of entries in the matrix.