LWG std::linalg (P1673) Review Plan
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 29
- Forks
- 26
- PR merge metrics
- No merged PRs in 30d
Description
Current Review Focus
We plan to get through matrix-vector-product and all the wording which is indirectly relevant for its full specification.
- 17.11.3.1 General matrix-vector-product
- 17.2 General [linalg.general] Parts of this say what aliasing of mdspans means.
- 17.3 Requirements [linalg.reqs] What can an implementer rely on for the arguments of the algorithm.
- 17.10 Exposition-only concepts and traits [linalg.concepts] Concepts to constrain the arguments.
- 17.11.1 Requirements based on template parameter name [linalg.algs.reqs]
We follow up with in place transformations of mdspans which can be used in conjunction with matrix-vector-product:
- 17.6 Scaled in-place transformation [linalg.scaled]
scaled(alpha, A) - 17.7 Conjugated in-place transformation [linalg.conj]
conjugated(A) - 17.8 Transpose in-place transformation [linalg.transp]
transposed(A) - 17.9 Conjugate transpose transform [linalg.conj_transp]
conjugate_transposed(A)
Wording content list:
- 17.1 Add subsection 28.9 [linalg] with the following
- 17.2 General [linalg.general]
- 17.3 Requirements [linalg.reqs]
- 17.4 Tag classes [linalg.tags]
- 17.5 Layouts for packed matrix types [linalg.layouts]
- 17.6 Scaled in-place transformation [linalg.scaled]
- 17.6.1 Exposition-only function object abs-if-needed [linalg.scaled.abs]
- 17.6.2 Exposition-only function object conj-if-needed [linalg.scaled.conj]
- 17.6.3 Exposition-only function object real-if-needed [linalg.scaled.real]
- 17.6.4 Exposition-only function object imag-if-needed [linalg.scaled.imag]
- 17.6.5 Exposition-only class templates proxy-reference-base and proxy-reference [linalg.scaled.base]
- 17.6.6 Exposition-only class template scaled-scalar
- 17.6.7 Class template accessor_scaled [linalg.scaled.accessor_scaled]
- 17.6.8 scaled [linalg.scaled.scaled]
- 17.7 Conjugated in-place transformation [linalg.conj]
- 17.8 Transpose in-place transformation [linalg.transp]
- 17.9 Conjugate transpose transform [linalg.conj_transp]
- 17.10 Exposition-only concepts and traits [linalg.concepts]
- 17.11 Algorithms [linalg.algs]
- 17.11.2 BLAS 1 functions [linalg.algs.blas1]
- 17.11.2.1 Givens rotations [linalg.algs.blas1.givens]
- 17.11.2.1.1 Compute Givens rotation [linalg.algs.blas1.givens.lartg] (no hyperlink available)
- 17.11.2.1.2 Apply a computed Givens rotation to vectors [linalg.algs.blas1.givens.rot] (no hyperlink available)
- 17.11.2.2 Swap matrix or vector elements [linalg.algs.blas1.swap]
- 17.11.2.3 Multiply the elements of an object in place by a scalar [linalg.algs.blas1.scal]
- 17.11.2.4 Copy elements of one matrix or vector into another [linalg.algs.blas1.copy]
- 17.11.2.5 Add vectors or matrices elementwise [linalg.algs.blas1.add]
- 17.11.2.6 Dot product of two vectors [linalg.algs.blas1.dot]
- 17.11.2.6.1 Nonconjugated dot product of two vectors [linalg.algs.blas1.dot.dotu] (no hyperlink available)
- 17.11.2.6.2 Conjugated dot product of two vectors [linalg.algs.blas1.dot.dotc] (no hyperlink available)
- 17.11.2.7 Scaled sum of squares of a vector’s elements [linalg.algs.blas1.ssq]
- 17.11.2.8 Euclidean norm of a vector [linalg.algs.blas1.nrm2]
- 17.11.2.8.1 Euclidean norm with specified result type (no hyperlink available)
- 17.11.2.8.2 Euclidean norm with default result type (no hyperlink available)
- 17.11.2.9 Sum of absolute values of vector elements [linalg.algs.blas1.asum]
- 17.11.2.9.1 Sum of absolute values with specified result type (no hyperlink available)
- 17.11.2.9.2 Sum of absolute values with default result type (no hyperlink available)
- 17.11.2.10 Index of maximum absolute value of vector elements [linalg.algs.blas1.iamax]
- 17.11.2.11 Frobenius norm of a matrix [linalg.algs.blas1.matfrobnorm]
- 17.11.2.11.1 Frobenius norm with specified result type (no hyperlink available)
- 17.11.2.11.2 Frobenius norm with default result type (no hyperlink available)
- 17.11.2.12 One norm of a matrix [linalg.algs.blas1.matonenorm]
- 17.11.2.12.1 One norm with specified result type (no hyperlink available)
- 17.11.2.12.2 One norm with default result type (no hyperlink available)
- 17.11.2.13 Infinity norm of a matrix [linalg.algs.blas1.matinfnorm]
- 17.11.2.13.1 Infinity norm with specified result type (no hyperlink available)
- 17.11.2.13.2 Infinity norm with default result type (no hyperlink available)
- 17.11.2.1 Givens rotations [linalg.algs.blas1.givens]
- 17.11.3 BLAS 2 functions [linalg.algs.blas2]
- 17.11.3.1 General matrix-vector product [linalg.algs.blas2.gemv]
- 17.11.3.1.1 Overwriting matrix-vector product (no hyperlink available)
- 17.11.3.1.2 Updating matrix-vector product (no hyperlink available)
- 17.11.3.2 Symmetric matrix-vector product [linalg.algs.blas2.symv]
- 17.11.3.2.1 Overwriting symmetric matrix-vector product (no hyperlink available)
- 17.11.3.2.2 Updating symmetric matrix-vector product (no hyperlink available)
- 17.11.3.3 Hermitian matrix-vector product [linalg.algs.blas2.hemv]
- 17.11.3.3.1 Overwriting Hermitian matrix-vector product (no hyperlink available)
- 17.11.3.3.2 Updating Hermitian matrix-vector product (no hyperlink available)
- 17.11.3.4 Triangular matrix-vector product [linalg.algs.blas2.trmv]
- 17.11.3.4.1 Overwriting triangular matrix-vector product [linalg.algs.blas2.trmv.ov] (no hyperlink available)
- 17.11.3.4.2 In-place triangular matrix-vector product [linalg.algs.blas2.trmv.in-place] (no hyperlink available)
- 17.11.3.4.3 Updating triangular matrix-vector product [linalg.algs.blas2.trmv.up] (no hyperlink available)
- 17.11.3.5 Solve a triangular linear system [linalg.algs.blas2.trsv]
- 17.11.3.5.1 Not-in-place triangular solve [linalg.algs.blas2.trsv.not-in-place] (no hyperlink available)
- 17.11.3.5.2 In-place triangular solve [linalg.algs.blas2.trsv.in-place]
- 17.11.3.6 Rank-1 (outer product) update of a matrix [linalg.algs.blas2.rank1]
- 17.11.3.6.1 Nonsymmetric nonconjugated rank-1 update [linalg.algs.blas2.rank1.geru] (no hyperlink available)
- 17.11.3.6.2 Nonsymmetric conjugated rank-1 update [linalg.algs.blas2.rank1.gerc] (no hyperlink available)
- 17.11.3.6.3 Rank-1 update of a Symmetric matrix [linalg.algs.blas2.rank1.syr] (no hyperlink available)
- 17.11.3.6.4 Rank-1 update of a Hermitian matrix [linalg.algs.blas2.rank1.her] (no hyperlink available)
- 17.11.3.7 Rank-2 update of a symmetric matrix [linalg.algs.blas2.rank2.syr2]
- 17.11.3.8 Rank-2 update of a Hermitian matrix [linalg.algs.blas2.rank2.her2]
- 17.11.3.1 General matrix-vector product [linalg.algs.blas2.gemv]
- 17.11.4 BLAS 3 functions [linalg.algs.blas3]
- 17.11.4.1 General matrix-matrix product [linalg.algs.blas3.gemm]
- 17.11.4.1.1 Overwriting general matrix-matrix product (no hyperlink available)
- 17.11.4.1.2 Updating general matrix-matrix product (no hyperlink available)
- 17.11.4.2 Symmetric matrix-matrix product [linalg.algs.blas3.symm]
- 17.11.4.2.1 Overwriting symmetric matrix-matrix left product [linalg.algs.blas3.symm.ov.left] (no hyperlink available)
- 17.11.4.2.2 Overwriting symmetric matrix-matrix right product [linalg.algs.blas3.symm.ov.right] (no hyperlink available)
- 17.11.4.2.3 Updating symmetric matrix-matrix left product [linalg.algs.blas3.symm.up.left] (no hyperlink available)
- 17.11.4.2.4 Updating symmetric matrix-matrix right product [linalg.algs.blas3.symm.up.right] (no hyperlink available)
- 17.11.4.3 Hermitian matrix-matrix product [linalg.algs.blas3.hemm]
- 17.11.4.3.1 Overwriting Hermitian matrix-matrix left product [linalg.algs.blas3.hemm.ov.left] (no hyperlink available)
- 17.11.4.3.2 Overwriting Hermitian matrix-matrix right product [linalg.algs.blas3.hemm.ov.right] (no hyperlink available)
- 17.11.4.3.3 Updating Hermitian matrix-matrix left product [linalg.algs.blas3.hemm.up.left] (no hyperlink available)
- 17.11.4.3.4 Updating Hermitian matrix-matrix right product [linalg.algs.blas3.hemm.up.right] (no hyperlink available)
- 17.11.4.4 Triangular matrix-matrix product [linalg.algs.blas3.trmm]
- 17.11.4.4.1 Overwriting triangular matrix-matrix left product [linalg.algs.blas3.trmm.ov.left] (no hyperlink available)
- 17.11.4.4.2 Overwriting triangular matrix-matrix right product [linalg.algs.blas3.trmm.ov.right] (no hyperlink available)
- 17.11.4.4.3 Updating triangular matrix-matrix left product [linalg.algs.blas3.trmm.up.left] (no hyperlink available)
- 17.11.4.4.4 Updating triangular matrix-matrix right product [linalg.algs.blas3.trmm.up.right] (no hyperlink available)
- 17.11.4.5 Rank-k update of a symmetric or Hermitian matrix [linalg.alg.blas3.rank-k]
- 17.11.4.5.1 Rank-k symmetric matrix update [linalg.alg.blas3.rank-k.syrk] (no hyperlink available)
- 17.11.4.5.2 Rank-k Hermitian matrix update [linalg.alg.blas3.rank-k.herk] (no hyperlink available)
- 17.11.4.6 Rank-2k update of a symmetric or Hermitian matrix [linalg.alg.blas3.rank2k]
- 17.11.4.6.1 Rank-2k symmetric matrix update [linalg.alg.blas3.rank2k.syr2k] (no hyperlink available)
- 17.11.4.6.2 Rank-2k Hermitian matrix update [linalg.alg.blas3.rank2k.her2k] (no hyperlink available)
- 17.11.4.7 Solve multiple triangular linear systems [linalg.alg.blas3.trsm]
- 17.11.4.7.1 Solve multiple triangular linear systems with triangular matrix on the left [linalg.alg.blas3.trsm.left] (no hyperlink available)
- 17.11.4.7.2 Solve multiple triangular linear systems with triangular matrix on the right [linalg.alg.blas3.trsm.right] (no hyperlink available)
- 17.11.4.1 General matrix-matrix product [linalg.algs.blas3.gemm]
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the linked P1673R12 paper, beginning with section 17.11.3.1 and its referenced sections 17.2, 17.3, 17.10, and 17.11.1. Then review the remaining unchecked sections in the wording content list. Done means the planned review has been completed and the corresponding checklist items can be marked complete.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 20/100