84
84
85
85
</ head >
86
86
< body >
87
- < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "a2a66a0d88359edc033efe7cd3c98f8f6e38cae0", "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 < i; ++j) {\n std::cout << A[j, i] << ' ';\n }\n for(int j = i; 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 Vector>\nvoid init_vec(Vector& v) {\n for (int i = 0; i < v.extent(0); ++i) {\n v[i] = std::complex<double>(0, i);\n }\n}\n\ntemplate <class Matrix>\nvoid init_mat(Matrix& A) {\n for(int i = 0; i < A.extent(0); ++i) {\n A[i,j] = std::complex<double>(i, 0);\n for(int j = i + 1; j < A.extent(1); ++j) {\n A[i,j] = std::complex<double>(i, j);\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n\n std::vector<std::complex<double>> A_vec(N * N);\n std::vector<std::complex<double>> x_vec(N);\n std::array<std::complex<double>, N> y_vec;\n\n std::mdspan<\n std::complex<double>,\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 > A(A_vec.data());\n std::mdspan x(x_vec.data(), N);\n std::mdspan y(y_vec.data(), N);\n\n init_mat(A);\n init_vec(x);\n init_vec(y);\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::matrix_rank_1_update(\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (2)\n init_mat(A);\n std::cout << \"(2)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (3)\n init_mat(A);\n std::cout << \"(3)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (4)\n init_mat(A);\n std::cout << \"(4)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "hermitian_matrix_rank_1_update"]} ">
87
+ < header data-kunai-mdinfo ="{"meta": {"header": ["linalg"], "id-type": ["function template"], "namespace": ["std::linalg"], "cpp": ["cpp26"]}, "sources": [{"id": "1792939fb57232efc6310058b9ce3580f17d6fa9", "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 < i; ++j) {\n std::cout << A[j, i] << ' ';\n }\n for(int j = i; 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 Vector>\nvoid init_vec(Vector& v) {\n for (int i = 0; i < v.extent(0); ++i) {\n v[i] = std::complex<double>(0, i);\n }\n}\n\ntemplate <class Matrix>\nvoid init_mat(Matrix& A) {\n for(int i = 0; i < A.extent(0); ++i) {\n A[i,j] = std::complex<double>(i, 0);\n for(int j = i + 1; j < A.extent(1); ++j) {\n A[i,j] = std::complex<double>(i, j);\n }\n }\n}\n\nint main()\n{\n constexpr size_t N = 4;\n\n std::vector<std::complex<double>> A_vec(N * N);\n std::vector<std::complex<double>> x_vec(N);\n\n std::mdspan<\n std::complex<double>,\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 > A(A_vec.data());\n std::mdspan x(x_vec.data(), N);\n\n init_mat(A);\n init_vec(x);\n\n // (1)\n std::cout << \"(1)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (2)\n init_mat(A);\n std::cout << \"(2)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (3)\n init_mat(A);\n std::cout << \"(3)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n // (4)\n init_mat(A);\n std::cout << \"(4)\\n\";\n std::linalg::hermitian_matrix_rank_1_update(\n std::execution::par,\n -1.0,\n x,\n A,\n std::linalg::upper_triangle);\n print_mat(A);\n\n return 0;\n}\n"}], "page_id": ["reference", "linalg", "hermitian_matrix_rank_1_update"]} ">
88
88
< nav class ="navbar navbar-default " role ="navigation ">
89
89
< div class ="container-fluid ">
90
90
< div class ="navbar-header ">
204
204
205
205
< p class ="text-right "> < small >
206
206
最終更新日時(UTC):
207
- < span itemprop ="datePublished " content ="2024-07-04T09:27:11 ">
208
- 2024年07月04日 09時27分11秒
207
+ < span itemprop ="datePublished " content ="2024-07-06T05:58:05 ">
208
+ 2024年07月06日 05時58分05秒
209
209
</ span >
210
210
< br />
211
211
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -306,7 +306,7 @@ <h2>備考</h2>
306
306
< p > (3), (4)は$A \leftarrow A - xx^T$を行うために用意された。</ p >
307
307
< h2 > 例</ h2 >
308
308
< p > < strong > [注意] 処理系にあるコンパイラで確認していないため、間違っているかもしれません。</ strong > </ p >
309
- < p > < div class ="yata " id ="a2a66a0d88359edc033efe7cd3c98f8f6e38cae0 "> < 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 >
309
+ < p > < div class ="yata " id ="1792939fb57232efc6310058b9ce3580f17d6fa9 "> < 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 >
310
310
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
311
311
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../linalg.html "> <linalg></ a > </ span > < span class ="cp "> </ span >
312
312
< span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../mdspan.html "> <mdspan></ a > </ span > < span class ="cp "> </ span >
@@ -348,7 +348,6 @@ <h2>例</h2>
348
348
349
349
< span class ="n "> < a href ="../vector/vector.html "> std::vector</ a > </ span > < span class ="o "> <</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> complex</ span > < span class ="o "> <</ span > < span class ="kt "> double</ span > < span class ="o "> >></ span > < span class ="n "> A_vec</ span > < span class ="p "> (</ span > < span class ="n "> N</ span > < span class ="o "> *</ span > < span class ="n "> N</ span > < span class ="p "> );</ span >
350
350
< span class ="n "> < a href ="../vector/vector.html "> std::vector</ a > </ span > < span class ="o "> <</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> complex</ span > < span class ="o "> <</ span > < span class ="kt "> double</ span > < span class ="o "> >></ span > < span class ="n "> x_vec</ span > < span class ="p "> (</ span > < span class ="n "> N</ span > < span class ="p "> );</ span >
351
- < span class ="n "> < a href ="../array/array.html "> std::array</ a > </ span > < span class ="o "> <</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> complex</ span > < span class ="o "> <</ span > < span class ="kt "> double</ span > < span class ="o "> ></ span > < span class ="p "> ,</ span > < span class ="n "> N</ span > < span class ="o "> ></ span > < span class ="n "> y_vec</ span > < span class ="p "> ;</ span >
352
351
353
352
< span class ="n "> < a href ="../mdspan/mdspan.html "> std::mdspan</ a > </ span > < span class ="o "> <</ span >
354
353
< span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> complex</ span > < span class ="o "> <</ span > < span class ="kt "> double</ span > < span class ="o "> ></ span > < span class ="p "> ,</ span >
@@ -358,15 +357,13 @@ <h2>例</h2>
358
357
< span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> linalg</ span > < span class ="o "> ::</ span > < span class ="n "> row_major_t</ span > < span class ="o "> ></ span >
359
358
< span class ="o "> ></ span > < span class ="n "> A</ span > < span class ="p "> (</ span > < span class ="n "> A_vec</ span > < span class ="p "> .</ span > < span class ="n "> data</ span > < span class ="p "> ());</ span >
360
359
< span class ="n "> < a href ="../mdspan/mdspan.html "> std::mdspan</ a > </ span > < span class ="nf "> x</ span > < span class ="p "> (</ span > < span class ="n "> x_vec</ span > < span class ="p "> .</ span > < span class ="n "> data</ span > < span class ="p "> (),</ span > < span class ="n "> N</ span > < span class ="p "> );</ span >
361
- < span class ="n "> < a href ="../mdspan/mdspan.html "> std::mdspan</ a > </ span > < span class ="nf "> y</ span > < span class ="p "> (</ span > < span class ="n "> y_vec</ span > < span class ="p "> .</ span > < span class ="n "> data</ span > < span class ="p "> (),</ span > < span class ="n "> N</ span > < span class ="p "> );</ span >
362
360
363
361
< span class ="n "> init_mat</ span > < span class ="p "> (</ span > < span class ="n "> A</ span > < span class ="p "> );</ span >
364
362
< span class ="n "> init_vec</ span > < span class ="p "> (</ span > < span class ="n "> x</ span > < span class ="p "> );</ span >
365
- < span class ="n "> init_vec</ span > < span class ="p "> (</ span > < span class ="n "> y</ span > < span class ="p "> );</ span >
366
363
367
364
< span class ="c1 "> // (1)</ span >
368
365
< 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 >
369
- < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> linalg</ span > < span class ="o "> ::</ span > < span class ="n "> matrix_rank_1_update </ span > < span class ="p "> (</ span >
366
+ < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> linalg</ span > < span class ="o "> ::</ span > < span class ="n "> hermitian_matrix_rank_1_update </ span > < span class ="p "> (</ span >
370
367
< span class ="n "> x</ span > < span class ="p "> ,</ span >
371
368
< span class ="n "> A</ span > < span class ="p "> ,</ span >
372
369
< span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> linalg</ span > < span class ="o "> ::</ span > < span class ="n "> upper_triangle</ span > < span class ="p "> );</ span >
0 commit comments