**"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:

https://netlib.org/lapack/explore-html/d...

**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<float> matrix A.

**lda**: int specifies the first dimension of A.

**beta**: float scalar.

**c**: matrix<float> 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.