Skip to content

Commit c349934

Browse files
committed
Fixup: clean up my mess (no deviations from paper yet)
1 parent d933aae commit c349934

File tree

1 file changed

+54
-90
lines changed

1 file changed

+54
-90
lines changed

source/numerics.tex

Lines changed: 54 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -11354,21 +11354,21 @@
1135411354
Scalar alpha, InVec x, OutMat A, Triangle t);
1135511355

1135611356
// updating symmetric rank-1 matrix update
11357-
template<class Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
11357+
template<@\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
1135811358
class Triangle>
1135911359
void symmetric_matrix_rank_1_update(Scalar alpha, InVec x, InMat E, OutMat A, Triangle t);
1136011360
template<class ExecutionPolicy,
11361-
class Scalar, @\exposconcept{in-vector InVec}@, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
11361+
@\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
1136211362
class Triangle>
1136311363
void symmetric_matrix_rank_1_update(ExecutionPolicy&& exec,
1136411364
Scalar alpha, InVec x, InMat E, OutMat A, Triangle t);
1136511365

1136611366
// updating Hermitian rank-1 matrix update
11367-
template<class Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
11367+
template<@\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
1136811368
class Triangle>
1136911369
void hermitian_matrix_rank_1_update(Scalar alpha, InVec x, InMat E, OutMat A, Triangle t);
1137011370
template<class ExecutionPolicy,
11371-
class Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
11371+
@\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
1137211372
class Triangle>
1137311373
void hermitian_matrix_rank_1_update(ExecutionPolicy&& exec,
1137411374
Scalar alpha, InVec x, InMat E, OutMat A, Triangle t);
@@ -11571,40 +11571,24 @@
1157111571
Scalar alpha, InMat A, OutMat C, Triangle t);
1157211572

1157311573
// updating rank-k symmetric matrix update
11574-
template<class Scalar,
11575-
@\exposconcept{in-matrix}@ InMat1,
11576-
@\exposconcept{in-matrix}@ InMat2,
11577-
@\exposconcept{possibly-packed-out-matrix}@ OutMat,
11578-
class Triangle>
11579-
void symmetric_matrix_rank_k_update(
11580-
Scalar alpha,
11581-
InMat1 A, InMat2 E, OutMat C, Triangle t);
11582-
template<class ExecutionPolicy, class Scalar,
11583-
@\exposconcept{in-matrix}@ InMat1,
11584-
@\exposconcept{in-matrix}@ InMat2,
11585-
@\exposconcept{possibly-packed-out-matrix}@ OutMat,
11586-
class Triangle>
11587-
void symmetric_matrix_rank_k_update(
11588-
ExecutionPolicy&& exec, Scalar alpha,
11589-
InMat1 A, InMat2 E, OutMat C, Triangle t);
11574+
template<@\exposconcept{scalar}@ Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11575+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
11576+
void symmetric_matrix_rank_k_update(Scalar alpha, InMat1 A, InMat2 E, OutMat C, Triangle t);
11577+
template<class ExecutionPolicy,
11578+
@\exposconcept{scalar}@ Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11579+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
11580+
void symmetric_matrix_rank_k_update(ExecutionPolicy&& exec, Scalar alpha,
11581+
InMat1 A, InMat2 E, OutMat C, Triangle t);
1159011582

1159111583
// updating rank-k Hermitian matrix update
11592-
template<class Scalar,
11593-
@\exposconcept{in-matrix}@ InMat1,
11594-
@\exposconcept{in-matrix}@ InMat2,
11595-
@\exposconcept{possibly-packed-out-matrix}@ OutMat,
11596-
class Triangle>
11597-
void hermitian_matrix_rank_k_update(
11598-
Scalar alpha,
11599-
InMat1 A, InMat2 E, OutMat C, Triangle t);
11600-
template<class ExecutionPolicy, class Scalar,
11601-
@\exposconcept{in-matrix}@ InMat1,
11602-
@\exposconcept{in-matrix}@ InMat2,
11603-
@\exposconcept{possibly-packed-out-matrix}@ OutMat,
11604-
class Triangle>
11605-
void hermitian_matrix_rank_k_update(
11606-
ExecutionPolicy&& exec, Scalar alpha,
11607-
InMat1 A, InMat2 E, OutMat C, Triangle t);
11584+
template<@\exposconcept{scalar}@ Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11585+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
11586+
void hermitian_matrix_rank_k_update(Scalar alpha, InMat1 A, InMat2 E, OutMat C, Triangle t);
11587+
template<class ExecutionPolicy,
11588+
@\exposconcept{scalar}@ Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11589+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
11590+
void hermitian_matrix_rank_k_update(ExecutionPolicy&& exec, Scalar alpha,
11591+
InMat1 A, InMat2 E, OutMat C, Triangle t);
1160811592

