| Procedure | Location | Procedure Type | Description | 
|---|---|---|---|
| ActivateLogger | LoggingModule | Subroutine | Activate the logger.  | 
| AddSparseVectors | SVectorModule | Interface | |
| AppendToTripletList | TripletListModule | Interface | |
| CGSolver | LinearSolversModule | Subroutine | Solve the matrix equation AX = B using the conjugate gradient method.  | 
| CheckAllocError | ErrorModule | Function | Routine to call if an alloc error has occurred.  | 
| CheckMemoryPoolValidity | PMatrixMemoryPoolModule | Interface | |
| CheckMemoryPoolValidity | MatrixMemoryPoolModule | Interface | |
| CheckMPIError | ErrorModule | Function | Routine to call to check if an MPI error has occurred.  | 
| Cleanup | ErrorModule | Subroutine | As a last case resort, this will print an error message and quit.  | 
| CommSplitMatrix | PSMatrixModule | Interface | |
| CompareTriplets | TripletModule | Interface | |
| ComposeMatrix | SMatrixModule | Interface | |
| ComposeMatrix | DMatrixModule | Interface | |
| ComposeMatrixColumns | SMatrixModule | Interface | |
| Compute | ChebyshevSolversModule | Interface | |
| Compute | HermiteSolversModule | Interface | |
| Compute | PolynomialSolversModule | Interface | |
| ComputeExponential | ExponentialSolversModule | Subroutine | Compute the exponential of a matrix.  | 
| ComputeExponentialPade | ExponentialSolversModule | Subroutine | Compute the exponential of a matrix using a pade approximation. Be warned, the pade method can result in a lot of intermediate fill.  | 
| ComputeExponentialTaylor | ExponentialSolversModule | Subroutine | Compute the exponential of a matrix using a taylor series expansion. This is only really useful if you have a very small spectrum, because quite a bit of scaling is required.  | 
| ComputeInverseRoot | RootSolversModule | Subroutine | Compute a general inverse matrix root.  | 
| ComputeLogarithm | ExponentialSolversModule | Subroutine | Compute the logarithm of a matrix.  | 
| ComputeLogarithmTaylor | ExponentialSolversModule | Subroutine | Compute the logarithm of a matrix using a taylor series expansion.  | 
| ComputeRoot | RootSolversModule | Subroutine | Compute a general matrix root.  | 
| ConjugateMatrix | SMatrixModule | Interface | |
| ConjugateMatrix | PSMatrixModule | Interface | |
| ConstructDefaultPermutation | PermutationModule | Subroutine | Constructs a permutation that preserves the original order.  | 
| ConstructEmptyMatrix | SMatrixModule | Interface | |
| ConstructEmptyMatrix | DMatrixModule | Interface | |
| ConstructEmptyMatrix | PSMatrixModule | Interface | |
| ConstructError | ErrorModule | Subroutine | Default constructor for an error type.  | 
| ConstructLimitedRandomPermutation | PermutationModule | Subroutine | Constructs a permutation that has a random order, but there is no permutation from beyond the actual matrix dimension.  | 
| ConstructMatrixDFromS | DMatrixModule | Interface | |
| ConstructMatrixFromBinary | PSMatrixModule | Interface | |
| ConstructMatrixFromFile | SMatrixModule | Interface | |
| ConstructMatrixFromMatrixMarket | PSMatrixModule | Interface | |
| ConstructMatrixFromTripletList | SMatrixModule | Interface | |
| ConstructMatrixMemoryPool | MatrixMemoryPoolModule | Interface | |
| ConstructMatrixSFromD | DMatrixModule | Interface | |
| ConstructNewProcessGrid | ProcessGridModule | Interface | |
| ConstructPolynomial | ChebyshevSolversModule | Interface | |
| ConstructPolynomial | HermiteSolversModule | Interface | |
| ConstructPolynomial | PolynomialSolversModule | Interface | |
| ConstructProcessGrid | ProcessGridModule | Interface | |
| ConstructRandomPermutation | PermutationModule | Subroutine | Constructs a permutation that has a random order. Implements Knuth shuffle.  | 
| ConstructReversePermutation | PermutationModule | Subroutine | Constructs a permutation that reverses the original order.  | 
| ConstructTripletList | TripletListModule | Interface | |
| ConvertMatrixToComplex | PSMatrixModule | Subroutine | Converts the current matrix to a complex type matrix.  | 
| ConvertMatrixToReal | PSMatrixModule | Subroutine | Converts the current matrix to a real type matrix.  | 
| ConvertMatrixType | SMatrixModule | Interface | |
| ConvertTripletListType | TripletListModule | Interface | |
| ConvertTripletType | TripletModule | Interface | |
| CopyMatrix | SMatrixModule | Interface | |
| CopyMatrix | DMatrixModule | Interface | |
| CopyMatrix | PSMatrixModule | Interface | |
| CopyProcessGrid | ProcessGridModule | Subroutine | Copy a process grid. Note that this makes a complete and independent copy of the process grid. Which of course means that whatever is currently stored in new_grid will be destroyed, so do not leave any matrices pointing to it.  | 
| Cosine | TrigonometrySolversModule | Subroutine | Compute the cosine of a matrix.  | 
| DeactivateLogger | LoggingModule | Subroutine | Deactivate the logger.  | 
| DestructMatrix | SMatrixModule | Interface | |
| DestructMatrix | DMatrixModule | Interface | |
| DestructMatrix | PSMatrixModule | Interface | |
| DestructMatrixMemoryPool | PMatrixMemoryPoolModule | Interface | |
| DestructMatrixMemoryPool | MatrixMemoryPoolModule | Interface | |
| DestructPermutation | PermutationModule | Subroutine | Destruct a permutation object.  | 
| DestructPolynomial | ChebyshevSolversModule | Interface | |
| DestructPolynomial | HermiteSolversModule | Interface | |
| DestructPolynomial | PolynomialSolversModule | Interface | |
| DestructProcessGrid | ProcessGridModule | Subroutine | Destruct a process grid. Be careful about doing this. Matrices have pointers to process grids. If you destruct a process grid without destructing the matrices pointing to it, they will become unusable.  | 
| DestructSolverParameters | SolverParametersModule | Subroutine | Cleanup the solver parameters datastructure.  | 
| DestructTripletList | TripletListModule | Interface | |
| DotMatrix | SMatrixAlgebraModule | Interface | |
| DotMatrix | PSMatrixAlgebraModule | Interface | |
| DotSparseVectors | SVectorModule | Interface | |
| EnergyDensityMatrix | DensityMatrixSolversModule | Subroutine | Compute the energy-weighted density matrix.  | 
| EnterSubLog | LoggingModule | Subroutine | Call this subroutine when you enter into a section with verbose output  | 
| ErrorOccurred | ErrorModule | Function | Check if an error has occurred or not.  | 
| ExitSubLog | LoggingModule | Subroutine | Call this subroutine when you exit a section with verbose output  | 
| ExtractMatrixColumn | SMatrixModule | Interface | |
| ExtractMatrixRow | SMatrixModule | Interface | |
| FactorizedCompute | ChebyshevSolversModule | Interface | |
| FactorizedCompute | PolynomialSolversModule | Interface | |
| FillMatrixFromTripletList | PSMatrixModule | Interface | |
| FillMatrixIdentity | PSMatrixModule | Interface | |
| FillMatrixPermutation | PSMatrixModule | Interface | |
| FilterMatrix | PSMatrixModule | Interface | |
| GatherMatrixToProcess | PSMatrixModule | Interface | |
| GershgorinBounds | EigenBoundsModule | Subroutine | Compute a bounds on the minimum and maximum eigenvalue of a matrix. Uses the Gershgorin theorem.  | 
| GetMatrixActualDimension | PSMatrixModule | Interface | |
| GetMatrixBlock | PSMatrixModule | Interface | |
| GetMatrixColumns | SMatrixModule | Interface | |
| GetMatrixLoadBalance | PSMatrixModule | Interface | |
| GetMatrixLogicalDimension | PSMatrixModule | Interface | |
| GetMatrixRows | SMatrixModule | Interface | |
| GetMatrixSize | PSMatrixModule | Interface | |
| GetMatrixSlice | PSMatrixModule | Subroutine | Copy an arbitrary slice from a matrix into a new smaller matrix. NTPoly only works with square matrices, so if the number of rows and columns is different the matrix is resized to the maximum size.  | 
| GetMatrixTripletList | PSMatrixModule | Interface | |
| GetMPITripletType_c | TripletModule | Function | Returns an MPI Derived Data Type For A Triplet. We statically store this derived type so that we do not have to recreate it every time this function is called. Thus this functional call should add very little overhead.  | 
| GetMPITripletType_r | TripletModule | Function | Returns an MPI Derived Data Type For A Triplet. We statically store this derived type so that we do not have to recreate it every time this function is called. Thus this functional call should add very little overhead.  | 
| GetMyColumn | ProcessGridModule | Function | Get the column of the current process.  | 
| GetMyRow | ProcessGridModule | Function | Get the row of the current process.  | 
| GetMySlice | ProcessGridModule | Function | Get the slice of the current process.  | 
| GetTripletAt | TripletListModule | Interface | |
| GetTripletListSize | TripletListModule | Interface | |
| GetTripletValues | TripletModule | Interface | |
| HPCP | DensityMatrixSolversModule | Subroutine | Compute the density matrix from a Hamiltonian using the HPCP method. Based on the algorithm presented in \cite truflandier2016communication.  | 
| IncrementMatrix | SMatrixAlgebraModule | Interface | |
| IncrementMatrix | DMatrixModule | Interface | |
| IncrementMatrix | PSMatrixAlgebraModule | Interface | |
| InverseSquareRoot | SquareRootSolversModule | Subroutine | Compute the inverse square root of a matrix.  | 
| Invert | InverseSolversModule | Subroutine | Compute the inverse of a matrix. An implementation of the method of Hotelling \cite palser1998canonical.  | 
| IsRoot | ProcessGridModule | Function | Check if the current process is the root process.  | 
| LowdinExtrapolate | GeometryOptimizationModule | Subroutine | Create a new guess at the Density Matrix after updating the geometry. Based on the lowdin algorithm in \cite exner2002comparison .  | 
| MapMatrix_psc | MatrixMapsModule | Subroutine | Given a distributed matrix, apply this procedure to each element (complex).  | 
| MapMatrix_psr | MatrixMapsModule | Subroutine | Given a distributed matrix, apply this procedure to each element (real).  | 
| MapTripletList | MatrixMapsModule | Interface | |
| Matrix_ldc | DMatrixModule | Interface | |
| Matrix_ldr | DMatrixModule | Interface | |
| Matrix_lsc | SMatrixModule | Interface | |
| Matrix_lsr | SMatrixModule | Interface | |
| MatrixColumnNorm | SMatrixAlgebraModule | Interface | |
| MatrixGrandSum | SMatrixAlgebraModule | Interface | |
| MatrixGrandSum | PSMatrixAlgebraModule | Interface | |
| MatrixMemoryPool_lc | MatrixMemoryPoolModule | Interface | |
| MatrixMemoryPool_lr | MatrixMemoryPoolModule | Interface | |
| MatrixMemoryPool_p | PMatrixMemoryPoolModule | Interface | |
| MatrixMultiply | SMatrixAlgebraModule | Interface | |
| MatrixMultiply | PSMatrixAlgebraModule | Interface | |
| MatrixNorm | SMatrixAlgebraModule | Interface | |
| MatrixNorm | DMatrixModule | Interface | |
| MatrixNorm | PSMatrixAlgebraModule | Interface | |
| MatrixSigma | PSMatrixAlgebraModule | Interface | |
| MatrixToTripletList | SMatrixModule | Interface | |
| MatrixTrace | PSMatrixAlgebraModule | Interface | |
| MergeMatrixLocalBlocks | PSMatrixModule | Interface | |
| MultiplyMatrix | DMatrixModule | Interface | |
| PairwiseMultiplyMatrix | SMatrixAlgebraModule | Interface | |
| PairwiseMultiplyMatrix | PSMatrixAlgebraModule | Interface | |
| PairwiseMultiplyVectors | SVectorModule | Interface | |
| ParseMMHeader | MatrixMarketModule | Function | Parse a matrix market header.  | 
| PermuteMatrix | LoadBalancerModule | Subroutine | Apply a permutation to a matrix.  | 
| PM | DensityMatrixSolversModule | Subroutine | Compute the density matrix from a Hamiltonian using the PM method. Based on the PM algorithm presented in \cite palser1998canonical  | 
| PolarDecomposition | SignSolversModule | Subroutine | Computes the polar decomposition of a matrix Mat = U*H.  | 
| PowerBounds | EigenBoundsModule | Subroutine | Compute a bounds on the maximum eigenvalue of a matrix. Uses The Power Method.  | 
| PrintAllTimers | TimerModule | Subroutine | Print out the elapsed time for each timer on this process.  | 
| PrintAllTimersDistributed | TimerModule | Subroutine | Print out the elapsed time for each timer based on the max value across processes.  | 
| PrintError | ErrorModule | Subroutine | Print out that an error has occurred.  | 
| PrintMatrix | SMatrixModule | Interface | |
| PrintMatrix | PSMatrixModule | Interface | |
| PrintMatrixInformation | PSMatrixModule | Interface | |
| PrintParameters | SolverParametersModule | Subroutine | Print out the iterative solver parameter values.  | 
| PrintTimer | TimerModule | Subroutine | Print out the elapsed time for a given timer.  | 
| PseudoInverse | InverseSolversModule | Subroutine | Compute the pseudoinverse of a matrix. An implementation of the method of Hotelling \cite palser1998canonical.  | 
| PurificationExtrapolate | GeometryOptimizationModule | Subroutine | Create a new guess at the Density Matrix after updating the geometry. Based on the purification algorithm in \cite niklasson2010trace .  | 
| RedistributeTripletLists | TripletListModule | Interface | |
| ReduceAndComposeMatrixCleanup | MatrixReduceModule | Interface | |
| ReduceAndComposeMatrixData | MatrixReduceModule | Interface | |
| ReduceAndComposeMatrixSizes | MatrixReduceModule | Interface | |
| ReduceAndSumMatrixCleanup | MatrixReduceModule | Interface | |
| ReduceAndSumMatrixData | MatrixReduceModule | Interface | |
| ReduceAndSumMatrixSizes | MatrixReduceModule | Interface | |
| RegisterTimer | TimerModule | Subroutine | Register a timer with the timer module. Call this before using that timer.  | 
| ResizeMatrix | PSMatrixModule | Subroutine | Change the size of a matrix. If the new size is smaller, then values outside that range are deleted. IF the new size is bigger, zero padding is applied. Warning: this requires a full data redistribution.  | 
| ResizeTripletList | TripletListModule | Interface | |
| ScaleAndFold | DensityMatrixSolversModule | Subroutine | Compute the density matrix from a Hamiltonian using the Scale and Fold method. Based on the method of \cite rubensson2011nonmonotonic . Note that for this method, you must provide the value of the homo and lumo gap. It is not necessary for these to be accurate, but give a conservative value.  | 
| ScaleMatrix | SMatrixAlgebraModule | Interface | |
| ScaleMatrix | PSMatrixAlgebraModule | Interface | |
| ScaleSquareTrigonometryTaylor | TrigonometrySolversModule | Subroutine | Compute trigonometric functions of a matrix using a taylor series.  | 
| SetCoefficient | ChebyshevSolversModule | Interface | |
| SetCoefficient | HermiteSolversModule | Interface | |
| SetCoefficient | PolynomialSolversModule | Interface | |
| SetGenericError | ErrorModule | Subroutine | Routine to call if a generic error has occurred.  | 
| SetMatrixProcessGrid | PSMatrixModule | Subroutine | When you want to change the process grid of a matrix, you can call this routine with the new process grid value. Data will be automatically redistributed.  | 
| SetParametersBeVerbose | SolverParametersModule | Subroutine | Set the value of the verbosity.  | 
| SetParametersConvergeDiff | SolverParametersModule | Subroutine | Set the value of the convergence difference.  | 
| SetParametersLoadBalance | SolverParametersModule | Subroutine | Set the value of the load balance.  | 
| SetParametersMaxIterations | SolverParametersModule | Subroutine | Set the value of the max iterations.  | 
| SetParametersThreshold | SolverParametersModule | Subroutine | Set the value of the threshold.  | 
| SetPoolSparsity | MatrixMemoryPoolModule | Interface | |
| SetTriplet | TripletModule | Interface | |
| SetTripletAt | TripletListModule | Interface | |
| ShiftTripletList | TripletListModule | Interface | |
| SignFunction | SignSolversModule | Subroutine | Computes the matrix sign function.  | 
| Sine | TrigonometrySolversModule | Subroutine | Compute the sine of a matrix.  | 
| SolverParameters_t | SolverParametersModule | Interface | |
| SortTripletList | TripletListModule | Interface | |
| SplitMatrix | SMatrixModule | Interface | |
| SplitMatrix | DMatrixModule | Interface | |
| SplitMatrixColumns | SMatrixModule | Interface | |
| SplitMatrixToLocalBlocks | PSMatrixModule | Interface | |
| SplitProcessGrid | ProcessGridModule | Subroutine | Given a process grid, this splits it into two grids of even size  | 
| SquareRoot | SquareRootSolversModule | Subroutine | Compute the square root of a matrix.  | 
| StartTimer | TimerModule | Subroutine | Start the clock running for a given timer.  | 
| StopTimer | TimerModule | Subroutine | Stop the clock for a given timer.  | 
| SymmetrizeTripletList | TripletListModule | Interface | |
| TestReduceDataRequest | MatrixReduceModule | Function | Test if a request for the data of the matrices is complete.  | 
| TestReduceInnerRequest | MatrixReduceModule | Function | Test if a request for the inner indices of the matrices is complete.  | 
| TestReduceSizeRequest | MatrixReduceModule | Function | Test if a request for the size of the matrices is complete.  | 
| TransposeMatrix | SMatrixModule | Interface | |
| TransposeMatrix | DMatrixModule | Interface | |
| TransposeMatrix | PSMatrixModule | Interface | |
| TripletList_c | TripletListModule | Interface | |
| TripletList_r | TripletListModule | Interface | |
| TRS2 | DensityMatrixSolversModule | Subroutine | Compute the density matrix from a Hamiltonian using the TRS2 method. Based on the TRS2 algorithm presented in \cite niklasson2002.  | 
| TRS4 | DensityMatrixSolversModule | Subroutine | Compute the density matrix from a Hamiltonian using the TRS4 method. Based on the TRS4 algorithm presented in \cite niklasson2002  | 
| UndoPermuteMatrix | LoadBalancerModule | Subroutine | Undo a permutation applied to a matrix.  | 
| WriteCitation | LoggingModule | Subroutine | Write out a citation element.  | 
| WriteElement | LoggingModule | Interface | |
| WriteHeader | LoggingModule | Subroutine | Write out a header to the log.  | 
| WriteListElement | LoggingModule | Interface | |
| WriteMatrixToBinary | PSMatrixModule | Interface | |
| WriteMatrixToMatrixMarket | PSMatrixModule | Interface | |
| WriteMMLine | MatrixMarketModule | Interface | |
| WriteMMLine_f | MatrixMarketModule | Subroutine | Write a single line that would correspond to a matrix market entry.  | 
| WriteMMLine_ff | MatrixMarketModule | Subroutine | Write a single line that would correspond to a matrix market entry.  | 
| WriteMMLine_ii | MatrixMarketModule | Subroutine | Write a single line that would correspond to a matrix market entry.  | 
| WriteMMLine_iif | MatrixMarketModule | Subroutine | Write a single line that would correspond to a matrix market entry.  | 
| WriteMMLine_iiff | MatrixMarketModule | Subroutine | Write a single line that would correspond to a matrix market entry.  | 
| WriteMMSize | MatrixMarketModule | Subroutine | Write the line describing the size of the matrix  |