zlarfy function

void zlarfy(
  1. String UPLO,
  2. int N,
  3. Array<Complex> V_,
  4. int INCV,
  5. Complex TAU,
  6. Matrix<Complex> C_,
  7. int LDC,
  8. Array<Complex> WORK_,
)

Implementation

void zlarfy(
  final String UPLO,
  final int N,
  final Array<Complex> V_,
  final int INCV,
  final Complex TAU,
  final Matrix<Complex> C_,
  final int LDC,
  final Array<Complex> WORK_,
) {
  final C = C_.having(ld: LDC);
  final V = V_.having();
  final WORK = WORK_.having();
  const HALF = Complex(0.5, 0.0);
  Complex ALPHA;

  if (TAU == Complex.zero) return;

  // Form  w:= C * v

  zhemv(UPLO, N, Complex.one, C, LDC, V, INCV, Complex.zero, WORK, 1);

  ALPHA = -HALF * TAU * zdotc(N, WORK, 1, V, INCV);
  zaxpy(N, ALPHA, V, INCV, WORK, 1);

  // C := C - v * w' - w * v'

  zher2(UPLO, N, -TAU, V, INCV, WORK, 1, C, LDC);
}