8484
8585 </ head >
8686 < body >
87- < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "1f5ecd47eeef6325dc158cc310c058bd6db44aa2", "source": "#include <array>\n#include <iostream>\n#include <linalg>\n#include <mdspan>\n#include <vector>\n\ntemplate <class Matrix>\nvoid print_mat(const Matrix& A) {\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = 0; j < A.extent(1) - 1; ++j) {\n std::cout << A[i, j] << ' ';\n }\n std::cout << A[i, A.extent(1) - 1] << '\\n';\n }\n}\n\ntemplate <class Matrix>\nvoid init_mat(Matrix& A, typename Matrix::value_type geta = 1) {\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = 0; j < A.extent(1); ++j) {\n A[i, j] = i * A.extent(1) + j + geta;\n }\n }\n}\n\ntemplate <class Matrix>\nvoid init_tria_mat(Matrix& A) {\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = i + 1; j < A.extent(1); ++j) {\n A[i, j] = i * A.extent(1) + j;\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 2;\n\n using Scalar = double;\n using Vector = std::vector<Scalar>;\n using TriangularMatrix = std::mdspan<\n Scalar,\n std::extents<size_t, N, N>,\n std::linalg::layout_blas_packed<\n std::linalg::upper_triangle_t,\n std::linalg::row_major_t>\n >;\n\n Vector A_vec(N * N);\n Vector C_vec(N * N);\n\n TriangularMatrix A(A_vec.data());\n std::mdspan C(C_vec.data(), N, N);\n\n init_tria_mat(A);\n init_mat(C);\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::triangular_matrix_left_product(\n A,\n std::linalg::upper_triangle,\n std::linalg::implicit_unit_diagonal,\n C);\n print_mat(C);\n\n // (2)\n init_mat(C);\n std::cout << \"(2)\\n\";\n std::linalg::triangular_matrix_left_product(\n std::execution::par,\n A,\n std::linalg::upper_triangle,\n std::linalg::implicit_unit_diagonal,\n C);\n print_mat(C);\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "triangular_matrix_right_product"]} ">
87+ < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "f14f882e782ced6e634b3c8d0d4f16faf4292509", "source": "#include <array>\n#include <iostream>\n#include <linalg>\n#include <mdspan>\n#include <vector>\n\ntemplate <class Matrix>\nvoid print_mat(const Matrix& A) {\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = 0; j < A.extent(1) - 1; ++j) {\n std::cout << A[i, j] << ' ';\n }\n std::cout << A[i, A.extent(1) - 1] << '\\n';\n }\n}\n\ntemplate <class Matrix>\nvoid init_mat(Matrix& A, typename Matrix::value_type geta = 1) {\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = 0; j < A.extent(1); ++j) {\n A[i, j] = i * A.extent(1) + j + geta;\n }\n }\n}\n\ntemplate <class Matrix>\nvoid init_tria_mat(Matrix& A) {\n for(int i = 0; i < A.extent(0); ++i) {\n for(int j = i + 1; j < A.extent(1); ++j) {\n A[i, j] = i * A.extent(1) + j;\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 2;\n\n using Scalar = double;\n using Vector = std::vector<Scalar>;\n using TriangularMatrix = std::mdspan<\n Scalar,\n std::extents<size_t, N, N>,\n std::linalg::layout_blas_packed<\n std::linalg::upper_triangle_t,\n std::linalg::row_major_t>\n >;\n\n Vector A_vec(N * N);\n Vector C_vec(N * N);\n\n TriangularMatrix A(A_vec.data());\n std::mdspan C(C_vec.data(), N, N);\n\n init_tria_mat(A);\n init_mat(C);\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::triangular_matrix_right_product(\n A,\n std::linalg::upper_triangle,\n std::linalg::implicit_unit_diagonal,\n C);\n print_mat(C);\n\n // (2)\n init_mat(C);\n std::cout << \"(2)\\n\";\n std::linalg::triangular_matrix_right_product(\n std::execution::par,\n A,\n std::linalg::upper_triangle,\n std::linalg::implicit_unit_diagonal,\n C);\n print_mat(C);\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "triangular_matrix_right_product"]} ">
8888 < nav class ="navbar navbar-default " role ="navigation ">
8989 < div class ="container-fluid ">
9090 < div class ="navbar-header ">
204204
205205 < p class ="text-right "> < small >
206206 最終更新日時(UTC):
207- < span itemprop ="datePublished " content ="2025-07-08T15:33:39 ">
208- 2025年07月08日 15時33分39秒
207+ < span itemprop ="datePublished " content ="2025-09-24T06:16:18 ">
208+ 2025年09月24日 06時16分18秒
209209 </ span >
210210 < br />
211211 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
212- < span itemprop ="name "> Akira Takahashi </ span >
212+ < span itemprop ="name "> Raclamusi </ span >
213213 </ span >
214214 が更新
215215 </ small > </ p >
@@ -287,7 +287,7 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
287287< p > $O(\verb|A.extent(0)| \times \verb|A.extent(1)| \times \verb|C.extent(0)|)$</ p >
288288< h2 > 例</ h2 >
289289< p > < strong > [注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</ strong > </ p >
290- < p > < div class ="yata " id ="1f5ecd47eeef6325dc158cc310c058bd6db44aa2 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../array.html "> <array></ a > </ span > < span class ="cp "> </ span >
290+ < p > < div class ="yata " id ="f14f882e782ced6e634b3c8d0d4f16faf4292509 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../array.html "> <array></ a > </ span > < span class ="cp "> </ span >
291291< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
292292< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../linalg.html "> <linalg></ a > </ span > < span class ="cp "> </ span >
293293< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../mdspan.html "> <mdspan></ a > </ span > < span class ="cp "> </ span >
@@ -346,7 +346,7 @@ <h2>例</h2>
346346
347347 < span class ="c1 "> // (1)</ span >
348348 < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "(1)</ span > < span class ="se "> \n</ span > < span class ="s "> "</ span > < span class ="p "> ;</ span >
349- < span class ="n "> < span style ="color:#ff0000 "> std::linalg::triangular_matrix_left_product </ span > </ span > < span class ="p "> (</ span >
349+ < span class ="n "> < span style ="color:#ff0000 "> std::linalg::triangular_matrix_right_product </ span > </ span > < span class ="p "> (</ span >
350350 < span class ="n "> A</ span > < span class ="p "> ,</ span >
351351 < span class ="n "> < a href ="upper_triangle_t.html "> std::linalg::upper_triangle</ a > </ span > < span class ="p "> ,</ span >
352352 < span class ="n "> < a href ="implicit_unit_diagonal_t.html "> std::linalg::implicit_unit_diagonal</ a > </ span > < span class ="p "> ,</ span >
@@ -356,7 +356,7 @@ <h2>例</h2>
356356 < span class ="c1 "> // (2)</ span >
357357 < span class ="n "> init_mat</ span > < span class ="p "> (</ span > < span class ="n "> C</ span > < span class ="p "> );</ span >
358358 < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="s "> "(2)</ span > < span class ="se "> \n</ span > < span class ="s "> "</ span > < span class ="p "> ;</ span >
359- < span class ="n "> < span style ="color:#ff0000 "> std::linalg::triangular_matrix_left_product </ span > </ span > < span class ="p "> (</ span >
359+ < span class ="n "> < span style ="color:#ff0000 "> std::linalg::triangular_matrix_right_product </ span > </ span > < span class ="p "> (</ span >
360360 < span class ="n "> < a href ="../execution/execution/execution_policy.html "> std::execution::par</ a > </ span > < span class ="p "> ,</ span >
361361 < span class ="n "> A</ span > < span class ="p "> ,</ span >
362362 < span class ="n "> < a href ="upper_triangle_t.html "> std::linalg::upper_triangle</ a > </ span > < span class ="p "> ,</ span >
0 commit comments