@@ -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);
1254912529
1255012530template<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>()}
1493314913is \tcode{true}, and
1493414914\item
14935- \tcode{\exposconcept {possibly-addable}<OutMat, InMat, OutMat>()}
14915+ \tcode{\exposid {possibly-addable}<OutMat, InMat, OutMat>()}
1493614916is \tcode{true} for those overloads with an \tcode{E} parameter.
1493714917\end{itemize}
1493814918
1516615146template<@\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
1522715207These 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},
1522915210taking into account the \tcode{Triangle} parameter
1523015211that 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$,
1523515216where the scalar $\alpha$ is \tcode{\exposid{real-if-needed}(alpha)}.
1523615217
1523715218\pnum
@@ -15256,15 +15237,19 @@
1525615237an \tcode{InMat} template parameter, and
1525715238a 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}.
1526015241For accesses of diagonal elements \tcode{E[i, i]},
1526115242\tcode{F} only uses the value \tcode{\exposid{real-if-needed}(E[i, i])}
1526215243if the name of \tcode{F} starts with \tcode{hermitian}.
1526315244For 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);
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}
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}
1590915890This 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>
1596315944void 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>
1596615947void 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