FunctionLAPACKdsyrkLibrary   "FunctionLAPACKdsyrk" 
subroutine part of LAPACK: Linear Algebra Package, 
performs one of the symmetric rank k operations
.
C := alpha*A*A**T + beta*C,   or    C := alpha*A**T*A + beta*C,
.
where alpha and beta are scalars, C is an n by n symmetric matrix
and A is an n by k matrix in the first case and a k by n matrix
in the second case.
.
reference:
netlib.org
 dsyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc) 
  performs one of the symmetric rank k operations
.
C := alpha*A*A**T + beta*C,   or    C := alpha*A**T*A + beta*C,
.
where alpha and beta are scalars, C is an n by n symmetric matrix
and A is an n by k matrix in the first case and a k by n matrix
in the second case.
.
  Parameters:
     uplo : string        specifies whether the upper or lower triangular part of 
the array C  is to be  referenced  as follows:
UPLO = 'U' or 'u'   Only the upper triangular part of  C is to be referenced.
UPLO = 'L' or 'l'   Only the lower triangular part of C is to be referenced.
.
     trans : string        specifies the operation to be performed as follows:
TRANS = 'N' or 'n'   C := alpha*A*A**T + beta*C.
TRANS = 'T' or 't'   C := alpha*A**T*A + beta*C.
TRANS = 'C' or 'c'   C := alpha*A**T*A + beta*C.
.
     n : int           specifies the order of the matrix C. N must be at least zero.
     k : int           On entry with:
TRANS = 'N' or 'n', K specifies the number of  columns   of  the   matrix   A.
TRANS = 'T' or 't' or 'C' or 'c',  K  specifies  the  number of rows of the matrix  A.  
K must be at least zero.
.
     alpha : float         scalar.
     a : matrix matrix A.
     lda : int           specifies the first dimension of A.
     beta : float         scalar.
     c : matrix matrix C, is overwritten by the lower triangular part of the updated matrix.
     ldc : int           specifies the first dimension of C
  Returns: void, C is overwritten by the lower triangular part of the updated matrix.
Solve
FunctionLAPACKdtrsmLibrary   "FunctionLAPACKdtrsm" 
subroutine in the LAPACK:linear algebra package, used to solve one of the following matrix equations:
op( A )*X = alpha*B,   or   X*op( A ) = alpha*B,
where alpha is a scalar, X and B are m by n matrices, A is a unit, or
non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
op( A ) = A   or   op( A ) = A**T.
The matrix X is overwritten on B.
reference:
netlib.org
 dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb) 
  solves one of the matrix equations
op( A )*X = alpha*B,   or   X*op( A ) = alpha*B,
where alpha is a scalar, X and B are m by n matrices, A is a unit, or
non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
op( A ) = A   or   op( A ) = A**T.
The matrix X is overwritten on B.
  Parameters:
     side : string       , On entry, SIDE specifies whether op( A ) appears on the left or right of X as follows:
SIDE = 'L' or 'l'   op( A )*X = alpha*B.
SIDE = 'R' or 'r'   X*op( A ) = alpha*B.
     uplo : string       , specifies whether the matrix A is an upper or lower triangular matrix as follows:
UPLO = 'U' or 'u'   A is an upper triangular matrix.
UPLO = 'L' or 'l'   A is a lower triangular matrix.
     transa : string       , specifies the form of op( A ) to be used in the matrix multiplication as follows:
TRANSA = 'N' or 'n'   op( A ) = A.
TRANSA = 'T' or 't'   op( A ) = A**T.
TRANSA = 'C' or 'c'   op( A ) = A**T.
     diag : string       , specifies whether or not A is unit triangular as follows:
DIAG = 'U' or 'u'   A is assumed to be unit triangular.
DIAG = 'N' or 'n'   A is not assumed to be unit triangular.
     m : int          , the number of rows of B. M must be at least zero.
     n : int          , the number of columns of B. N must be at least zero.
     alpha : float        , specifies the scalar alpha. When alpha is zero then A is not referenced and B need not be set before entry.
     a : matrix, Triangular matrix.
     lda : int          , specifies the first dimension of A.
     b : matrix, right-hand side matrix B, and on exit is overwritten by the solution matrix X.
     ldb : int          , specifies the first dimension of B.
  Returns: void, modifies matrix b.
usage:
dtrsm ('L', 'U', 'N', 'N', 5, 3, 1.0, a, 7, b, 6)