1160911593
// \ref{linalg.algs.blas3.rank2k}, rank-2k update of a symmetric or Hermitian matrix
1161011594

@@ -11629,25 +11613,21 @@
1162911613
InMat1 A, InMat2 B, OutMat C, Triangle t);
1163011614

1163111615
// updating symmetric rank-2k matrix update
11632-
template<@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11633-
@\exposconcept{in-matrix}@ InMat3,
11616+
template<@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{in-matrix}@ InMat3,
1163411617
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1163511618
void symmetric_matrix_rank_2k_update(InMat1 A, InMat2 B, InMat3 E, OutMat C, Triangle t);
1163611619
template<class ExecutionPolicy,
11637-
@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11638-
@\exposconcept{in-matrix}@ InMat3,
11620+
@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{in-matrix}@ InMat3,
1163911621
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1164011622
void symmetric_matrix_rank_2k_update(ExecutionPolicy&& exec,
1164111623
InMat1 A, InMat2 B, InMat3 E, OutMat C, Triangle t);
1164211624

1164311625
// updating Hermitian rank-2k matrix update
11644-
template<@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11645-
@\exposconcept{in-matrix}@ InMat3,
11626+
template<@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{in-matrix}@ InMat3,
1164611627
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1164711628
void hermitian_matrix_rank_2k_update(InMat1 A, InMat2 B, InMat3 E, OutMat C, Triangle t);
1164811629
template<class ExecutionPolicy,
11649-
@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
11650-
@\exposconcept{in-matrix}@ InMat3,
11630+
@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{in-matrix}@ InMat3,
1165111631
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1165211632
void hermitian_matrix_rank_2k_update(ExecutionPolicy&& exec,
1165311633
InMat1 A, InMat2 B, InMat3 E, OutMat C, Triangle t);
@@ -12549,7 +12529,7 @@
1254912529

1255012530
template<class T>
1255112531
concept @\defexposconcept{scalar}@ =
12552-
@\libconcept{semiregular}@<T> && (!@\exposconcept{is-mdspan}@<T>) && (!is_execution_policy_v<T>);
12532+
@\libconcept{semiregular}@<T> && (!@\exposid{is-mdspan}@<T>) && (!is_execution_policy_v<T>);
1255312533
\end{codeblock}
1255412534

1255512535
\pnum
@@ -14929,10 +14909,10 @@
1492914909
\mandates
1493014910
\begin{itemize}
1493114911
\item
14932-
\tcode{\exposconcept{possibly-multipliable}<OutMat, InVec2, InVec1>()}
14912+
\tcode{\exposid{possibly-multipliable}<OutMat, InVec2, InVec1>()}
1493314913
is \tcode{true}, and
1493414914
\item
14935-
\tcode{\exposconcept{possibly-addable}<OutMat, InMat, OutMat>()}
14915+
\tcode{\exposid{possibly-addable}<OutMat, InMat, OutMat>()}
1493614916
is \tcode{true} for those overloads with an \tcode{E} parameter.
1493714917
\end{itemize}
1493814918

