rotm(3F)

SROTM, DROTM - Applies a modified Givens plane rotation

As shipped in IRIX 6.5.30. Last changed in IRIX 6.5.19.

NAME
     SROTM, DROTM - Applies a modified Givens plane rotation

SYNOPSIS
     Real
        CALL SROTM (n, x, incx, y, incy, rparam)

     Double precision

        CALL DROTM (n, x, incx, y, incy, rparam)

DESCRIPTION
     These routines apply the modified Givens plane rotation constructed by
     SROTMG/DROTMG.

     These routines have the following arguments:

     n         Integer.  (input)
               Number of planar points to be rotated.  If n <= 0, these
               routines return without any computation.

     x         Array of dimension (n-1) * |incx| + 1.  (input and output)
               SROTM: Real array.
               DROTM: Double precision array.
               On input, array x contains the x-coordinate of each planar
               point to be rotated.  On output, array x contains the
               x-coordinate of each rotated planar point.

     incx      Integer.  (input)
               Increment between elements of x.  If incx = 0, the results
               will be unpredictable.

     y         Array of dimension (n-1) * |incy| + 1.  (input and output)
               SROTM: Real array.
               DROTM: Double precision array.
               On input, array y contains the y-coordinate of each planar
               point to be rotated.  On output, array y contains the
               y-coordinate of each rotated planar point.

     incy      Integer.  (input)
               Increment between elements of y.  If incx = 0, the results
               will be unpredictable.

     rparam    Array of dimension 5.  (input)
               SROTM: Real array.
               DROTM: Double precision array.
               Contains rotation matrix information.

     These routines compute a planar rotation, with possible scaling or
     reflection, as follows:

          _      _     _               _  _      _
          | x(i) |     | h(1,1) h(1,2) |  | x(i) |
          | y(i) | <-- | h(2,1) h(2,2) |  | y(i) |
          -      -     -               -  -      -

          for i=1 , ... , n

     where the matrix that contains the elements h(1,1), h(2,1), h(1,2),
     and h(2,2) is called a rotation matrix.

     The rparam array determines the contents of the rotation matrix, as
     follows:

     The key parameter, rparam(1), may have one of four values:

          1.0,  0.0,  -1.0,  or -2.0

     If rparam(1) = 1.0:

          _               _   _                      _
          | h(1,1) h(1,2) | = | rparam(2)      1.0   |
          | h(2,1) h(2,2) |   |    -1.0    rparam(5) |
          -               -   -                      -

     and rparam(3) and rparam(4) are ignored.

     If rparam(1) = 0.0:

          _               _   _                      _
          | h(1,1) h(1,2) | = |       1.0  rparam(4) |
          | h(2,1) h(2,2) |   | rparam(3)        1.0 |
          -               -   -                      -


     and rparam(2) and rparam(5) are ignored.

     If rparam(1)=-1.0 (rescaling case):

          _               _   _                      _
          | h(1,1) h(1,2) | = | rparam(2)  rparam(4) |
          | h(2,1) h(2,2) |   | rparam(3)  rparam(5) |
          -               -   -                      -

     This is a full matrix multiplication.

     If rparam(1) = -2.0:

          _               _   _          _
          | h(1,1) h(1,2) | = | 1.0  0.0 | = I
          | h(2,1) h(2,2) |   | 0.0  1.0 |
          -               -   -          -

     where I is the identity matrix.  In this case, rparam(2), rparam(3),
     rparam(4), and rparam(5) are ignored.

     If n <=  0, or if the rotation matrix is the identity matrix (for
     example, when rparam(1) = -2.0), these routines return with no
     operation on input arrays x and y.

SEE ALSO
     ROTMG(3F) for further details about the modified Givens transformation
     and array rparam