From Jason Turner

[linalg.algs.blas3.rank2k]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpqmbqvajq/{from.md → to.md} +51 -0
tmp/tmpqmbqvajq/{from.md → to.md} RENAMED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Rank-2k update of a symmetric or Hermitian matrix <a id="linalg.algs.blas3.rank2k">[[linalg.algs.blas3.rank2k]]</a>
2
+
3
+ [*Note 1*: These functions correspond to the BLAS functions `xSYR2K`
4
+ and `xHER2K`. — *end note*]
5
+
6
+ The following elements apply to all functions in
7
+ [[linalg.algs.blas3.rank2k]].
8
+
9
+ *Mandates:*
10
+
11
+ - If `InOutMat` has `layout_blas_packed` layout, then the layout’s
12
+ `Triangle` template argument has the same type as the function’s
13
+ `Triangle` template argument;
14
+ - `possibly-addable<decltype(A), decltype(B), decltype(C)>()` is `true`;
15
+ and
16
+ - `compatible-static-extents<decltype(A), decltype(A)>(0, 1)` is `true`.
17
+
18
+ *Preconditions:*
19
+
20
+ - `addable(A, B, C)` is `true`, and
21
+ - `A.extent(0)` equals `A.extent(1)`.
22
+
23
+ *Complexity:* 𝑂(`A.extent(0)` × `A.extent(1)` × `C.extent(0)`).
24
+
25
+ ``` cpp
26
+ template<in-matrix InMat1, in-matrix InMat2,
27
+ possibly-packed-inout-matrix InOutMat, class Triangle>
28
+ void symmetric_matrix_rank_2k_update(InMat1 A, InMat2 B, InOutMat C, Triangle t);
29
+ template<class ExecutionPolicy, in-matrix InMat1, in-matrix InMat2,
30
+ possibly-packed-inout-matrix InOutMat, class Triangle>
31
+ void symmetric_matrix_rank_2k_update(ExecutionPolicy&& exec,
32
+ InMat1 A, InMat2 B, InOutMat C, Triangle t);
33
+ ```
34
+
35
+ *Effects:* Computes a matrix C' such that $C' = C + A B^T + B A^T$, and
36
+ assigns each element of C' to the corresponding element of C.
37
+
38
+ ``` cpp
39
+ template<in-matrix InMat1, in-matrix InMat2,
40
+ possibly-packed-inout-matrix InOutMat, class Triangle>
41
+ void hermitian_matrix_rank_2k_update(InMat1 A, InMat2 B, InOutMat C, Triangle t);
42
+ template<class ExecutionPolicy,
43
+ in-matrix InMat1, in-matrix InMat2,
44
+ possibly-packed-inout-matrix InOutMat, class Triangle>
45
+ void hermitian_matrix_rank_2k_update(ExecutionPolicy&& exec,
46
+ InMat1 A, InMat2 B, InOutMat C, Triangle t);
47
+ ```
48
+
49
+ *Effects:* Computes a matrix C' such that $C' = C + A B^H + B A^H$, and
50
+ assigns each element of C' to the corresponding element of C.
51
+