Visible to Intel only — GUID: GUID-2A5865AA-311A-45B9-B700-E88557CA000A
Visible to Intel only — GUID: GUID-2A5865AA-311A-45B9-B700-E88557CA000A
?lasr
Applies a sequence of plane rotations to a general rectangular matrix.
call slasr( side, pivot, direct, m, n, c, s, a, lda )
call dlasr( side, pivot, direct, m, n, c, s, a, lda )
call clasr( side, pivot, direct, m, n, c, s, a, lda )
call zlasr( side, pivot, direct, m, n, c, s, a, lda )
- mkl.fi
The routine applies a sequence of plane rotations to a real/complex matrix A, from the left or the right.
A := P*A, when side = 'L' ( Left-hand side )
A := A*P', when side = 'R' ( Right-hand side )
where P is an orthogonal matrix consisting of a sequence of plane rotations with z = m when side = 'L' and z = n when side = 'R'.
When direct = 'F' (Forward sequence), then
P = P(z-1)*...P(2)*P(1),
and when direct = 'B' (Backward sequence), then
P = P(1)*P(2)*...*P(z-1),
where P( k ) is a plane rotation matrix defined by the 2-by-2 plane rotation:
![Equation](/content/dam/docs/us/en/developer-reference-fortran/2023-0/0F300D7C-62D0-4521-B494-9C3B34D20C78-low.gif)
When pivot = 'V' ( Variable pivot ), the rotation is performed for the plane (k, k + 1), that is, P(k) has the form
![Equation](/content/dam/docs/us/en/developer-reference-fortran/2023-0/37F71DD6-A318-46B6-BA21-EA3355F9D4E6-low.jpg)
where R(k) appears as a rank-2 modification to the identity matrix in rows and columns k and k+1.
When pivot = 'T' ( Top pivot ), the rotation is performed for the plane (1,k+1), so P(k) has the form
![Equation](/content/dam/docs/us/en/developer-reference-fortran/2023-0/7A7BD562-0166-44FE-9FCF-A1833EF77FEF-low.gif)
where R(k) appears in rows and columns k and k+1.
Similarly, when pivot = 'B' ( Bottom pivot ), the rotation is performed for the plane (k,z), giving P(k) the form
![Equation](/content/dam/docs/us/en/developer-reference-fortran/2023-0/6890CBF6-F285-4524-AA58-DCF5068D68DE-low.gif)
where R(k) appears in rows and columns k and z. The rotations are performed without ever forming P(k) explicitly.
- side
-
CHARACTER*1. Specifies whether the plane rotation matrix P is applied to A on the left or the right.
= 'L': left, compute A := P*A
= 'R': right, compute A:= A*P'
- direct
-
CHARACTER*1. Specifies whether P is a forward or backward sequence of plane rotations.
= 'F': forward, P = P(z-1)*...*P(2)*P(1)
= 'B': backward, P = P(1)*P(2)*...*P(z-1)
- pivot
-
CHARACTER*1. Specifies the plane for which P(k) is a plane rotation matrix.
= 'V': Variable pivot, the plane (k, k+1)
= 'T': Top pivot, the plane (1, k+1)
= 'B': Bottom pivot, the plane (k, z)
- m
-
INTEGER. The number of rows of the matrix A.
If m ≤ 1, an immediate return is effected.
- n
-
INTEGER. The number of columns of the matrix A.
If n ≤ 1, an immediate return is effected.
- c, s
-
REAL for slasr/clasr
DOUBLE PRECISION for dlasr/zlasr.
Arrays, DIMENSION
(m-1) if side = 'L',
(n-1) if side = 'R' .
c(k) and s(k) contain the cosine and sine of the plane rotations respectively that define the 2-by-2 plane rotation part (R(k)) of the P(k) matrix as described above in Description.
- a
-
REAL for slasr
DOUBLE PRECISION for dlasr
COMPLEX for clasr
DOUBLE COMPLEX for zlasr.
Array, DIMENSION (lda, n).
The m-by-n matrix A.
- lda
-
INTEGER. The leading dimension of the array a.
lda≥ max(1,m).
- a
-
On exit, A is overwritten by P*A if side = 'R', or by A*P' if side = 'L'.