From Jason Turner

[linalg.algs.blas2.symv]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp2l7lgpaf/{from.md → to.md} +60 -0
tmp/tmp2l7lgpaf/{from.md → to.md} RENAMED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Symmetric matrix-vector product <a id="linalg.algs.blas2.symv">[[linalg.algs.blas2.symv]]</a>
2
+
3
+ [*Note 1*: These functions correspond to the BLAS functions `xSYMV` and
4
+ `xSPMV`. — *end note*]
5
+
6
+ The following elements apply to all functions in
7
+ [[linalg.algs.blas2.symv]].
8
+
9
+ *Mandates:*
10
+
11
+ - If `InMat` 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
+ - `compatible-static-extents<decltype(A), decltype(A)>(0, 1)` is `true`;
15
+ - `possibly-multipliable<decltype(A), decltype(x), decltype(y)>()` is
16
+ `true`; and
17
+ - `possibly-addable<decltype(x), decltype(y), decltype(z)>()` is `true`
18
+ for those overloads that take a `z` parameter.
19
+
20
+ *Preconditions:*
21
+
22
+ - `A.extent(0)` equals `A.extent(1)`,
23
+ - `multipliable(A,x,y)` is `true`, and
24
+ - `addable(x,y,z)` is `true` for those overloads that take a `z`
25
+ parameter.
26
+
27
+ *Complexity:* 𝑂(`x.extent(0)` × `A.extent(1)`).
28
+
29
+ ``` cpp
30
+ template<in-matrix InMat, class Triangle, in-vector InVec, out-vector OutVec>
31
+ void symmetric_matrix_vector_product(InMat A, Triangle t, InVec x, OutVec y);
32
+ template<class ExecutionPolicy,
33
+ in-matrix InMat, class Triangle, in-vector InVec, out-vector OutVec>
34
+ void symmetric_matrix_vector_product(ExecutionPolicy&& exec,
35
+ InMat A, Triangle t, InVec x, OutVec y);
36
+ ```
37
+
38
+ These functions perform an overwriting symmetric matrix-vector product,
39
+ taking into account the `Triangle` parameter that applies to the
40
+ symmetric matrix `A` [[linalg.general]].
41
+
42
+ *Effects:* Computes y = A x.
43
+
44
+ ``` cpp
45
+ template<in-matrix InMat, class Triangle, in-vector InVec1, in-vector InVec2, out-vector OutVec>
46
+ void symmetric_matrix_vector_product(InMat A, Triangle t, InVec1 x, InVec2 y, OutVec z);
47
+ template<class ExecutionPolicy,
48
+ in-matrix InMat, class Triangle, in-vector InVec1, in-vector InVec2, out-vector OutVec>
49
+ void symmetric_matrix_vector_product(ExecutionPolicy&& exec,
50
+ InMat A, Triangle t, InVec1 x, InVec2 y, OutVec z);
51
+ ```
52
+
53
+ These functions perform an updating symmetric matrix-vector product,
54
+ taking into account the `Triangle` parameter that applies to the
55
+ symmetric matrix `A` [[linalg.general]].
56
+
57
+ *Effects:* Computes z = y + A x.
58
+
59
+ *Remarks:* `z` may alias `y`.
60
+