From Jason Turner

[linalg.algs.blas3.trmm]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpivtacox1/{from.md → to.md} +65 -0
tmp/tmpivtacox1/{from.md → to.md} RENAMED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### In-place triangular matrix-matrix product <a id="linalg.algs.blas3.trmm">[[linalg.algs.blas3.trmm]]</a>
2
+
3
+ These functions perform an in-place matrix-matrix multiply, taking into
4
+ account the `Triangle` and `DiagonalStorage` parameters that apply to
5
+ the triangular matrix `A` [[linalg.general]].
6
+
7
+ [*Note 1*: These functions correspond to the BLAS function
8
+ `xTRMM`. — *end note*]
9
+
10
+ ``` cpp
11
+ template<in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
12
+ void triangular_matrix_left_product(InMat A, Triangle t, DiagonalStorage d, InOutMat C);
13
+ template<class ExecutionPolicy,
14
+ in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
15
+ void triangular_matrix_left_product(ExecutionPolicy&& exec,
16
+ InMat A, Triangle t, DiagonalStorage d, InOutMat C);
17
+ ```
18
+
19
+ *Mandates:*
20
+
21
+ - If `InMat` has `layout_blas_packed` layout, then the layout’s
22
+ `Triangle` template argument has the same type as the function’s
23
+ `Triangle` template argument;
24
+ - *`possibly-multipliable`*`<InMat, InOutMat, InOutMat>()` is `true`;
25
+ and
26
+ - *`compatible-static-extents`*`<InMat, InMat>(0, 1)` is `true`.
27
+
28
+ *Preconditions:*
29
+
30
+ - *`multipliable`*`(A, C, C)` is `true`, and
31
+ - `A.extent(0) == A.extent(1)` is `true`.
32
+
33
+ *Effects:* Computes a matrix C' such that C' = A C and assigns each
34
+ element of C' to the corresponding element of C.
35
+
36
+ *Complexity:* 𝑂(`A.extent(0)` × `A.extent(1)` × `C.extent(0)`).
37
+
38
+ ``` cpp
39
+ template<in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
40
+ void triangular_matrix_right_product(InMat A, Triangle t, DiagonalStorage d, InOutMat C);
41
+ template<class ExecutionPolicy,
42
+ in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
43
+ void triangular_matrix_right_product(ExecutionPolicy&& exec,
44
+ InMat A, Triangle t, DiagonalStorage d, InOutMat C);
45
+ ```
46
+
47
+ *Mandates:*
48
+
49
+ - If `InMat` has `layout_blas_packed` layout, then the layout’s
50
+ `Triangle` template argument has the same type as the function’s
51
+ `Triangle` template argument;
52
+ - *`possibly-multipliable`*`<InOutMat, InMat, InOutMat>()` is `true`;
53
+ and
54
+ - *`compatible-static-extents`*`<InMat, InMat>(0, 1)` is `true`.
55
+
56
+ *Preconditions:*
57
+
58
+ - *`multipliable`*`(C, A, C)` is `true`, and
59
+ - `A.extent(0) == A.extent(1)` is `true`.
60
+
61
+ *Effects:* Computes a matrix C' such that C' = C A and assigns each
62
+ element of C' to the corresponding element of C.
63
+
64
+ *Complexity:* 𝑂(`A.extent(0)` × `A.extent(1)` × `C.extent(0)`).
65
+