(S|D)ROTMG

Single and double ROTMG.

Description

Generate a single modified plane rotation.

H *
\left[
    \begin{array}{c}
        \sqrt{D_1}\mult X_1 \\
        \sqrt{D_2}\mult Y_1
    \end{array}
\right]
=
\left[
    \begin{array}{c}
        R \\
        0
    \end{array}
\right]

The form of the generated rotation matrix H will depend on FLAG which is the first element of the PARAM input array.

\fvar{PARAM} =
\left[
    \begin{array}{c}
        \fvar{FLAG} \\
        \fvar{H11} \\
        \fvar{H21} \\
        \fvar{H12} \\
        \fvar{H22}
    \end{array}
\right]

If \fvar{FLAG}=-1:

H =
\left[
    \begin{array}{ll}
        \fvar{H11} & \fvar{H12} \\
        \fvar{H21} & \fvar{H22} \\
    \end{array}
\right]

If \fvar{FLAG}=0:

H =
\left[
    \begin{array}{ll}
        1 & \fvar{H12} \\
        \fvar{H21} & 1 \\
    \end{array}
\right]

If \fvar{FLAG}=1:

H =
\left[
    \begin{array}{ll}
        \fvar{H11} & 1 \\
        -1 & \fvar{H22} \\
    \end{array}
\right]

If \fvar{FLAG}=-2:

H =
\left[
    \begin{array}{ll}
        1 & 0 \\
        0 & 1 \\
    \end{array}
\right]

BLAS Interface

void srotmg(float *D1, float *D2, float *X1, const float *Y1, float *PARAM);

void drotmg(double *D1, double *D2, double *X1, const double *Y1,
            double *PARAM);

CBLAS Interface

void cblas_srotmg(float *D1, float *D2, float *X1, const float Y1,
                  float *PARAM);

void cblas_drotmg(double *D1, double *D2, double *X1, const double Y1,
                  double *PARAM);

Arguments

D1 First scaling factor
D2 Second scaling factor
X1 First component of vector to rotate
Y1 Second component of vector to rotate
PARAM Rotation parameter array of length 5