ORNL / cpp-proposals-pub

Collaborating on papers for the ISO C++ committee - public repo
26 stars 26 forks source link

P1673: LWG review 2023/11/06 (Kona) #425

Open mhoemmen opened 10 months ago

mhoemmen commented 10 months ago

P1673: LWG review 2023/11/06 (Kona) and follow-ons

Resuming from [linalg.alg.blas2.trsv], where we stopped last time (2023/10/25).

Done, either in the main branch or in PR #426

Check with LWG

Resolved (don't need to check with LWG)

Points for specific sections

[linalg.alg.blas2.trsv]

("take an x parameter" cannot be misread as "take a symbolic name of a parameter x"; "take a parameter x" can be misread in that way. Therefore, we prefer the existing wording, "take an x parameter.") (OK)

Para 6: "Computes a vector $x'$ such that..." (instead of just saying "Computes $x'$ ..."). (This permits nonunique $x'$.) (DONE)

Para 12: "Computes a vector $x'$ such that" (instead of just saying "Computes $x'$ ..."), as above. (DONE)

Para 13: Complexity method differs from in Para 7. Flip order of b and A in Para 13 to be consistent with Para 7. (DONE)

[linalg.alg.blas2.rank1]

Para 7: Put forward<ExecutionPolicy> around exec. Generally do this where needed. (DONE)

Split Para 7 into two sentences, to avoid possible confusion due to code-font semicolons. (DONE)

[linalg.alg.blas2.symrank1]

Para 3: Mandates here does not follow the decltype convention; change that. (DONE)

(LWG appreciates the Para 1 unambiguous self-reference : - ) . ) (OK)

Para 7: "Computes a matrix $A'$..." instead of "Computes $A'$...." (DONE)

Para 11: "Computes a matrix $A'$..." instead of "Computes $A'$...." (DONE)

[linalg.algs.blas2.rank2]

Verify that the wording up front explains that ill-formed constructions (e.g., x and y complex, A real for hermitian rank-2 update) are forbidden (you may find an overload, but instantiating it would fail -- it's a precondition). (linalg.reqs.alg] expresses this for plus, times, etc. How about for complex number operations?) (DONE -- see question for LWG)

[linalg.algs.blas3.gemm]

Mandates: the above and also? (see notes)

Scribe missed some time

The in-place triangular_matrix_right_product etc. need a complexity clause. (DONE)

[linalg.alg.blas3.rankk]

Change label from linalg.alg to linalg.algs here. (DONE)

For symmetric_matrix_rank_k_update function signature, change InMat1 to InMat, because there's no InMat2. Fix this in the synopsis as well. (DONE)

Para 6: Change the updating wording to use $C'$ instead of relying on [linalg.general] 1.4. "Computes a matrix $C'$ such that $C' = C + \alpha A A^T$ and assigns each element of $C'$ to the corresponding element of $C$. Generally do that. It's OK to leave [linalg.general] 1.4, as it is still needed. (We'll need to fix in-place triangular_matrix_vector_product ("Computes $y = A y$"). (DONE)

For [linalg.algs.reqs] Para 1, does "type requirements" mean constraints? Yes, it does, to avoid ambiguity. Therefore, change "type requirements" to "Constraints." However, the first (1.1) is more than just a Constraint. We can separate (1.1) to the top, add the Constraint that ExecutionPolicy is an execution policy. (This indicates that the algorithm is a parallel algorithm.) (DONE)

[linalg.alg.blas3.rank2k]

Change linalg.alg to linalg.algs. (DONE)

Fix Effects generally. (DONE)

For next time

Next starting point is BLAS 3 TRSM.