Visible to Intel only — GUID: GUID-92482E77-3157-416C-990D-25243005DE7A
Visible to Intel only — GUID: GUID-92482E77-3157-416C-990D-25243005DE7A
?ormtr
Multiplies a real matrix by the real orthogonal matrix Q determined by ?sytrd.
lapack_int LAPACKE_sormtr (int matrix_layout, char side, char uplo, char trans, lapack_int m, lapack_int n, const float* a, lapack_int lda, const float* tau, float* c, lapack_int ldc);
lapack_int LAPACKE_dormtr (int matrix_layout, char side, char uplo, char trans, lapack_int m, lapack_int n, const double* a, lapack_int lda, const double* tau, double* c, lapack_int ldc);
- mkl.h
The routine multiplies a real matrix C by Q or QT, where Q is the orthogonal matrix Q formed by sytrd when reducing a real symmetric matrix A to tridiagonal form: A = Q*T*QT. Use this routine after a call to ?sytrd.
Depending on the parameters side and trans, the routine can form one of the matrix products Q*C, QT*C, C*Q, or C*QT (overwriting the result on C).
In the descriptions below, r denotes the order of Q:
If side = 'L', r = m; if side = 'R', r = n.
- matrix_layout
-
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- side
-
Must be either 'L' or 'R'.
If side = 'L', Q or QT is applied to C from the left.
If side = 'R', Q or QT is applied to C from the right.
- uplo
-
Must be 'U' or 'L'.
Use the same uplo as supplied to ?sytrd.
- trans
-
Must be either 'N' or 'T'.
If trans = 'N', the routine multiplies C by Q.
If trans = 'T', the routine multiplies C by QT.
- m
-
The number of rows in the matrix C (m≥ 0).
- n
-
The number of columns in C (n≥ 0).
- a, c, tau
-
a (size max(1, lda*r)) and tau are the arrays returned by ?sytrd.
The size of tau must be at least max(1, r-1).
c(size max(1, ldc*n) for column major layout and max(1, ldc*m) for row major layout) contains the matrix C.
- lda
-
The leading dimension of a; lda≥ max(1, r).
- ldc
-
The leading dimension of c; ldc≥ max(1, m) for column major layout and at least max(1, n) for row major layout .
- c
-
Overwritten by the product Q*C, QT*C, C*Q, or C*QT (as specified by side and trans).
This function returns a value info.
If info=0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.
The computed product differs from the exact product by a matrix E such that ||E||2 = O(ε)*||C||2.
The total number of floating-point operations is approximately 2*m2*n, if side = 'L', or 2*n2*m, if side = 'R'.
The complex counterpart of this routine is unmtr.