Intel® oneAPI Math Kernel Library Developer Reference - Fortran
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 )
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:
When pivot = 'V' ( Variable pivot ), the rotation is performed for the plane (k, k + 1), that is, P(k) has the form
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
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
where R(k) appears in rows and columns k and z. The rotations are performed without ever forming P(k) explicitly.
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'
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)
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)
INTEGER. The number of rows of the matrix A.
If m ≤ 1, an immediate return is effected.
INTEGER. The number of columns of the matrix A.
If n ≤ 1, an immediate return is effected.
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.
REAL for slasr
DOUBLE PRECISION for dlasr
COMPLEX for clasr
DOUBLE COMPLEX for zlasr.
Array, DIMENSION (lda, n).
The m-by-n matrix A.
INTEGER. The leading dimension of the array a.
lda≥ max(1,m).
On exit, A is overwritten by P*A if side = 'R', or by A*P' if side = 'L'.