zlar2v function

void zlar2v(
  1. int N,
  2. Array<Complex> X_,
  3. Array<Complex> Y_,
  4. Array<Complex> Z_,
  5. int INCX,
  6. Array<double> C_,
  7. Array<Complex> S_,
  8. int INCC,
)

Implementation

void zlar2v(
  final int N,
  final Array<Complex> X_,
  final Array<Complex> Y_,
  final Array<Complex> Z_,
  final int INCX,
  final Array<double> C_,
  final Array<Complex> S_,
  final int INCC,
) {
  final X = X_.having();
  final Y = Y_.having();
  final Z = Z_.having();
  final S = S_.having();
  final C = C_.having();
  int I, IC, IX;
  double CI, SII, SIR, T1I, T1R, T5, T6, XI, YI, ZII, ZIR;
  Complex SI, T2, T3, T4, ZI;

  IX = 1;
  IC = 1;
  for (I = 1; I <= N; I++) {
    XI = X[IX].real;
    YI = Y[IX].real;
    ZI = Z[IX];
    ZIR = ZI.real;
    ZII = ZI.imaginary;
    CI = C[IC];
    SI = S[IC];
    SIR = SI.real;
    SII = SI.imaginary;
    T1R = SIR * ZIR - SII * ZII;
    T1I = SIR * ZII + SII * ZIR;
    T2 = CI.toComplex() * ZI;
    T3 = T2 - (SI.imaginary * XI).toComplex();
    T4 = T2.conjugate() + SI * YI.toComplex();
    T5 = CI * XI + T1R;
    T6 = CI * YI - T1R;
    X[IX] = (CI * T5).toComplex() +
        (SIR * T4.real + SII * T4.imaginary).toComplex();
    Y[IX] = (CI * T6).toComplex() -
        (SIR * T3.real - SII * T3.imaginary).toComplex();
    Z[IX] = CI.toComplex() * T3 + SI.conjugate() * Complex(T6, T1I);
    IX += INCX;
    IC += INCC;
  }
}