@@ -15166,8 +15146,8 @@
1516615146
template<@\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
1516715147
class Triangle>
1516815148
void symmetric_matrix_rank_1_update(Scalar alpha, InVec x, InMat E, OutMat A, Triangle t);
15169-
template<class ExecutionPolicy,
15170-
@\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat, @\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
15149+
template<class ExecutionPolicy, @\exposconcept{scalar}@ Scalar, @\exposconcept{in-vector}@ InVec, @\exposconcept{in-matrix}@ InMat,
15150+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1517115151
void symmetric_matrix_rank_1_update(ExecutionPolicy&& exec,
1517215152
Scalar alpha, InVec x, InMat E, OutMat A, Triangle t);
1517315153
\end{itemdecl}
@@ -15225,13 +15205,14 @@
1522515205
\begin{itemdescr}
1522615206
\pnum
1522715207
These functions perform
15228-
an updating Hermitian rank-1 update of the Hermitian matrix \tcode{E},
15208+
an updating Hermitian rank-1 update of the Hermitian matrix \tcode{A}
15209+
using the Hermitian matrix \tcode{E},
1522915210
taking into account the \tcode{Triangle} parameter
1523015211
that applies to \tcode{A} and \tcode{E}\iref{linalg.general}.
1523115212

1523215213
\pnum
1523315214
\effects
15234-
Computes a matrix $A = E + \alpha x x^H$,
15215+
Computes $A = E + \alpha x x^H$,
1523515216
where the scalar $\alpha$ is \tcode{\exposid{real-if-needed}(alpha)}.
1523615217

1523715218
\pnum
@@ -15256,15 +15237,19 @@
1525615237
an \tcode{InMat} template parameter, and
1525715238
a function parameter \tcode{InMat E},
1525815239
\tcode{t} applies to accesses done through the parameter \tcode{E}.
15259-
\tcode{F} only accesses the triangle of \tcode{E} specified by \tcodee{t}.
15240+
\tcode{F} only accesses the triangle of \tcode{E} specified by \tcode{t}.
1526015241
For accesses of diagonal elements \tcode{E[i, i]},
1526115242
\tcode{F} only uses the value \tcode{\exposid{real-if-needed}(E[i, i])}
1526215243
if the name of \tcode{F} starts with \tcode{hermitian}.
1526315244
For accesses \tcode{E[i, j]} outside the triangle specified by \tcode{t},
1526415245
\tcode{F} only uses the value
1526515246
\begin{itemize}
15266-
\item \tcode{\exposid{conj-if-needed}(E[j, i])} if the name of F starts with hermitian, or
15267-
\item \tcode{E[j, i]} if the name of F starts with symmetric.
15247+
\item
15248+
\tcode{\exposid{conj-if-needed}(E[j, i])}
15249+
if the name of F starts with \tcode{hermitian}, or
15250+
\item
15251+
\tcode{E[j, i]}
15252+
if the name of F starts with \tcode{symmetric}.
1526815253
\end{itemize}
1526915254

1527015255
\pnum
@@ -15331,12 +15316,10 @@
1533115316

1533215317
\indexlibraryglobal{symmetric_matrix_rank_2_update}%
1533315318
\begin{itemdecl}
15334-
template<@\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2,
15335-
@\exposconcept{in-matrix}@ InMat,
15319+
template<@\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2, @\exposconcept{in-matrix}@ InMat,
1533615320
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1533715321
void symmetric_matrix_rank_2_update(InVec1 x, InVec2 y, InMat E, OutMat A, Triangle t);
15338-
template<class ExecutionPolicy, @\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2,
15339-
@\exposconcept{in-matrix}@ InMat,
15322+
template<class ExecutionPolicy, @\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2, @\exposconcept{in-matrix}@ InMat,
1534015323
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1534115324
void symmetric_matrix_rank_2_update(ExecutionPolicy&& exec,
1534215325
InVec1 x, InVec2 y, InMat E, OutMat A, Triangle t);
@@ -15384,12 +15367,10 @@
1538415367

