dlarfy function

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

Implementation

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

  if (TAU == ZERO) return;

  // Form  w:= C * v

  dsymv(UPLO, N, ONE, C, LDC, V, INCV, ZERO, WORK, 1);

  final ALPHA = -HALF * TAU * ddot(N, WORK, 1, V, INCV);
  daxpy(N, ALPHA, V, INCV, WORK, 1);

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

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