From Jason Turner

[linalg.algs.blas2.rank1]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpmxjj5wxl/{from.md → to.md} +50 -0
tmp/tmpmxjj5wxl/{from.md → to.md} RENAMED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Rank-1 (outer product) update of a matrix <a id="linalg.algs.blas2.rank1">[[linalg.algs.blas2.rank1]]</a>
2
+
3
+ ``` cpp
4
+ template<in-vector InVec1, in-vector InVec2, inout-matrix InOutMat>
5
+ void matrix_rank_1_update(InVec1 x, InVec2 y, InOutMat A);
6
+ template<class ExecutionPolicy, in-vector InVec1, in-vector InVec2, inout-matrix InOutMat>
7
+ void matrix_rank_1_update(ExecutionPolicy&& exec, InVec1 x, InVec2 y, InOutMat A);
8
+ ```
9
+
10
+ These functions perform a nonsymmetric nonconjugated rank-1 update.
11
+
12
+ [*Note 1*: These functions correspond to the BLAS functions `xGER` (for
13
+ real element types) and `xGERU` (for complex element
14
+ types). — *end note*]
15
+
16
+ *Mandates:* *`possibly-multipliable`*`<InOutMat, InVec2, InVec1>()` is
17
+ `true`.
18
+
19
+ *Preconditions:* *`multipliable`*`(A, y, x)` is `true`.
20
+
21
+ *Effects:* Computes a matrix A' such that $A' = A + x y^T$, and assigns
22
+ each element of A' to the corresponding element of A.
23
+
24
+ *Complexity:* 𝑂(`x.extent(0)` × `y.extent(0)`).
25
+
26
+ ``` cpp
27
+ template<in-vector InVec1, in-vector InVec2, inout-matrix InOutMat>
28
+ void matrix_rank_1_update_c(InVec1 x, InVec2 y, InOutMat A);
29
+ template<class ExecutionPolicy, in-vector InVec1, in-vector InVec2, inout-matrix InOutMat>
30
+ void matrix_rank_1_update_c(ExecutionPolicy&& exec, InVec1 x, InVec2 y, InOutMat A);
31
+ ```
32
+
33
+ These functions perform a nonsymmetric conjugated rank-1 update.
34
+
35
+ [*Note 2*: These functions correspond to the BLAS functions `xGER` (for
36
+ real element types) and `xGERC` (for complex element
37
+ types). — *end note*]
38
+
39
+ *Effects:*
40
+
41
+ - For the overloads without an `ExecutionPolicy` argument, equivalent
42
+ to:
43
+ ``` cpp
44
+ matrix_rank_1_update(x, conjugated(y), A);
45
+ ```
46
+ - otherwise, equivalent to:
47
+ ``` cpp
48
+ matrix_rank_1_update(std::forward<ExecutionPolicy>(exec), x, conjugated(y), A);
49
+ ```
50
+