These functions compute the matrix-matrix product and sum C =
\alpha A B + \beta C for Side is CblasLeft and C =
\alpha B A + \beta C for Side is CblasRight, where the
matrix A is symmetric. When Uplo is CblasUpper then
the upper triangle and diagonal of A are used, and when Uplo
is CblasLower then the lower triangle and diagonal of A are
used.

These functions compute the matrix-matrix product and sum C =
\alpha A B + \beta C for Side is CblasLeft and C =
\alpha B A + \beta C for Side is CblasRight, where the
matrix A is hermitian. When Uplo is CblasUpper then
the upper triangle and diagonal of A are used, and when Uplo
is CblasLower then the lower triangle and diagonal of A are
used. The imaginary elements of the diagonal are automatically set to
zero.

These functions compute the matrix-matrix product B = \alpha op(A)
B for Side is CblasLeft and B = \alpha B op(A) for
Side is CblasRight. The matrix A is triangular and
op(A) = A, A^T, A^H for TransA =
CblasNoTrans, CblasTrans, CblasConjTrans. When
Uplo is CblasUpper then the upper triangle of A is
used, and when Uplo is CblasLower then the lower triangle
of A is used. If Diag is CblasNonUnit then the
diagonal of A is used, but if Diag is CblasUnit then
the diagonal elements of the matrix A are taken as unity and are
not referenced.

These functions compute the inverse-matrix matrix product
B = \alpha op(inv(A))B for Side is
CblasLeft and B = \alpha B op(inv(A)) for
Side is CblasRight. The matrix A is triangular and
op(A) = A, A^T, A^H for TransA =
CblasNoTrans, CblasTrans, CblasConjTrans. When
Uplo is CblasUpper then the upper triangle of A is
used, and when Uplo is CblasLower then the lower triangle
of A is used. If Diag is CblasNonUnit then the
diagonal of A is used, but if Diag is CblasUnit then
the diagonal elements of the matrix A are taken as unity and are
not referenced.

These functions compute a rank-k update of the symmetric matrix C,
C = \alpha A A^T + \beta C when Trans is
CblasNoTrans and C = \alpha A^T A + \beta C when
Trans is CblasTrans. Since the matrix C is symmetric
only its upper half or lower half need to be stored. When Uplo is
CblasUpper then the upper triangle and diagonal of C are
used, and when Uplo is CblasLower then the lower triangle
and diagonal of C are used.

These functions compute a rank-k update of the hermitian matrix C,
C = \alpha A A^H + \beta C when Trans is
CblasNoTrans and C = \alpha A^H A + \beta C when
Trans is CblasConjTrans. Since the matrix C is hermitian
only its upper half or lower half need to be stored. When Uplo is
CblasUpper then the upper triangle and diagonal of C are
used, and when Uplo is CblasLower then the lower triangle
and diagonal of C are used. The imaginary elements of the
diagonal are automatically set to zero.

These functions compute a rank-2k update of the symmetric matrix C,
C = \alpha A B^T + \alpha B A^T + \beta C when Trans is
CblasNoTrans and C = \alpha A^T B + \alpha B^T A + \beta C when
Trans is CblasTrans. Since the matrix C is symmetric
only its upper half or lower half need to be stored. When Uplo is
CblasUpper then the upper triangle and diagonal of C are
used, and when Uplo is CblasLower then the lower triangle
and diagonal of C are used.

These functions compute a rank-2k update of the hermitian matrix C,
C = \alpha A B^H + \alpha^* B A^H + \beta C when Trans is
CblasNoTrans and C = \alpha A^H B + \alpha^* B^H A + \beta C when
Trans is CblasConjTrans. Since the matrix C is hermitian
only its upper half or lower half need to be stored. When Uplo is
CblasUpper then the upper triangle and diagonal of C are
used, and when Uplo is CblasLower then the lower triangle
and diagonal of C are used. The imaginary elements of the
diagonal are automatically set to zero.