1538515368
\indexlibraryglobal{hermitian_matrix_rank_2_update}%
1538615369
\begin{itemdecl}
15387-
template<@\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2,
15388-
@\exposconcept{in-matrix}@ InMat,
15370+
template<@\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2, @\exposconcept{in-matrix}@ InMat,
1538915371
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1539015372
void hermitian_matrix_rank_2_update(InVec1 x, InVec2 y, InMat E, OutMat A, Triangle t);
15391-
template<class ExecutionPolicy, @\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2,
15392-
@\exposconcept{in-matrix}@ InMat,
15373+
template<class ExecutionPolicy, @\exposconcept{in-vector}@ InVec1, @\exposconcept{in-vector}@ InVec2, @\exposconcept{in-matrix}@ InMat,
1539315374
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1539415375
void hermitian_matrix_rank_2_update(ExecutionPolicy&& exec,
1539515376
InVec1 x, InVec2 y, InMat E, OutMat A, Triangle t);
@@ -15409,7 +15390,7 @@
1540915390

1541015391
\pnum
1541115392
\remarks
15412-
\tcode{A} my alias \tcode{E}.
15393+
\tcode{A} may alias \tcode{E}.
1541315394
\end{itemdescr}
1541415395

1541515396
\rSec2[linalg.algs.blas3]{BLAS 3 algorithms}
@@ -15904,7 +15885,7 @@
1590415885
\begin{itemize}
1590515886
\item
1590615887
\tcode{\exposid{multipliable}(A, transposed(A), C)}
15907-
is \tcode{true};
15888+
is \tcode{true}; and
1590815889
\begin{note}
1590915890
This implies that \tcode{C} is square.
1591015891
\end{note}
@@ -15958,10 +15939,10 @@
1595815939

1595915940
\indexlibraryglobal{hermitian_matrix_rank_k_update}%
1596015941
\begin{itemdecl}
15961-
template<class Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
15942+
template<@\exposconcept{scalar}@ Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{possibly-packed-out-matrix}@ OutMat,
1596215943
class Triangle>
1596315944
void hermitian_matrix_rank_k_update(Scalar alpha, InMat1 A, InMat2 E, OutMat C, Triangle t);
15964-
template<class ExecutionPolicy, class Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
15945+
template<class ExecutionPolicy, @\exposconcept{scalar}@ Scalar, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2,
1596515946
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
1596615947
void hermitian_matrix_rank_k_update(ExecutionPolicy&& exec, Scalar alpha, InMat1 A, InMat2 E,
1596715948
OutMat C, Triangle t);
@@ -16091,30 +16072,13 @@
1609116072

1609216073
\indexlibraryglobal{symmetric_matrix_rank_2k_update}%
1609316074
\begin{itemdecl}
16094-
template<in-matrix InMat1,
16095-
in-matrix InMat2,
16096-
in-matrix InMat3,
16097-
possibly-packed-out-matrix OutMat,
16098-
class Triangle>
16099-
void symmetric_matrix_rank_2k_update(
16100-
InMat1 A,
16101-
InMat2 B,
16102-
InMat3 E,
16103-
OutMat C,
16104-
Triangle t);
16105-
template<class ExecutionPolicy,
16106-
in-matrix InMat1,
16107-
in-matrix InMat2,
16108-
in-matrix InMat3,
16109-
possibly-packed-out-matrix OutMat,
16110-
class Triangle>
16111-
void symmetric_matrix_rank_2k_update(
16112-
ExecutionPolicy&& exec,
16113-
InMat1 A,
16114-
InMat2 B,
16115-
InMat3 E,
16116-
OutMat C,
16117-
Triangle t);
16075+
template<@\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{in-matrix}@ InMat3,
16076+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
16077+
void symmetric_matrix_rank_2k_update(InMat1 A, InMat2 B, InMat3 E, OutMat C, Triangle t);
16078+
template<class ExecutionPolicy, @\exposconcept{in-matrix}@ InMat1, @\exposconcept{in-matrix}@ InMat2, @\exposconcept{in-matrix}@ InMat3,
16079+
@\exposconcept{possibly-packed-out-matrix}@ OutMat, class Triangle>
16080+
void symmetric_matrix_rank_2k_update(ExecutionPolicy&& exec,
16081+
InMat1 A, InMat2 B, InMat3 E, OutMat C, Triangle t);
1611816082
\end{itemdecl}
1611916083

1612016084
\begin{itemdescr}

0 commit comments

Comments
 (0)