zrot function

void zrot(
  1. int N,
  2. Array<Complex> CX,
  3. int INCX,
  4. Array<Complex> CY,
  5. int INCY,
  6. double C,
  7. Complex S,
)

Implementation

void zrot(
  final int N,
  final Array<Complex> CX,
  final int INCX,
  final Array<Complex> CY,
  final int INCY,
  final double C,
  final Complex S,
) {
  int I, IX, IY;
  Complex STEMP;

  if (N <= 0) return;
  if (INCX != 1 || INCY != 1) {
    // Code for unequal increments or equal increments not equal to 1

    IX = 1;
    IY = 1;
    if (INCX < 0) IX = (-N + 1) * INCX + 1;
    if (INCY < 0) IY = (-N + 1) * INCY + 1;
    for (I = 1; I <= N; I++) {
      STEMP = C.toComplex() * CX[IX] + S * CY[IY];
      CY[IY] = C.toComplex() * CY[IY] - S.conjugate() * CX[IX];
      CX[IX] = STEMP;
      IX += INCX;
      IY += INCY;
    }
    return;
  }

  // Code for both increments equal to 1

  for (I = 1; I <= N; I++) {
    STEMP = C.toComplex() * CX[I] + S * CY[I];
    CY[I] = C.toComplex() * CY[I] - S.conjugate() * CX[I];
    CX[I] = STEMP;
  }
}