int ldlt_decompose( double **input, // the input matrix
		    double **l, // the lower triangular matrix of the decomposition
		    double *d, // the vector of diagonal elements
		    double *tmp, // a temporary vector
		    int n ) // the dimensionality of everything.
  ;

int ldlt_solve_vector( double **l, // the lower triangular matrix of the decomposition
		       double *d, // the vector of diagonal elements
		       double *input, // the input vector
		       double *output, // the output vector
		       double *tmp, // a temporary vector
		       int n ) // the dimensionality of everything.
  ;

int ldlt_solve_matrix( double **l, // the lower triangular matrix of the decomposition
		       double *d, // the vector of diagonal elements
		       double **input, // the input matrix
		       double **output, // the output matrix
		       double *tmp, // a temporary vector
		       int n, // the dimensionality of everything except ....
		       int n_columns ) // the number of columns in the input matrix.
  ;
