29 Numerics library [numerics]

29.9 Basic linear algebra algorithms [linalg]

29.9.14 BLAS 2 algorithms [linalg.algs.blas2]

29.9.14.6 Rank-1 (outer product) update of a matrix [linalg.algs.blas2.rank1]

The following elements apply to all functions in [linalg.algs.blas2.rank1].
Mandates:
  • possibly-multipliable<OutMat, InVec2, InVec1>() is true, and
  • possibly-addable<OutMat, InMat, OutMat>() is true for those overloads with an E parameter.
Preconditions:
  • multipliable(A, y, x) is true, and
  • addable(A, E, A) is true for those overloads with an E parameter.
Complexity: .
template<in-vector InVec1, in-vector InVec2, out-matrix OutMat> void matrix_rank_1_update(InVec1 x, InVec2 y, OutMat A); template<class ExecutionPolicy, in-vector InVec1, in-vector InVec2, out-matrix OutMat> void matrix_rank_1_update(ExecutionPolicy&& exec, InVec1 x, InVec2 y, OutMat A);
These functions perform an overwriting nonsymmetric nonconjugated rank-1 update.
[Note 1: 
These functions correspond to the BLAS functions xGER (for real element types) and xGERU (for complex element types)[bib].
— end note]
Effects: Computes .
template<in-vector InVec1, in-vector InVec2, in-matrix InMat, out-matrix OutMat> void matrix_rank_1_update(InVec1 x, InVec2 y, InMat E, OutMat A); template<class ExecutionPolicy, in-vector InVec1, in-vector InVec2, in-matrix InMat, out-matrix OutMat> void matrix_rank_1_update(ExecutionPolicy&& exec, InVec1 x, InVec2 y, InMat E, OutMat A);
These functions perform an updating nonsymmetric nonconjugated rank-1 update.
[Note 2: 
These functions correspond to the BLAS functions xGER (for real element types) and xGERU (for complex element types)[bib].
— end note]
Effects: Computes .
Remarks: A may alias E.
template<in-vector InVec1, in-vector InVec2, out-matrix OutMat> void matrix_rank_1_update_c(InVec1 x, InVec2 y, OutMat A); template<class ExecutionPolicy, in-vector InVec1, in-vector InVec2, out-matrix OutMat> void matrix_rank_1_update_c(ExecutionPolicy&& exec, InVec1 x, InVec2 y, OutMat A);
These functions perform an overwriting nonsymmetric conjugated rank-1 update.
[Note 3: 
These functions correspond to the BLAS functions xGER (for real element types) and xGERC (for complex element types)[bib].
— end note]
Effects:
  • For the overloads without an ExecutionPolicy argument, equivalent to: matrix_rank_1_update(x, conjugated(y), A);
  • otherwise, equivalent to: matrix_rank_1_update(std::forward<ExecutionPolicy>(exec), x, conjugated(y), A);
template<in-vector InVec1, in-vector InVec2, in-matrix InMat, out-matrix OutMat> void matrix_rank_1_update_c(InVec1 x, InVec2 y, InMat E, OutMat A); template<class ExecutionPolicy, in-vector InVec1, in-vector InVec2, in-matrix InMat, out-matrix OutMat> void matrix_rank_1_update_c(ExecutionPolicy&& exec, InVec1 x, InVec2 y, InMat E, OutMat A);
These functions perform an updating nonsymmetric conjugated rank-1 update.
[Note 4: 
These functions correspond to the BLAS functions xGER (for real element types) and xGERC (for complex element types)[bib].
— end note]
Effects:
  • For the overloads without an ExecutionPolicy argument, equivalent to: matrix_rank_1_update(x, conjugated(y), A);
  • otherwise, equivalent to: matrix_rank_1_update(std::forward<ExecutionPolicy>(exec), x, conjugated(y), E, A);