From f123c6dee27f26710d7b1bdc6cb44897c5026acf Mon Sep 17 00:00:00 2001 From: Jason Christopherson Date: Tue, 13 Feb 2024 18:06:44 -0600 Subject: [PATCH] Update documentation --- docs/html/annotated.html | 132 +- docs/html/annotated_dup.js | 33 + docs/html/blas_8f90_source.html | 16 +- docs/html/classes.html | 48 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 6 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 4 +- .../dir_d44c64559bbebec7f509842c48db8b23.html | 2 +- docs/html/doxygen_crawl.html | 75 + docs/html/files.html | 6 +- docs/html/functions.html | 28 +- docs/html/functions_func.html | 43 +- docs/html/functions_vars.html | 29 +- docs/html/globals.html | 2 +- docs/html/globals_func.html | 2 +- docs/html/graph_legend.html | 2 +- docs/html/index.html | 8 +- docs/html/interfaceblas_1_1ddot-members.html | 118 + docs/html/interfaceblas_1_1ddot.html | 169 + docs/html/interfaceblas_1_1dgbmv-members.html | 2 +- docs/html/interfaceblas_1_1dgbmv.html | 2 +- docs/html/interfaceblas_1_1dgemm-members.html | 2 +- docs/html/interfaceblas_1_1dgemm.html | 2 +- docs/html/interfaceblas_1_1dgemv-members.html | 2 +- docs/html/interfaceblas_1_1dgemv.html | 2 +- docs/html/interfaceblas_1_1dscal-members.html | 2 +- docs/html/interfaceblas_1_1dscal.html | 2 +- docs/html/interfaceblas_1_1dtrsm-members.html | 2 +- docs/html/interfaceblas_1_1dtrsm.html | 2 +- docs/html/interfaceblas_1_1dtrsv-members.html | 2 +- docs/html/interfaceblas_1_1dtrsv.html | 2 +- .../html/interfaceblas_1_1zdscal-members.html | 2 +- docs/html/interfaceblas_1_1zdscal.html | 2 +- docs/html/interfaceblas_1_1zgbmv-members.html | 2 +- docs/html/interfaceblas_1_1zgbmv.html | 2 +- docs/html/interfaceblas_1_1zgemm-members.html | 2 +- docs/html/interfaceblas_1_1zgemm.html | 2 +- docs/html/interfaceblas_1_1zgemv-members.html | 2 +- docs/html/interfaceblas_1_1zgemv.html | 2 +- docs/html/interfaceblas_1_1zscal-members.html | 2 +- docs/html/interfaceblas_1_1zscal.html | 2 +- docs/html/interfaceblas_1_1ztrsm-members.html | 2 +- docs/html/interfaceblas_1_1ztrsm.html | 2 +- docs/html/interfaceblas_1_1ztrsv-members.html | 2 +- docs/html/interfaceblas_1_1ztrsv.html | 2 +- .../interfacelapack_1_1dgeev-members.html | 2 +- docs/html/interfacelapack_1_1dgeev.html | 2 +- .../interfacelapack_1_1dgelqf-members.html | 2 +- docs/html/interfacelapack_1_1dgelqf.html | 2 +- .../interfacelapack_1_1dgels-members.html | 2 +- docs/html/interfacelapack_1_1dgels.html | 2 +- .../interfacelapack_1_1dgelss-members.html | 2 +- docs/html/interfacelapack_1_1dgelss.html | 2 +- .../interfacelapack_1_1dgelsy-members.html | 2 +- docs/html/interfacelapack_1_1dgelsy.html | 2 +- .../interfacelapack_1_1dgeqp3-members.html | 2 +- docs/html/interfacelapack_1_1dgeqp3.html | 2 +- .../interfacelapack_1_1dgeqrf-members.html | 2 +- docs/html/interfacelapack_1_1dgeqrf.html | 2 +- .../interfacelapack_1_1dgesvd-members.html | 2 +- docs/html/interfacelapack_1_1dgesvd.html | 2 +- .../interfacelapack_1_1dgetrf-members.html | 2 +- docs/html/interfacelapack_1_1dgetrf.html | 2 +- .../interfacelapack_1_1dgetri-members.html | 2 +- docs/html/interfacelapack_1_1dgetri.html | 2 +- .../interfacelapack_1_1dgetrs-members.html | 2 +- docs/html/interfacelapack_1_1dgetrs.html | 2 +- .../interfacelapack_1_1dggev-members.html | 2 +- docs/html/interfacelapack_1_1dggev.html | 2 +- .../interfacelapack_1_1dlaic1-members.html | 2 +- docs/html/interfacelapack_1_1dlaic1.html | 2 +- .../interfacelapack_1_1dlamch-members.html | 2 +- docs/html/interfacelapack_1_1dlamch.html | 2 +- .../interfacelapack_1_1dlaset-members.html | 2 +- docs/html/interfacelapack_1_1dlaset.html | 2 +- .../interfacelapack_1_1dlasrt-members.html | 2 +- docs/html/interfacelapack_1_1dlasrt.html | 2 +- .../interfacelapack_1_1dorglq-members.html | 2 +- docs/html/interfacelapack_1_1dorglq.html | 2 +- .../interfacelapack_1_1dorgqr-members.html | 2 +- docs/html/interfacelapack_1_1dorgqr.html | 2 +- .../interfacelapack_1_1dormlq-members.html | 2 +- docs/html/interfacelapack_1_1dormlq.html | 2 +- .../interfacelapack_1_1dormqr-members.html | 2 +- docs/html/interfacelapack_1_1dormqr.html | 2 +- .../interfacelapack_1_1dormrz-members.html | 2 +- docs/html/interfacelapack_1_1dormrz.html | 2 +- .../interfacelapack_1_1dpotrf-members.html | 2 +- docs/html/interfacelapack_1_1dpotrf.html | 2 +- .../interfacelapack_1_1dpotrs-members.html | 2 +- docs/html/interfacelapack_1_1dpotrs.html | 2 +- .../interfacelapack_1_1dsyev-members.html | 2 +- docs/html/interfacelapack_1_1dsyev.html | 2 +- .../interfacelapack_1_1dtzrzf-members.html | 2 +- docs/html/interfacelapack_1_1dtzrzf.html | 2 +- .../interfacelapack_1_1zgeev-members.html | 2 +- docs/html/interfacelapack_1_1zgeev.html | 2 +- .../interfacelapack_1_1zgelqf-members.html | 2 +- docs/html/interfacelapack_1_1zgelqf.html | 2 +- .../interfacelapack_1_1zgels-members.html | 2 +- docs/html/interfacelapack_1_1zgels.html | 2 +- .../interfacelapack_1_1zgelss-members.html | 2 +- docs/html/interfacelapack_1_1zgelss.html | 2 +- .../interfacelapack_1_1zgelsy-members.html | 2 +- docs/html/interfacelapack_1_1zgelsy.html | 2 +- .../interfacelapack_1_1zgeqp3-members.html | 2 +- docs/html/interfacelapack_1_1zgeqp3.html | 2 +- .../interfacelapack_1_1zgeqrf-members.html | 2 +- docs/html/interfacelapack_1_1zgeqrf.html | 2 +- .../interfacelapack_1_1zgesvd-members.html | 2 +- docs/html/interfacelapack_1_1zgesvd.html | 2 +- .../interfacelapack_1_1zgetrf-members.html | 2 +- docs/html/interfacelapack_1_1zgetrf.html | 2 +- .../interfacelapack_1_1zgetri-members.html | 2 +- docs/html/interfacelapack_1_1zgetri.html | 2 +- .../interfacelapack_1_1zgetrs-members.html | 2 +- docs/html/interfacelapack_1_1zgetrs.html | 2 +- .../interfacelapack_1_1zlaic1-members.html | 2 +- docs/html/interfacelapack_1_1zlaic1.html | 2 +- .../interfacelapack_1_1zpotrf-members.html | 2 +- docs/html/interfacelapack_1_1zpotrf.html | 2 +- .../interfacelapack_1_1zpotrs-members.html | 2 +- docs/html/interfacelapack_1_1zpotrs.html | 2 +- .../interfacelapack_1_1ztzrzf-members.html | 2 +- docs/html/interfacelapack_1_1ztzrzf.html | 2 +- .../interfacelapack_1_1zunglq-members.html | 2 +- docs/html/interfacelapack_1_1zunglq.html | 2 +- .../interfacelapack_1_1zungqr-members.html | 2 +- docs/html/interfacelapack_1_1zungqr.html | 2 +- .../interfacelapack_1_1zunmlq-members.html | 2 +- docs/html/interfacelapack_1_1zunmlq.html | 2 +- .../interfacelapack_1_1zunmqr-members.html | 2 +- docs/html/interfacelapack_1_1zunmqr.html | 2 +- .../interfacelapack_1_1zunmrz-members.html | 2 +- docs/html/interfacelapack_1_1zunmrz.html | 2 +- ...nalg_1_1band__diag__mtx__mult-members.html | 2 +- ...erfacelinalg_1_1band__diag__mtx__mult.html | 4 +- ...facelinalg_1_1band__mtx__mult-members.html | 2 +- .../interfacelinalg_1_1band__mtx__mult.html | 4 +- ...g_1_1band__mtx__to__full__mtx-members.html | 2 +- ...acelinalg_1_1band__mtx__to__full__mtx.html | 4 +- ...celinalg_1_1banded__to__dense-members.html | 119 + .../interfacelinalg_1_1banded__to__dense.html | 157 + ...acelinalg_1_1cholesky__factor-members.html | 2 +- .../interfacelinalg_1_1cholesky__factor.html | 10 +- ..._1_1cholesky__rank1__downdate-members.html | 2 +- ...celinalg_1_1cholesky__rank1__downdate.html | 10 +- ...lg_1_1cholesky__rank1__update-members.html | 2 +- ...facelinalg_1_1cholesky__rank1__update.html | 10 +- ...celinalg_1_1dense__to__banded-members.html | 119 + .../interfacelinalg_1_1dense__to__banded.html | 155 + docs/html/interfacelinalg_1_1det-members.html | 2 +- docs/html/interfacelinalg_1_1det.html | 4 +- ...facelinalg_1_1diag__mtx__mult-members.html | 3 +- .../interfacelinalg_1_1diag__mtx__mult.html | 35 +- .../interfacelinalg_1_1eigen-members.html | 2 +- docs/html/interfacelinalg_1_1eigen.html | 6 +- ...celinalg_1_1extract__diagonal-members.html | 120 + .../interfacelinalg_1_1extract__diagonal.html | 156 + .../interfacelinalg_1_1form__lq-members.html | 2 +- docs/html/interfacelinalg_1_1form__lq.html | 12 +- .../interfacelinalg_1_1form__lu-members.html | 2 +- docs/html/interfacelinalg_1_1form__lu.html | 13 +- .../interfacelinalg_1_1form__qr-members.html | 2 +- docs/html/interfacelinalg_1_1form__qr.html | 14 +- ...interfacelinalg_1_1lq__factor-members.html | 2 +- docs/html/interfacelinalg_1_1lq__factor.html | 12 +- ...interfacelinalg_1_1lu__factor-members.html | 7 +- docs/html/interfacelinalg_1_1lu__factor.html | 31 +- .../interfacelinalg_1_1matmul-members.html | 119 + docs/html/interfacelinalg_1_1matmul.html | 158 + ...terfacelinalg_1_1mtx__inverse-members.html | 2 +- .../html/interfacelinalg_1_1mtx__inverse.html | 9 +- .../interfacelinalg_1_1mtx__mult-members.html | 2 +- docs/html/interfacelinalg_1_1mtx__mult.html | 4 +- ...erfacelinalg_1_1mtx__pinverse-members.html | 2 +- .../interfacelinalg_1_1mtx__pinverse.html | 9 +- .../interfacelinalg_1_1mtx__rank-members.html | 2 +- docs/html/interfacelinalg_1_1mtx__rank.html | 4 +- .../interfacelinalg_1_1mult__lq-members.html | 2 +- docs/html/interfacelinalg_1_1mult__lq.html | 10 +- .../interfacelinalg_1_1mult__qr-members.html | 2 +- docs/html/interfacelinalg_1_1mult__qr.html | 10 +- .../interfacelinalg_1_1mult__rz-members.html | 2 +- docs/html/interfacelinalg_1_1mult__rz.html | 4 +- ...rfacelinalg_1_1nonzero__count-members.html | 119 + .../interfacelinalg_1_1nonzero__count.html | 148 + ...facelinalg_1_1operator_07-_08-members.html | 118 + .../interfacelinalg_1_1operator_07-_08.html | 145 + ...celinalg_1_1operator_07_09_08-members.html | 118 + .../interfacelinalg_1_1operator_07_09_08.html | 145 + ...acelinalg_1_1operator_07_2_08-members.html | 118 + .../interfacelinalg_1_1operator_07_2_08.html | 145 + ...acelinalg_1_1operator_07_5_08-members.html | 119 + .../interfacelinalg_1_1operator_07_5_08.html | 149 + ...rfacelinalg_1_1pgmres__solver-members.html | 118 + .../interfacelinalg_1_1pgmres__solver.html | 166 + ...interfacelinalg_1_1qr__factor-members.html | 2 +- docs/html/interfacelinalg_1_1qr__factor.html | 8 +- ...celinalg_1_1qr__rank1__update-members.html | 2 +- .../interfacelinalg_1_1qr__rank1__update.html | 12 +- ...erfacelinalg_1_1rank1__update-members.html | 2 +- .../interfacelinalg_1_1rank1__update.html | 4 +- ...elinalg_1_1recip__mult__array-members.html | 2 +- ...interfacelinalg_1_1recip__mult__array.html | 4 +- ...interfacelinalg_1_1rz__factor-members.html | 2 +- docs/html/interfacelinalg_1_1rz__factor.html | 4 +- .../html/interfacelinalg_1_1size-members.html | 119 + docs/html/interfacelinalg_1_1size.html | 149 + ...facelinalg_1_1solve__cholesky-members.html | 2 +- .../interfacelinalg_1_1solve__cholesky.html | 10 +- ...nalg_1_1solve__least__squares-members.html | 2 +- ...erfacelinalg_1_1solve__least__squares.html | 6 +- ..._1solve__least__squares__full-members.html | 2 +- ...linalg_1_1solve__least__squares__full.html | 6 +- ...1_1solve__least__squares__svd-members.html | 2 +- ...elinalg_1_1solve__least__squares__svd.html | 6 +- .../interfacelinalg_1_1solve__lq-members.html | 2 +- docs/html/interfacelinalg_1_1solve__lq.html | 8 +- .../interfacelinalg_1_1solve__lu-members.html | 11 +- docs/html/interfacelinalg_1_1solve__lu.html | 28 +- .../interfacelinalg_1_1solve__qr-members.html | 2 +- docs/html/interfacelinalg_1_1solve__qr.html | 8 +- ..._1_1solve__triangular__system-members.html | 2 +- ...celinalg_1_1solve__triangular__system.html | 13 +- .../html/interfacelinalg_1_1sort-members.html | 2 +- docs/html/interfacelinalg_1_1sort.html | 4 +- ...nalg_1_1sparse__direct__solve-members.html | 118 + ...erfacelinalg_1_1sparse__direct__solve.html | 153 + docs/html/interfacelinalg_1_1svd-members.html | 2 +- docs/html/interfacelinalg_1_1svd.html | 11 +- .../html/interfacelinalg_1_1swap-members.html | 2 +- docs/html/interfacelinalg_1_1swap.html | 4 +- .../interfacelinalg_1_1trace-members.html | 2 +- docs/html/interfacelinalg_1_1trace.html | 4 +- .../interfacelinalg_1_1transpose-members.html | 118 + docs/html/interfacelinalg_1_1transpose.html | 144 + ...rfacelinalg_1_1tri__mtx__mult-members.html | 2 +- .../interfacelinalg_1_1tri__mtx__mult.html | 4 +- .../interfaceqrupdate_1_1dch1dn-members.html | 2 +- docs/html/interfaceqrupdate_1_1dch1dn.html | 2 +- .../interfaceqrupdate_1_1dch1up-members.html | 2 +- docs/html/interfaceqrupdate_1_1dch1up.html | 2 +- .../interfaceqrupdate_1_1dqr1up-members.html | 2 +- docs/html/interfaceqrupdate_1_1dqr1up.html | 2 +- .../interfaceqrupdate_1_1zch1dn-members.html | 2 +- docs/html/interfaceqrupdate_1_1zch1dn.html | 2 +- .../interfaceqrupdate_1_1zch1up-members.html | 2 +- docs/html/interfaceqrupdate_1_1zch1up.html | 2 +- .../interfaceqrupdate_1_1zqr1up-members.html | 2 +- docs/html/interfaceqrupdate_1_1zqr1up.html | 2 +- .../interfacesparskit_1_1amub-members.html | 118 + docs/html/interfacesparskit_1_1amub.html | 247 ++ .../interfacesparskit_1_1aplb-members.html | 118 + docs/html/interfacesparskit_1_1aplb.html | 246 ++ .../interfacesparskit_1_1aplsb-members.html | 118 + docs/html/interfacesparskit_1_1aplsb.html | 247 ++ .../interfacesparskit_1_1bndcsr-members.html | 118 + docs/html/interfacesparskit_1_1bndcsr.html | 224 ++ .../interfacesparskit_1_1csrcsc2-members.html | 118 + docs/html/interfacesparskit_1_1csrcsc2.html | 213 ++ .../interfacesparskit_1_1csrmsr-members.html | 118 + docs/html/interfacesparskit_1_1csrmsr.html | 201 + .../interfacesparskit_1_1getdia-members.html | 118 + docs/html/interfacesparskit_1_1getdia.html | 209 ++ .../interfacesparskit_1_1getelm-members.html | 118 + docs/html/interfacesparskit_1_1getelm.html | 196 + .../interfacesparskit_1_1ilud-members.html | 118 + docs/html/interfacesparskit_1_1ilud.html | 238 ++ .../interfacesparskit_1_1iludp-members.html | 118 + docs/html/interfacesparskit_1_1iludp.html | 255 ++ .../interfacesparskit_1_1ilut-members.html | 118 + docs/html/interfacesparskit_1_1ilut.html | 240 ++ .../interfacesparskit_1_1ilutp-members.html | 118 + docs/html/interfacesparskit_1_1ilutp.html | 262 ++ .../interfacesparskit_1_1lusol-members.html | 118 + docs/html/interfacesparskit_1_1lusol.html | 189 + .../interfacesparskit_1_1msrcsr-members.html | 118 + docs/html/interfacesparskit_1_1msrcsr.html | 201 + .../interfacesparskit_1_1pgmres-members.html | 118 + docs/html/interfacesparskit_1_1pgmres.html | 248 ++ docs/html/lapack_8f90_source.html | 2 +- docs/html/linalg_8f90_source.html | 3220 ++++++++++------- docs/html/linalg_8h.html | 2 +- docs/html/linalg_8h_source.html | 2 +- docs/html/linalg__basic_8f90_source.html | 2963 ++++++++------- docs/html/linalg__eigen_8f90_source.html | 2 +- docs/html/linalg__factor_8f90_source.html | 2 +- docs/html/linalg__solve_8f90_source.html | 2 +- docs/html/linalg__sorting_8f90_source.html | 2 +- docs/html/linalg__sparse_8f90_source.html | 1575 ++++++++ docs/html/menudata.js | 6 +- docs/html/namespaceblas.html | 4 +- docs/html/namespaceblas.js | 1 + docs/html/namespacelinalg.html | 69 +- docs/html/namespacelinalg.js | 15 + docs/html/namespacemembers.html | 2 +- docs/html/namespacemembers_vars.html | 2 +- docs/html/namespaceqrupdate.html | 2 +- docs/html/namespaces.html | 140 +- docs/html/namespaces_dup.js | 3 +- docs/html/namespacesparskit.html | 171 + docs/html/namespacesparskit.js | 18 + docs/html/navtreedata.js | 9 +- docs/html/navtreeindex0.js | 332 +- docs/html/navtreeindex1.js | 104 +- docs/html/qrupdate_8f90_source.html | 2 +- docs/html/search/all_0.js | 7 +- docs/html/search/all_1.js | 9 +- docs/html/search/all_10.js | 6 + docs/html/search/all_11.js | 4 + docs/html/search/all_12.js | 33 + docs/html/search/all_2.js | 43 +- docs/html/search/all_3.js | 39 +- docs/html/search/all_4.js | 5 +- docs/html/search/all_5.js | 4 +- docs/html/search/all_6.js | 93 +- docs/html/search/all_7.js | 13 +- docs/html/search/all_8.js | 94 +- docs/html/search/all_9.js | 13 +- docs/html/search/all_a.js | 12 +- docs/html/search/all_b.js | 6 +- docs/html/search/all_c.js | 32 +- docs/html/search/all_d.js | 6 +- docs/html/search/all_e.js | 5 +- docs/html/search/all_f.js | 17 +- docs/html/search/classes_0.js | 6 +- docs/html/search/classes_1.js | 8 +- docs/html/search/classes_10.js | 6 + docs/html/search/classes_11.js | 33 + docs/html/search/classes_2.js | 42 +- docs/html/search/classes_3.js | 39 +- docs/html/search/classes_4.js | 5 +- docs/html/search/classes_5.js | 5 +- docs/html/search/classes_6.js | 9 +- docs/html/search/classes_7.js | 6 +- docs/html/search/classes_8.js | 6 +- docs/html/search/classes_9.js | 21 +- docs/html/search/classes_a.js | 3 +- docs/html/search/classes_b.js | 34 +- docs/html/search/classes_c.js | 5 + docs/html/search/classes_d.js | 5 + docs/html/search/classes_e.js | 6 + docs/html/search/classes_f.js | 16 + docs/html/search/functions_0.js | 76 +- docs/html/search/functions_1.js | 85 +- docs/html/search/namespaces_3.js | 4 + docs/html/search/searchdata.js | 10 +- docs/html/search/variables_0.js | 12 +- docs/html/search/variables_1.js | 2 +- docs/html/search/variables_2.js | 12 +- docs/html/search/variables_3.js | 2 +- docs/html/search/variables_4.js | 2 +- docs/html/sparskit_8f90_source.html | 327 ++ .../structlinalg_1_1csr__matrix-members.html | 121 + docs/html/structlinalg_1_1csr__matrix.html | 222 ++ docs/html/structlinalg_1_1csr__matrix.js | 7 + .../structlinalg_1_1msr__matrix-members.html | 119 + docs/html/structlinalg_1_1msr__matrix.html | 175 + docs/html/structlinalg_1_1msr__matrix.js | 5 + 359 files changed, 16820 insertions(+), 3842 deletions(-) create mode 100644 docs/html/interfaceblas_1_1ddot-members.html create mode 100644 docs/html/interfaceblas_1_1ddot.html create mode 100644 docs/html/interfacelinalg_1_1banded__to__dense-members.html create mode 100644 docs/html/interfacelinalg_1_1banded__to__dense.html create mode 100644 docs/html/interfacelinalg_1_1dense__to__banded-members.html create mode 100644 docs/html/interfacelinalg_1_1dense__to__banded.html create mode 100644 docs/html/interfacelinalg_1_1extract__diagonal-members.html create mode 100644 docs/html/interfacelinalg_1_1extract__diagonal.html create mode 100644 docs/html/interfacelinalg_1_1matmul-members.html create mode 100644 docs/html/interfacelinalg_1_1matmul.html create mode 100644 docs/html/interfacelinalg_1_1nonzero__count-members.html create mode 100644 docs/html/interfacelinalg_1_1nonzero__count.html create mode 100644 docs/html/interfacelinalg_1_1operator_07-_08-members.html create mode 100644 docs/html/interfacelinalg_1_1operator_07-_08.html create mode 100644 docs/html/interfacelinalg_1_1operator_07_09_08-members.html create mode 100644 docs/html/interfacelinalg_1_1operator_07_09_08.html create mode 100644 docs/html/interfacelinalg_1_1operator_07_2_08-members.html create mode 100644 docs/html/interfacelinalg_1_1operator_07_2_08.html create mode 100644 docs/html/interfacelinalg_1_1operator_07_5_08-members.html create mode 100644 docs/html/interfacelinalg_1_1operator_07_5_08.html create mode 100644 docs/html/interfacelinalg_1_1pgmres__solver-members.html create mode 100644 docs/html/interfacelinalg_1_1pgmres__solver.html create mode 100644 docs/html/interfacelinalg_1_1size-members.html create mode 100644 docs/html/interfacelinalg_1_1size.html create mode 100644 docs/html/interfacelinalg_1_1sparse__direct__solve-members.html create mode 100644 docs/html/interfacelinalg_1_1sparse__direct__solve.html create mode 100644 docs/html/interfacelinalg_1_1transpose-members.html create mode 100644 docs/html/interfacelinalg_1_1transpose.html create mode 100644 docs/html/interfacesparskit_1_1amub-members.html create mode 100644 docs/html/interfacesparskit_1_1amub.html create mode 100644 docs/html/interfacesparskit_1_1aplb-members.html create mode 100644 docs/html/interfacesparskit_1_1aplb.html create mode 100644 docs/html/interfacesparskit_1_1aplsb-members.html create mode 100644 docs/html/interfacesparskit_1_1aplsb.html create mode 100644 docs/html/interfacesparskit_1_1bndcsr-members.html create mode 100644 docs/html/interfacesparskit_1_1bndcsr.html create mode 100644 docs/html/interfacesparskit_1_1csrcsc2-members.html create mode 100644 docs/html/interfacesparskit_1_1csrcsc2.html create mode 100644 docs/html/interfacesparskit_1_1csrmsr-members.html create mode 100644 docs/html/interfacesparskit_1_1csrmsr.html create mode 100644 docs/html/interfacesparskit_1_1getdia-members.html create mode 100644 docs/html/interfacesparskit_1_1getdia.html create mode 100644 docs/html/interfacesparskit_1_1getelm-members.html create mode 100644 docs/html/interfacesparskit_1_1getelm.html create mode 100644 docs/html/interfacesparskit_1_1ilud-members.html create mode 100644 docs/html/interfacesparskit_1_1ilud.html create mode 100644 docs/html/interfacesparskit_1_1iludp-members.html create mode 100644 docs/html/interfacesparskit_1_1iludp.html create mode 100644 docs/html/interfacesparskit_1_1ilut-members.html create mode 100644 docs/html/interfacesparskit_1_1ilut.html create mode 100644 docs/html/interfacesparskit_1_1ilutp-members.html create mode 100644 docs/html/interfacesparskit_1_1ilutp.html create mode 100644 docs/html/interfacesparskit_1_1lusol-members.html create mode 100644 docs/html/interfacesparskit_1_1lusol.html create mode 100644 docs/html/interfacesparskit_1_1msrcsr-members.html create mode 100644 docs/html/interfacesparskit_1_1msrcsr.html create mode 100644 docs/html/interfacesparskit_1_1pgmres-members.html create mode 100644 docs/html/interfacesparskit_1_1pgmres.html create mode 100644 docs/html/linalg__sparse_8f90_source.html create mode 100644 docs/html/namespacesparskit.html create mode 100644 docs/html/namespacesparskit.js create mode 100644 docs/html/search/all_10.js create mode 100644 docs/html/search/all_11.js create mode 100644 docs/html/search/all_12.js create mode 100644 docs/html/search/classes_10.js create mode 100644 docs/html/search/classes_11.js create mode 100644 docs/html/search/classes_c.js create mode 100644 docs/html/search/classes_d.js create mode 100644 docs/html/search/classes_e.js create mode 100644 docs/html/search/classes_f.js create mode 100644 docs/html/search/namespaces_3.js create mode 100644 docs/html/sparskit_8f90_source.html create mode 100644 docs/html/structlinalg_1_1csr__matrix-members.html create mode 100644 docs/html/structlinalg_1_1csr__matrix.html create mode 100644 docs/html/structlinalg_1_1csr__matrix.js create mode 100644 docs/html/structlinalg_1_1msr__matrix-members.html create mode 100644 docs/html/structlinalg_1_1msr__matrix.html create mode 100644 docs/html/structlinalg_1_1msr__matrix.js diff --git a/docs/html/annotated.html b/docs/html/annotated.html index f644210d..899e0b2d 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -105,19 +105,20 @@
Here are the data types with brief descriptions:
[detail level 12]
- - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -168,42 +169,57 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -211,6 +227,22 @@ + + + + + + + + + + + + + + + +
 MblasA module providing explicit interfaces to BLAS routines
 Mlapack
 MqrupdateA module providing explicit interfaces for the QRUPDATE library
 MsparskitAn interface to the SPARSKIT library available at https://www-users.cse.umn.edu/~saad/software/SPARSKIT/
diff --git a/docs/html/annotated_dup.js b/docs/html/annotated_dup.js index 4192d753..9c42b6f1 100644 --- a/docs/html/annotated_dup.js +++ b/docs/html/annotated_dup.js @@ -1,6 +1,7 @@ var annotated_dup = [ [ "blas", "namespaceblas.html", [ + [ "ddot", "interfaceblas_1_1ddot.html", null ], [ "dgbmv", "interfaceblas_1_1dgbmv.html", null ], [ "dgemm", "interfaceblas_1_1dgemm.html", null ], [ "dgemv", "interfaceblas_1_1dgemv.html", null ], @@ -66,17 +67,23 @@ var annotated_dup = [ "band_diag_mtx_mult", "interfacelinalg_1_1band__diag__mtx__mult.html", null ], [ "band_mtx_mult", "interfacelinalg_1_1band__mtx__mult.html", null ], [ "band_mtx_to_full_mtx", "interfacelinalg_1_1band__mtx__to__full__mtx.html", null ], + [ "banded_to_dense", "interfacelinalg_1_1banded__to__dense.html", null ], [ "cholesky_factor", "interfacelinalg_1_1cholesky__factor.html", null ], [ "cholesky_rank1_downdate", "interfacelinalg_1_1cholesky__rank1__downdate.html", null ], [ "cholesky_rank1_update", "interfacelinalg_1_1cholesky__rank1__update.html", null ], + [ "csr_matrix", "structlinalg_1_1csr__matrix.html", "structlinalg_1_1csr__matrix" ], + [ "dense_to_banded", "interfacelinalg_1_1dense__to__banded.html", null ], [ "det", "interfacelinalg_1_1det.html", null ], [ "diag_mtx_mult", "interfacelinalg_1_1diag__mtx__mult.html", null ], [ "eigen", "interfacelinalg_1_1eigen.html", null ], + [ "extract_diagonal", "interfacelinalg_1_1extract__diagonal.html", null ], [ "form_lq", "interfacelinalg_1_1form__lq.html", null ], [ "form_lu", "interfacelinalg_1_1form__lu.html", null ], [ "form_qr", "interfacelinalg_1_1form__qr.html", null ], [ "lq_factor", "interfacelinalg_1_1lq__factor.html", null ], [ "lu_factor", "interfacelinalg_1_1lu__factor.html", null ], + [ "matmul", "interfacelinalg_1_1matmul.html", null ], + [ "msr_matrix", "structlinalg_1_1msr__matrix.html", "structlinalg_1_1msr__matrix" ], [ "mtx_inverse", "interfacelinalg_1_1mtx__inverse.html", null ], [ "mtx_mult", "interfacelinalg_1_1mtx__mult.html", null ], [ "mtx_pinverse", "interfacelinalg_1_1mtx__pinverse.html", null ], @@ -84,11 +91,18 @@ var annotated_dup = [ "mult_lq", "interfacelinalg_1_1mult__lq.html", null ], [ "mult_qr", "interfacelinalg_1_1mult__qr.html", null ], [ "mult_rz", "interfacelinalg_1_1mult__rz.html", null ], + [ "nonzero_count", "interfacelinalg_1_1nonzero__count.html", null ], + [ "operator(*)", "interfacelinalg_1_1operator_07_5_08.html", null ], + [ "operator(+)", "interfacelinalg_1_1operator_07_09_08.html", null ], + [ "operator(-)", "interfacelinalg_1_1operator_07-_08.html", null ], + [ "operator(/)", "interfacelinalg_1_1operator_07_2_08.html", null ], + [ "pgmres_solver", "interfacelinalg_1_1pgmres__solver.html", null ], [ "qr_factor", "interfacelinalg_1_1qr__factor.html", null ], [ "qr_rank1_update", "interfacelinalg_1_1qr__rank1__update.html", null ], [ "rank1_update", "interfacelinalg_1_1rank1__update.html", null ], [ "recip_mult_array", "interfacelinalg_1_1recip__mult__array.html", null ], [ "rz_factor", "interfacelinalg_1_1rz__factor.html", null ], + [ "size", "interfacelinalg_1_1size.html", null ], [ "solve_cholesky", "interfacelinalg_1_1solve__cholesky.html", null ], [ "solve_least_squares", "interfacelinalg_1_1solve__least__squares.html", null ], [ "solve_least_squares_full", "interfacelinalg_1_1solve__least__squares__full.html", null ], @@ -98,9 +112,11 @@ var annotated_dup = [ "solve_qr", "interfacelinalg_1_1solve__qr.html", null ], [ "solve_triangular_system", "interfacelinalg_1_1solve__triangular__system.html", null ], [ "sort", "interfacelinalg_1_1sort.html", null ], + [ "sparse_direct_solve", "interfacelinalg_1_1sparse__direct__solve.html", null ], [ "svd", "interfacelinalg_1_1svd.html", null ], [ "swap", "interfacelinalg_1_1swap.html", null ], [ "trace", "interfacelinalg_1_1trace.html", null ], + [ "transpose", "interfacelinalg_1_1transpose.html", null ], [ "tri_mtx_mult", "interfacelinalg_1_1tri__mtx__mult.html", null ] ] ], [ "qrupdate", "namespaceqrupdate.html", [ @@ -110,5 +126,22 @@ var annotated_dup = [ "zch1dn", "interfaceqrupdate_1_1zch1dn.html", null ], [ "zch1up", "interfaceqrupdate_1_1zch1up.html", null ], [ "zqr1up", "interfaceqrupdate_1_1zqr1up.html", null ] + ] ], + [ "sparskit", "namespacesparskit.html", [ + [ "amub", "interfacesparskit_1_1amub.html", null ], + [ "aplb", "interfacesparskit_1_1aplb.html", null ], + [ "aplsb", "interfacesparskit_1_1aplsb.html", null ], + [ "bndcsr", "interfacesparskit_1_1bndcsr.html", null ], + [ "csrcsc2", "interfacesparskit_1_1csrcsc2.html", null ], + [ "csrmsr", "interfacesparskit_1_1csrmsr.html", null ], + [ "getdia", "interfacesparskit_1_1getdia.html", null ], + [ "getelm", "interfacesparskit_1_1getelm.html", null ], + [ "ilud", "interfacesparskit_1_1ilud.html", null ], + [ "iludp", "interfacesparskit_1_1iludp.html", null ], + [ "ilut", "interfacesparskit_1_1ilut.html", null ], + [ "ilutp", "interfacesparskit_1_1ilutp.html", null ], + [ "lusol", "interfacesparskit_1_1lusol.html", null ], + [ "msrcsr", "interfacesparskit_1_1msrcsr.html", null ], + [ "pgmres", "interfacesparskit_1_1pgmres.html", null ] ] ] ]; \ No newline at end of file diff --git a/docs/html/blas_8f90_source.html b/docs/html/blas_8f90_source.html index 1db897b1..3ecd8e25 100644 --- a/docs/html/blas_8f90_source.html +++ b/docs/html/blas_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -242,8 +242,18 @@
108 complex(real64), intent(inout) :: y(*)
109 end subroutine
-
110 end interface
-
111end module
+
110
+
+
111 function ddot(n, dx, incx, dy, incy) result(rst)
+
112 use iso_fortran_env, only : int32, real64
+
113 integer(int32), intent(in) :: n, incx, incy
+
114 real(real64), intent(in) :: dx(*), dy(*)
+
115 real(real64) :: rst
+
+
116 end function
+
117 end interface
+
118end module
+
Definition blas.f90:111
Definition blas.f90:93
Definition blas.f90:6
Definition blas.f90:15
diff --git a/docs/html/classes.html b/docs/html/classes.html index 2a5d673b..de2f75f5 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -102,29 +102,47 @@
Data Type Index
-
B | C | D | E | F | L | M | Q | R | S | T | Z
+
A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | Z
-
B
-
band_diag_mtx_mult (linalg)
band_mtx_mult (linalg)
band_mtx_to_full_mtx (linalg)
+
A
+
amub (sparskit)
aplb (sparskit)
aplsb (sparskit)
-
C
-
cholesky_factor (linalg)
cholesky_rank1_downdate (linalg)
cholesky_rank1_update (linalg)
+
B
+
band_diag_mtx_mult (linalg)
band_mtx_mult (linalg)
band_mtx_to_full_mtx (linalg)
banded_to_dense (linalg)
bndcsr (sparskit)
-
D
-
dch1dn (qrupdate)
dch1up (qrupdate)
det (linalg)
dgbmv (blas)
dgeev (lapack)
dgelqf (lapack)
dgels (lapack)
dgelss (lapack)
dgelsy (lapack)
dgemm (blas)
dgemv (blas)
dgeqp3 (lapack)
dgeqrf (lapack)
dgesvd (lapack)
dgetrf (lapack)
dgetri (lapack)
dgetrs (lapack)
dggev (lapack)
diag_mtx_mult (linalg)
dlaic1 (lapack)
dlamch (lapack)
dlaset (lapack)
dlasrt (lapack)
dorglq (lapack)
dorgqr (lapack)
dormlq (lapack)
dormqr (lapack)
dormrz (lapack)
dpotrf (lapack)
dpotrs (lapack)
dqr1up (qrupdate)
dscal (blas)
dsyev (lapack)
dtrsm (blas)
dtrsv (blas)
dtzrzf (lapack)
+
C
+
cholesky_factor (linalg)
cholesky_rank1_downdate (linalg)
cholesky_rank1_update (linalg)
csr_matrix (linalg)
csrcsc2 (sparskit)
csrmsr (sparskit)
-
E
-
eigen (linalg)
+
D
+
dch1dn (qrupdate)
dch1up (qrupdate)
ddot (blas)
dense_to_banded (linalg)
det (linalg)
dgbmv (blas)
dgeev (lapack)
dgelqf (lapack)
dgels (lapack)
dgelss (lapack)
dgelsy (lapack)
dgemm (blas)
dgemv (blas)
dgeqp3 (lapack)
dgeqrf (lapack)
dgesvd (lapack)
dgetrf (lapack)
dgetri (lapack)
dgetrs (lapack)
dggev (lapack)
diag_mtx_mult (linalg)
dlaic1 (lapack)
dlamch (lapack)
dlaset (lapack)
dlasrt (lapack)
dorglq (lapack)
dorgqr (lapack)
dormlq (lapack)
dormqr (lapack)
dormrz (lapack)
dpotrf (lapack)
dpotrs (lapack)
dqr1up (qrupdate)
dscal (blas)
dsyev (lapack)
dtrsm (blas)
dtrsv (blas)
dtzrzf (lapack)
+
E
+
eigen (linalg)
extract_diagonal (linalg)
+
F
form_lq (linalg)
form_lu (linalg)
form_qr (linalg)
+
+
G
+
getdia (sparskit)
getelm (sparskit)
-
L
-
lq_factor (linalg)
lu_factor (linalg)
+
I
+
ilud (sparskit)
iludp (sparskit)
ilut (sparskit)
ilutp (sparskit)
+
L
+
lq_factor (linalg)
lu_factor (linalg)
lusol (sparskit)
+
M
-
mtx_inverse (linalg)
mtx_mult (linalg)
mtx_pinverse (linalg)
mtx_rank (linalg)
mult_lq (linalg)
mult_qr (linalg)
mult_rz (linalg)
+
matmul (linalg)
msr_matrix (linalg)
msrcsr (sparskit)
mtx_inverse (linalg)
mtx_mult (linalg)
mtx_pinverse (linalg)
mtx_rank (linalg)
mult_lq (linalg)
mult_qr (linalg)
mult_rz (linalg)
+
+
N
+
nonzero_count (linalg)
+
+
O
+
operator(*) (linalg)
operator(+) (linalg)
operator(-) (linalg)
operator(/) (linalg)
+
+
P
+
pgmres (sparskit)
pgmres_solver (linalg)
Q
qr_factor (linalg)
qr_rank1_update (linalg)
@@ -133,10 +151,10 @@
rank1_update (linalg)
recip_mult_array (linalg)
rz_factor (linalg)
S
-
solve_cholesky (linalg)
solve_least_squares (linalg)
solve_least_squares_full (linalg)
solve_least_squares_svd (linalg)
solve_lq (linalg)
solve_lu (linalg)
solve_qr (linalg)
solve_triangular_system (linalg)
sort (linalg)
svd (linalg)
swap (linalg)
+
size (linalg)
solve_cholesky (linalg)
solve_least_squares (linalg)
solve_least_squares_full (linalg)
solve_least_squares_svd (linalg)
solve_lq (linalg)
solve_lu (linalg)
solve_qr (linalg)
solve_triangular_system (linalg)
sort (linalg)
sparse_direct_solve (linalg)
svd (linalg)
swap (linalg)
T
-
trace (linalg)
tri_mtx_mult (linalg)
+
trace (linalg)
transpose (linalg)
tri_mtx_mult (linalg)
Z
zch1dn (qrupdate)
zch1up (qrupdate)
zdscal (blas)
zgbmv (blas)
zgeev (lapack)
zgelqf (lapack)
zgels (lapack)
zgelss (lapack)
zgelsy (lapack)
zgemm (blas)
zgemv (blas)
zgeqp3 (lapack)
zgeqrf (lapack)
zgesvd (lapack)
zgetrf (lapack)
zgetri (lapack)
zgetrs (lapack)
zlaic1 (lapack)
zpotrf (lapack)
zpotrs (lapack)
zqr1up (qrupdate)
zscal (blas)
ztrsm (blas)
ztrsv (blas)
ztzrzf (lapack)
zunglq (lapack)
zungqr (lapack)
zunmlq (lapack)
zunmqr (lapack)
zunmrz (lapack)
diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 4338896c..dfec911c 100644 --- a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -121,8 +121,12 @@    linalg_sorting.f90   + linalg_sparse.f90 qrupdate.f90   + sparskit.f90
diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js index c984e24f..a7e2a21e 100644 --- a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -8,5 +8,7 @@ var dir_68267d1309a1af8e8297ef4c3efbcdba = [ "linalg_factor.f90", "linalg__factor_8f90_source.html", null ], [ "linalg_solve.f90", "linalg__solve_8f90_source.html", null ], [ "linalg_sorting.f90", "linalg__sorting_8f90_source.html", null ], - [ "qrupdate.f90", "qrupdate_8f90_source.html", null ] + [ "linalg_sparse.f90", "linalg__sparse_8f90_source.html", null ], + [ "qrupdate.f90", "qrupdate_8f90_source.html", null ], + [ "sparskit.f90", "sparskit_8f90_source.html", null ] ]; \ No newline at end of file diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index 18910662..eb87a66e 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -34,7 +34,7 @@ - diff --git a/docs/html/functions.html b/docs/html/functions.html index 8f414088..3b2c7699 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -3,16 +3,18 @@ - + linalg: Data Fields + + @@ -32,7 +34,7 @@ -
linalg 1.6.1 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -41,7 +43,7 @@
- + @@ -71,7 +73,7 @@
@@ -98,22 +100,18 @@
diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html index 4611922d..46fd35e4 100644 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -3,16 +3,18 @@ - + linalg: Data Fields - Functions/Subroutines + + @@ -32,7 +34,7 @@ -
linalg 1.6.1 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -41,7 +43,7 @@
- + @@ -71,7 +73,7 @@
@@ -97,40 +99,15 @@
diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index 25091ab9..38105353 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -3,16 +3,18 @@ - + linalg: Data Fields - Variables + + @@ -32,7 +34,7 @@ -
linalg 1.6.1 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -41,7 +43,7 @@
- + @@ -71,7 +73,7 @@
@@ -97,23 +99,18 @@
diff --git a/docs/html/globals.html b/docs/html/globals.html index 592ca532..762f3ae4 100644 --- a/docs/html/globals.html +++ b/docs/html/globals.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html index fdbaaf3f..a438da42 100644 --- a/docs/html/globals_func.html +++ b/docs/html/globals_func.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html index 746893cb..90d78e92 100644 --- a/docs/html/graph_legend.html +++ b/docs/html/graph_legend.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/index.html b/docs/html/index.html index 22f93e1e..18ddf549 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -144,8 +144,8 @@
print '(A)', "LU Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
end program
-
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:732
-
Solves a system of LU-factored equations.
Definition linalg.f90:2291
+
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:843
+
Solves a system of LU-factored equations.
Definition linalg.f90:2420
Provides a set of common linear algebra routines.
Definition linalg.f90:145

The program generates the following output.

LU Solution: X =
0.3333
@@ -209,7 +209,7 @@
print '(F10.3)', (real(modeshapes(j,i)), j = 1, size(natfreq))
end do
end program
-
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Definition linalg.f90:3240
+
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Definition linalg.f90:3370

The above program produces the following output.

Modal Information:
Mode 1: (232.9225 Hz)
-0.718
diff --git a/docs/html/interfaceblas_1_1ddot-members.html b/docs/html/interfaceblas_1_1ddot-members.html new file mode 100644 index 00000000..aba2fe45 --- /dev/null +++ b/docs/html/interfaceblas_1_1ddot-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
blas::ddot Member List
+
+
+ +

This is the complete list of members for blas::ddot, including all inherited members.

+ + +
ddot(n, dx, incx, dy, incy) (defined in blas::ddot)blas::ddot
+
+ + + + diff --git a/docs/html/interfaceblas_1_1ddot.html b/docs/html/interfaceblas_1_1ddot.html new file mode 100644 index 00000000..c8fbb7d8 --- /dev/null +++ b/docs/html/interfaceblas_1_1ddot.html @@ -0,0 +1,169 @@ + + + + + + + +linalg: blas::ddot Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
blas::ddot Interface Reference
+
+
+ + + + +

+Public Member Functions

real(real64) function ddot (n, dx, incx, dy, incy)
 
+

Detailed Description

+
+

Definition at line 111 of file blas.f90.

+

Constructor & Destructor Documentation

+ +

◆ ddot()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
real(real64) function blas::ddot::ddot (integer(int32), intent(in) n,
real(real64), dimension(*), intent(in) dx,
integer(int32), intent(in) incx,
real(real64), dimension(*), intent(in) dy,
integer(int32), intent(in) incy )
+
+ +

Definition at line 111 of file blas.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfaceblas_1_1dgbmv-members.html b/docs/html/interfaceblas_1_1dgbmv-members.html index 7edd4b9d..c8d6e993 100644 --- a/docs/html/interfaceblas_1_1dgbmv-members.html +++ b/docs/html/interfaceblas_1_1dgbmv-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dgbmv.html b/docs/html/interfaceblas_1_1dgbmv.html index 40d8df6e..2d753224 100644 --- a/docs/html/interfaceblas_1_1dgbmv.html +++ b/docs/html/interfaceblas_1_1dgbmv.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dgemm-members.html b/docs/html/interfaceblas_1_1dgemm-members.html index 92aa29c5..8dd557c1 100644 --- a/docs/html/interfaceblas_1_1dgemm-members.html +++ b/docs/html/interfaceblas_1_1dgemm-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dgemm.html b/docs/html/interfaceblas_1_1dgemm.html index ba1bbf4e..3be9d963 100644 --- a/docs/html/interfaceblas_1_1dgemm.html +++ b/docs/html/interfaceblas_1_1dgemm.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dgemv-members.html b/docs/html/interfaceblas_1_1dgemv-members.html index 3088b845..bd6cb7f7 100644 --- a/docs/html/interfaceblas_1_1dgemv-members.html +++ b/docs/html/interfaceblas_1_1dgemv-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dgemv.html b/docs/html/interfaceblas_1_1dgemv.html index b63cc320..db29095a 100644 --- a/docs/html/interfaceblas_1_1dgemv.html +++ b/docs/html/interfaceblas_1_1dgemv.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dscal-members.html b/docs/html/interfaceblas_1_1dscal-members.html index 1a1f6e27..dc388dec 100644 --- a/docs/html/interfaceblas_1_1dscal-members.html +++ b/docs/html/interfaceblas_1_1dscal-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dscal.html b/docs/html/interfaceblas_1_1dscal.html index f039f78a..bb4c8f77 100644 --- a/docs/html/interfaceblas_1_1dscal.html +++ b/docs/html/interfaceblas_1_1dscal.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dtrsm-members.html b/docs/html/interfaceblas_1_1dtrsm-members.html index 5b9c546a..a7d427da 100644 --- a/docs/html/interfaceblas_1_1dtrsm-members.html +++ b/docs/html/interfaceblas_1_1dtrsm-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dtrsm.html b/docs/html/interfaceblas_1_1dtrsm.html index e4f7b9e5..f4a80998 100644 --- a/docs/html/interfaceblas_1_1dtrsm.html +++ b/docs/html/interfaceblas_1_1dtrsm.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dtrsv-members.html b/docs/html/interfaceblas_1_1dtrsv-members.html index e9e83b98..04a9d5e2 100644 --- a/docs/html/interfaceblas_1_1dtrsv-members.html +++ b/docs/html/interfaceblas_1_1dtrsv-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1dtrsv.html b/docs/html/interfaceblas_1_1dtrsv.html index 512afe03..9fe10450 100644 --- a/docs/html/interfaceblas_1_1dtrsv.html +++ b/docs/html/interfaceblas_1_1dtrsv.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zdscal-members.html b/docs/html/interfaceblas_1_1zdscal-members.html index 35130ca2..dd9c447c 100644 --- a/docs/html/interfaceblas_1_1zdscal-members.html +++ b/docs/html/interfaceblas_1_1zdscal-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zdscal.html b/docs/html/interfaceblas_1_1zdscal.html index 5c2714cd..7152fc37 100644 --- a/docs/html/interfaceblas_1_1zdscal.html +++ b/docs/html/interfaceblas_1_1zdscal.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zgbmv-members.html b/docs/html/interfaceblas_1_1zgbmv-members.html index 63c22c07..87cb035b 100644 --- a/docs/html/interfaceblas_1_1zgbmv-members.html +++ b/docs/html/interfaceblas_1_1zgbmv-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zgbmv.html b/docs/html/interfaceblas_1_1zgbmv.html index 475e24c5..04fc20e8 100644 --- a/docs/html/interfaceblas_1_1zgbmv.html +++ b/docs/html/interfaceblas_1_1zgbmv.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zgemm-members.html b/docs/html/interfaceblas_1_1zgemm-members.html index 5e0155a2..63ce388e 100644 --- a/docs/html/interfaceblas_1_1zgemm-members.html +++ b/docs/html/interfaceblas_1_1zgemm-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zgemm.html b/docs/html/interfaceblas_1_1zgemm.html index e14f0d21..6e8ac981 100644 --- a/docs/html/interfaceblas_1_1zgemm.html +++ b/docs/html/interfaceblas_1_1zgemm.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zgemv-members.html b/docs/html/interfaceblas_1_1zgemv-members.html index 534eb376..b2692622 100644 --- a/docs/html/interfaceblas_1_1zgemv-members.html +++ b/docs/html/interfaceblas_1_1zgemv-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zgemv.html b/docs/html/interfaceblas_1_1zgemv.html index e41704cc..6a5ed9c6 100644 --- a/docs/html/interfaceblas_1_1zgemv.html +++ b/docs/html/interfaceblas_1_1zgemv.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zscal-members.html b/docs/html/interfaceblas_1_1zscal-members.html index f42560ff..a858ad92 100644 --- a/docs/html/interfaceblas_1_1zscal-members.html +++ b/docs/html/interfaceblas_1_1zscal-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1zscal.html b/docs/html/interfaceblas_1_1zscal.html index d80250ea..5871c1b1 100644 --- a/docs/html/interfaceblas_1_1zscal.html +++ b/docs/html/interfaceblas_1_1zscal.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1ztrsm-members.html b/docs/html/interfaceblas_1_1ztrsm-members.html index 2646d3ef..7da8a56f 100644 --- a/docs/html/interfaceblas_1_1ztrsm-members.html +++ b/docs/html/interfaceblas_1_1ztrsm-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1ztrsm.html b/docs/html/interfaceblas_1_1ztrsm.html index 547122f2..1bc8ec9b 100644 --- a/docs/html/interfaceblas_1_1ztrsm.html +++ b/docs/html/interfaceblas_1_1ztrsm.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1ztrsv-members.html b/docs/html/interfaceblas_1_1ztrsv-members.html index aa5c5907..8d9b835d 100644 --- a/docs/html/interfaceblas_1_1ztrsv-members.html +++ b/docs/html/interfaceblas_1_1ztrsv-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceblas_1_1ztrsv.html b/docs/html/interfaceblas_1_1ztrsv.html index 8e9fdd6a..89a5dea3 100644 --- a/docs/html/interfaceblas_1_1ztrsv.html +++ b/docs/html/interfaceblas_1_1ztrsv.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgeev-members.html b/docs/html/interfacelapack_1_1dgeev-members.html index 37dce9e6..6c18dc39 100644 --- a/docs/html/interfacelapack_1_1dgeev-members.html +++ b/docs/html/interfacelapack_1_1dgeev-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgeev.html b/docs/html/interfacelapack_1_1dgeev.html index 6b3549d3..0699f5b2 100644 --- a/docs/html/interfacelapack_1_1dgeev.html +++ b/docs/html/interfacelapack_1_1dgeev.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgelqf-members.html b/docs/html/interfacelapack_1_1dgelqf-members.html index d68be660..7f8d3a3f 100644 --- a/docs/html/interfacelapack_1_1dgelqf-members.html +++ b/docs/html/interfacelapack_1_1dgelqf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgelqf.html b/docs/html/interfacelapack_1_1dgelqf.html index 0dab1708..5917ecbf 100644 --- a/docs/html/interfacelapack_1_1dgelqf.html +++ b/docs/html/interfacelapack_1_1dgelqf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgels-members.html b/docs/html/interfacelapack_1_1dgels-members.html index fcc73485..a4e642d5 100644 --- a/docs/html/interfacelapack_1_1dgels-members.html +++ b/docs/html/interfacelapack_1_1dgels-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgels.html b/docs/html/interfacelapack_1_1dgels.html index 540437a9..18e833d5 100644 --- a/docs/html/interfacelapack_1_1dgels.html +++ b/docs/html/interfacelapack_1_1dgels.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgelss-members.html b/docs/html/interfacelapack_1_1dgelss-members.html index 314c67aa..3bd36978 100644 --- a/docs/html/interfacelapack_1_1dgelss-members.html +++ b/docs/html/interfacelapack_1_1dgelss-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgelss.html b/docs/html/interfacelapack_1_1dgelss.html index 726380fd..5d2cb07f 100644 --- a/docs/html/interfacelapack_1_1dgelss.html +++ b/docs/html/interfacelapack_1_1dgelss.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgelsy-members.html b/docs/html/interfacelapack_1_1dgelsy-members.html index 4c8b0cd4..1d0c1d24 100644 --- a/docs/html/interfacelapack_1_1dgelsy-members.html +++ b/docs/html/interfacelapack_1_1dgelsy-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgelsy.html b/docs/html/interfacelapack_1_1dgelsy.html index 758fe8eb..3ffdd07f 100644 --- a/docs/html/interfacelapack_1_1dgelsy.html +++ b/docs/html/interfacelapack_1_1dgelsy.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgeqp3-members.html b/docs/html/interfacelapack_1_1dgeqp3-members.html index 7dc7e6d1..665aeac8 100644 --- a/docs/html/interfacelapack_1_1dgeqp3-members.html +++ b/docs/html/interfacelapack_1_1dgeqp3-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgeqp3.html b/docs/html/interfacelapack_1_1dgeqp3.html index 08e297df..b6227e4c 100644 --- a/docs/html/interfacelapack_1_1dgeqp3.html +++ b/docs/html/interfacelapack_1_1dgeqp3.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgeqrf-members.html b/docs/html/interfacelapack_1_1dgeqrf-members.html index 3a007305..861a9918 100644 --- a/docs/html/interfacelapack_1_1dgeqrf-members.html +++ b/docs/html/interfacelapack_1_1dgeqrf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgeqrf.html b/docs/html/interfacelapack_1_1dgeqrf.html index 45cf640f..a9260c4c 100644 --- a/docs/html/interfacelapack_1_1dgeqrf.html +++ b/docs/html/interfacelapack_1_1dgeqrf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgesvd-members.html b/docs/html/interfacelapack_1_1dgesvd-members.html index e2c02613..be12e983 100644 --- a/docs/html/interfacelapack_1_1dgesvd-members.html +++ b/docs/html/interfacelapack_1_1dgesvd-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgesvd.html b/docs/html/interfacelapack_1_1dgesvd.html index 44eccec7..a6e1e36f 100644 --- a/docs/html/interfacelapack_1_1dgesvd.html +++ b/docs/html/interfacelapack_1_1dgesvd.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgetrf-members.html b/docs/html/interfacelapack_1_1dgetrf-members.html index bbd616c6..d0867b4f 100644 --- a/docs/html/interfacelapack_1_1dgetrf-members.html +++ b/docs/html/interfacelapack_1_1dgetrf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgetrf.html b/docs/html/interfacelapack_1_1dgetrf.html index d5412a64..60dbe5b7 100644 --- a/docs/html/interfacelapack_1_1dgetrf.html +++ b/docs/html/interfacelapack_1_1dgetrf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgetri-members.html b/docs/html/interfacelapack_1_1dgetri-members.html index acde2844..d3adeac4 100644 --- a/docs/html/interfacelapack_1_1dgetri-members.html +++ b/docs/html/interfacelapack_1_1dgetri-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgetri.html b/docs/html/interfacelapack_1_1dgetri.html index 4f5a4c89..ae9b2d1d 100644 --- a/docs/html/interfacelapack_1_1dgetri.html +++ b/docs/html/interfacelapack_1_1dgetri.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgetrs-members.html b/docs/html/interfacelapack_1_1dgetrs-members.html index 4ad1c36e..76c209a0 100644 --- a/docs/html/interfacelapack_1_1dgetrs-members.html +++ b/docs/html/interfacelapack_1_1dgetrs-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dgetrs.html b/docs/html/interfacelapack_1_1dgetrs.html index 7f935cfb..cdb75ab2 100644 --- a/docs/html/interfacelapack_1_1dgetrs.html +++ b/docs/html/interfacelapack_1_1dgetrs.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dggev-members.html b/docs/html/interfacelapack_1_1dggev-members.html index 5c544210..caaec04f 100644 --- a/docs/html/interfacelapack_1_1dggev-members.html +++ b/docs/html/interfacelapack_1_1dggev-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dggev.html b/docs/html/interfacelapack_1_1dggev.html index f9cabfea..7af7b152 100644 --- a/docs/html/interfacelapack_1_1dggev.html +++ b/docs/html/interfacelapack_1_1dggev.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlaic1-members.html b/docs/html/interfacelapack_1_1dlaic1-members.html index e1ce9da5..9831c6e5 100644 --- a/docs/html/interfacelapack_1_1dlaic1-members.html +++ b/docs/html/interfacelapack_1_1dlaic1-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlaic1.html b/docs/html/interfacelapack_1_1dlaic1.html index 8b0f8665..6a3a09fd 100644 --- a/docs/html/interfacelapack_1_1dlaic1.html +++ b/docs/html/interfacelapack_1_1dlaic1.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlamch-members.html b/docs/html/interfacelapack_1_1dlamch-members.html index 309bdbf7..04fd07ef 100644 --- a/docs/html/interfacelapack_1_1dlamch-members.html +++ b/docs/html/interfacelapack_1_1dlamch-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlamch.html b/docs/html/interfacelapack_1_1dlamch.html index 4470f70a..eeffad45 100644 --- a/docs/html/interfacelapack_1_1dlamch.html +++ b/docs/html/interfacelapack_1_1dlamch.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlaset-members.html b/docs/html/interfacelapack_1_1dlaset-members.html index 1993a1ac..2f3b5ed7 100644 --- a/docs/html/interfacelapack_1_1dlaset-members.html +++ b/docs/html/interfacelapack_1_1dlaset-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlaset.html b/docs/html/interfacelapack_1_1dlaset.html index 0eea4593..cac5d5ce 100644 --- a/docs/html/interfacelapack_1_1dlaset.html +++ b/docs/html/interfacelapack_1_1dlaset.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlasrt-members.html b/docs/html/interfacelapack_1_1dlasrt-members.html index 063efd83..1d99f183 100644 --- a/docs/html/interfacelapack_1_1dlasrt-members.html +++ b/docs/html/interfacelapack_1_1dlasrt-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dlasrt.html b/docs/html/interfacelapack_1_1dlasrt.html index 602fb65f..c77708ff 100644 --- a/docs/html/interfacelapack_1_1dlasrt.html +++ b/docs/html/interfacelapack_1_1dlasrt.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dorglq-members.html b/docs/html/interfacelapack_1_1dorglq-members.html index 4b9a834b..8a9bbdf0 100644 --- a/docs/html/interfacelapack_1_1dorglq-members.html +++ b/docs/html/interfacelapack_1_1dorglq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dorglq.html b/docs/html/interfacelapack_1_1dorglq.html index 55e1135d..2c437cfc 100644 --- a/docs/html/interfacelapack_1_1dorglq.html +++ b/docs/html/interfacelapack_1_1dorglq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dorgqr-members.html b/docs/html/interfacelapack_1_1dorgqr-members.html index 1827be09..a982312d 100644 --- a/docs/html/interfacelapack_1_1dorgqr-members.html +++ b/docs/html/interfacelapack_1_1dorgqr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dorgqr.html b/docs/html/interfacelapack_1_1dorgqr.html index c8d5d827..5b04178c 100644 --- a/docs/html/interfacelapack_1_1dorgqr.html +++ b/docs/html/interfacelapack_1_1dorgqr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dormlq-members.html b/docs/html/interfacelapack_1_1dormlq-members.html index e596d3b5..1373c27a 100644 --- a/docs/html/interfacelapack_1_1dormlq-members.html +++ b/docs/html/interfacelapack_1_1dormlq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dormlq.html b/docs/html/interfacelapack_1_1dormlq.html index de1e0ab0..d58778ac 100644 --- a/docs/html/interfacelapack_1_1dormlq.html +++ b/docs/html/interfacelapack_1_1dormlq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dormqr-members.html b/docs/html/interfacelapack_1_1dormqr-members.html index a7762703..4c8d2c84 100644 --- a/docs/html/interfacelapack_1_1dormqr-members.html +++ b/docs/html/interfacelapack_1_1dormqr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dormqr.html b/docs/html/interfacelapack_1_1dormqr.html index f8eb4b5f..fe2aadaf 100644 --- a/docs/html/interfacelapack_1_1dormqr.html +++ b/docs/html/interfacelapack_1_1dormqr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dormrz-members.html b/docs/html/interfacelapack_1_1dormrz-members.html index fd755043..5c9fa60f 100644 --- a/docs/html/interfacelapack_1_1dormrz-members.html +++ b/docs/html/interfacelapack_1_1dormrz-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dormrz.html b/docs/html/interfacelapack_1_1dormrz.html index d7df1e95..f0cd9f74 100644 --- a/docs/html/interfacelapack_1_1dormrz.html +++ b/docs/html/interfacelapack_1_1dormrz.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dpotrf-members.html b/docs/html/interfacelapack_1_1dpotrf-members.html index b6608312..e4f6862d 100644 --- a/docs/html/interfacelapack_1_1dpotrf-members.html +++ b/docs/html/interfacelapack_1_1dpotrf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dpotrf.html b/docs/html/interfacelapack_1_1dpotrf.html index 136d2842..f620ca38 100644 --- a/docs/html/interfacelapack_1_1dpotrf.html +++ b/docs/html/interfacelapack_1_1dpotrf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dpotrs-members.html b/docs/html/interfacelapack_1_1dpotrs-members.html index d98d2a83..10f6cd3c 100644 --- a/docs/html/interfacelapack_1_1dpotrs-members.html +++ b/docs/html/interfacelapack_1_1dpotrs-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dpotrs.html b/docs/html/interfacelapack_1_1dpotrs.html index 96823a7b..efb47e95 100644 --- a/docs/html/interfacelapack_1_1dpotrs.html +++ b/docs/html/interfacelapack_1_1dpotrs.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dsyev-members.html b/docs/html/interfacelapack_1_1dsyev-members.html index ce1d0984..9d1c06e5 100644 --- a/docs/html/interfacelapack_1_1dsyev-members.html +++ b/docs/html/interfacelapack_1_1dsyev-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dsyev.html b/docs/html/interfacelapack_1_1dsyev.html index c31d526e..e977807e 100644 --- a/docs/html/interfacelapack_1_1dsyev.html +++ b/docs/html/interfacelapack_1_1dsyev.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dtzrzf-members.html b/docs/html/interfacelapack_1_1dtzrzf-members.html index 90c13e3e..be721af5 100644 --- a/docs/html/interfacelapack_1_1dtzrzf-members.html +++ b/docs/html/interfacelapack_1_1dtzrzf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1dtzrzf.html b/docs/html/interfacelapack_1_1dtzrzf.html index 829fd1aa..1d207813 100644 --- a/docs/html/interfacelapack_1_1dtzrzf.html +++ b/docs/html/interfacelapack_1_1dtzrzf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgeev-members.html b/docs/html/interfacelapack_1_1zgeev-members.html index 234feb44..c75458ea 100644 --- a/docs/html/interfacelapack_1_1zgeev-members.html +++ b/docs/html/interfacelapack_1_1zgeev-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgeev.html b/docs/html/interfacelapack_1_1zgeev.html index 4cb4f47b..f4cfd263 100644 --- a/docs/html/interfacelapack_1_1zgeev.html +++ b/docs/html/interfacelapack_1_1zgeev.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgelqf-members.html b/docs/html/interfacelapack_1_1zgelqf-members.html index 58a866ba..f4c16796 100644 --- a/docs/html/interfacelapack_1_1zgelqf-members.html +++ b/docs/html/interfacelapack_1_1zgelqf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgelqf.html b/docs/html/interfacelapack_1_1zgelqf.html index 56353bb3..bef0172b 100644 --- a/docs/html/interfacelapack_1_1zgelqf.html +++ b/docs/html/interfacelapack_1_1zgelqf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgels-members.html b/docs/html/interfacelapack_1_1zgels-members.html index 3515e255..0e697a3e 100644 --- a/docs/html/interfacelapack_1_1zgels-members.html +++ b/docs/html/interfacelapack_1_1zgels-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgels.html b/docs/html/interfacelapack_1_1zgels.html index c6a4a482..d05661cb 100644 --- a/docs/html/interfacelapack_1_1zgels.html +++ b/docs/html/interfacelapack_1_1zgels.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgelss-members.html b/docs/html/interfacelapack_1_1zgelss-members.html index b1960ffa..1c8d4f3a 100644 --- a/docs/html/interfacelapack_1_1zgelss-members.html +++ b/docs/html/interfacelapack_1_1zgelss-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgelss.html b/docs/html/interfacelapack_1_1zgelss.html index 0e13683d..a82a2411 100644 --- a/docs/html/interfacelapack_1_1zgelss.html +++ b/docs/html/interfacelapack_1_1zgelss.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgelsy-members.html b/docs/html/interfacelapack_1_1zgelsy-members.html index d33d72f9..56174a23 100644 --- a/docs/html/interfacelapack_1_1zgelsy-members.html +++ b/docs/html/interfacelapack_1_1zgelsy-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgelsy.html b/docs/html/interfacelapack_1_1zgelsy.html index 7d769a18..8d9b9ac3 100644 --- a/docs/html/interfacelapack_1_1zgelsy.html +++ b/docs/html/interfacelapack_1_1zgelsy.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgeqp3-members.html b/docs/html/interfacelapack_1_1zgeqp3-members.html index 7e455715..4f96e4fa 100644 --- a/docs/html/interfacelapack_1_1zgeqp3-members.html +++ b/docs/html/interfacelapack_1_1zgeqp3-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgeqp3.html b/docs/html/interfacelapack_1_1zgeqp3.html index 9acdec3c..90e229df 100644 --- a/docs/html/interfacelapack_1_1zgeqp3.html +++ b/docs/html/interfacelapack_1_1zgeqp3.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgeqrf-members.html b/docs/html/interfacelapack_1_1zgeqrf-members.html index 8bcfaa8f..f07a4785 100644 --- a/docs/html/interfacelapack_1_1zgeqrf-members.html +++ b/docs/html/interfacelapack_1_1zgeqrf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgeqrf.html b/docs/html/interfacelapack_1_1zgeqrf.html index cedc36d5..07bb979a 100644 --- a/docs/html/interfacelapack_1_1zgeqrf.html +++ b/docs/html/interfacelapack_1_1zgeqrf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgesvd-members.html b/docs/html/interfacelapack_1_1zgesvd-members.html index 8477ae88..57fde38e 100644 --- a/docs/html/interfacelapack_1_1zgesvd-members.html +++ b/docs/html/interfacelapack_1_1zgesvd-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgesvd.html b/docs/html/interfacelapack_1_1zgesvd.html index 4aba3b21..36d9a45c 100644 --- a/docs/html/interfacelapack_1_1zgesvd.html +++ b/docs/html/interfacelapack_1_1zgesvd.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgetrf-members.html b/docs/html/interfacelapack_1_1zgetrf-members.html index a6304ae7..2766affc 100644 --- a/docs/html/interfacelapack_1_1zgetrf-members.html +++ b/docs/html/interfacelapack_1_1zgetrf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgetrf.html b/docs/html/interfacelapack_1_1zgetrf.html index 984b6544..349075e2 100644 --- a/docs/html/interfacelapack_1_1zgetrf.html +++ b/docs/html/interfacelapack_1_1zgetrf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgetri-members.html b/docs/html/interfacelapack_1_1zgetri-members.html index ac2ea4d5..8483defa 100644 --- a/docs/html/interfacelapack_1_1zgetri-members.html +++ b/docs/html/interfacelapack_1_1zgetri-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgetri.html b/docs/html/interfacelapack_1_1zgetri.html index d224cada..16499510 100644 --- a/docs/html/interfacelapack_1_1zgetri.html +++ b/docs/html/interfacelapack_1_1zgetri.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgetrs-members.html b/docs/html/interfacelapack_1_1zgetrs-members.html index e6458043..45d1f253 100644 --- a/docs/html/interfacelapack_1_1zgetrs-members.html +++ b/docs/html/interfacelapack_1_1zgetrs-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zgetrs.html b/docs/html/interfacelapack_1_1zgetrs.html index f797771a..a14331f0 100644 --- a/docs/html/interfacelapack_1_1zgetrs.html +++ b/docs/html/interfacelapack_1_1zgetrs.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zlaic1-members.html b/docs/html/interfacelapack_1_1zlaic1-members.html index b8659b38..bc5a8459 100644 --- a/docs/html/interfacelapack_1_1zlaic1-members.html +++ b/docs/html/interfacelapack_1_1zlaic1-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zlaic1.html b/docs/html/interfacelapack_1_1zlaic1.html index fe06e516..4417bb45 100644 --- a/docs/html/interfacelapack_1_1zlaic1.html +++ b/docs/html/interfacelapack_1_1zlaic1.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zpotrf-members.html b/docs/html/interfacelapack_1_1zpotrf-members.html index c97df7e7..ab682126 100644 --- a/docs/html/interfacelapack_1_1zpotrf-members.html +++ b/docs/html/interfacelapack_1_1zpotrf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zpotrf.html b/docs/html/interfacelapack_1_1zpotrf.html index 7b645b5a..d412c410 100644 --- a/docs/html/interfacelapack_1_1zpotrf.html +++ b/docs/html/interfacelapack_1_1zpotrf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zpotrs-members.html b/docs/html/interfacelapack_1_1zpotrs-members.html index c7c75f43..48bc2360 100644 --- a/docs/html/interfacelapack_1_1zpotrs-members.html +++ b/docs/html/interfacelapack_1_1zpotrs-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zpotrs.html b/docs/html/interfacelapack_1_1zpotrs.html index 4ebc7095..deea1d1c 100644 --- a/docs/html/interfacelapack_1_1zpotrs.html +++ b/docs/html/interfacelapack_1_1zpotrs.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1ztzrzf-members.html b/docs/html/interfacelapack_1_1ztzrzf-members.html index 03567401..87a62efc 100644 --- a/docs/html/interfacelapack_1_1ztzrzf-members.html +++ b/docs/html/interfacelapack_1_1ztzrzf-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1ztzrzf.html b/docs/html/interfacelapack_1_1ztzrzf.html index 365ad32a..22ca50ee 100644 --- a/docs/html/interfacelapack_1_1ztzrzf.html +++ b/docs/html/interfacelapack_1_1ztzrzf.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunglq-members.html b/docs/html/interfacelapack_1_1zunglq-members.html index 8414c168..9ddc12a9 100644 --- a/docs/html/interfacelapack_1_1zunglq-members.html +++ b/docs/html/interfacelapack_1_1zunglq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunglq.html b/docs/html/interfacelapack_1_1zunglq.html index 389b6b24..870e2697 100644 --- a/docs/html/interfacelapack_1_1zunglq.html +++ b/docs/html/interfacelapack_1_1zunglq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zungqr-members.html b/docs/html/interfacelapack_1_1zungqr-members.html index a07d6bfb..0167ed95 100644 --- a/docs/html/interfacelapack_1_1zungqr-members.html +++ b/docs/html/interfacelapack_1_1zungqr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zungqr.html b/docs/html/interfacelapack_1_1zungqr.html index de04e494..621965eb 100644 --- a/docs/html/interfacelapack_1_1zungqr.html +++ b/docs/html/interfacelapack_1_1zungqr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunmlq-members.html b/docs/html/interfacelapack_1_1zunmlq-members.html index f3f780a2..937159a5 100644 --- a/docs/html/interfacelapack_1_1zunmlq-members.html +++ b/docs/html/interfacelapack_1_1zunmlq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunmlq.html b/docs/html/interfacelapack_1_1zunmlq.html index 66241b70..7aa57e0c 100644 --- a/docs/html/interfacelapack_1_1zunmlq.html +++ b/docs/html/interfacelapack_1_1zunmlq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunmqr-members.html b/docs/html/interfacelapack_1_1zunmqr-members.html index 1d45c0f8..3efdd877 100644 --- a/docs/html/interfacelapack_1_1zunmqr-members.html +++ b/docs/html/interfacelapack_1_1zunmqr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunmqr.html b/docs/html/interfacelapack_1_1zunmqr.html index 51309c3d..a48497b6 100644 --- a/docs/html/interfacelapack_1_1zunmqr.html +++ b/docs/html/interfacelapack_1_1zunmqr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunmrz-members.html b/docs/html/interfacelapack_1_1zunmrz-members.html index b6d2b4f0..e0c5d43d 100644 --- a/docs/html/interfacelapack_1_1zunmrz-members.html +++ b/docs/html/interfacelapack_1_1zunmrz-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelapack_1_1zunmrz.html b/docs/html/interfacelapack_1_1zunmrz.html index cb1f7532..74bdb2a1 100644 --- a/docs/html/interfacelapack_1_1zunmrz.html +++ b/docs/html/interfacelapack_1_1zunmrz.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1band__diag__mtx__mult-members.html b/docs/html/interfacelinalg_1_1band__diag__mtx__mult-members.html index ae8eed3c..eea6932d 100644 --- a/docs/html/interfacelinalg_1_1band__diag__mtx__mult-members.html +++ b/docs/html/interfacelinalg_1_1band__diag__mtx__mult-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1band__diag__mtx__mult.html b/docs/html/interfacelinalg_1_1band__diag__mtx__mult.html index ff071627..b61acb40 100644 --- a/docs/html/interfacelinalg_1_1band__diag__mtx__mult.html +++ b/docs/html/interfacelinalg_1_1band__diag__mtx__mult.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -166,7 +166,7 @@ -

Definition at line 4002 of file linalg.f90.

+

Definition at line 4132 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1band__mtx__mult-members.html b/docs/html/interfacelinalg_1_1band__mtx__mult-members.html index 3c2857d4..1638e9ff 100644 --- a/docs/html/interfacelinalg_1_1band__mtx__mult-members.html +++ b/docs/html/interfacelinalg_1_1band__mtx__mult-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1band__mtx__mult.html b/docs/html/interfacelinalg_1_1band__mtx__mult.html index e9ae9936..b8e7df52 100644 --- a/docs/html/interfacelinalg_1_1band__mtx__mult.html +++ b/docs/html/interfacelinalg_1_1band__mtx__mult.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -191,7 +191,7 @@ -

Definition at line 3897 of file linalg.f90.

+

Definition at line 4027 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx-members.html b/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx-members.html index 3e1cc17b..a1dd2b0a 100644 --- a/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx-members.html +++ b/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx.html b/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx.html index e59dfb12..48e78941 100644 --- a/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx.html +++ b/docs/html/interfacelinalg_1_1band__mtx__to__full__mtx.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -151,7 +151,7 @@ -

Definition at line 3939 of file linalg.f90.

+

Definition at line 4069 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1banded__to__dense-members.html b/docs/html/interfacelinalg_1_1banded__to__dense-members.html new file mode 100644 index 00000000..30dd1f90 --- /dev/null +++ b/docs/html/interfacelinalg_1_1banded__to__dense-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::banded_to_dense Member List
+
+
+ +

This is the complete list of members for linalg::banded_to_dense, including all inherited members.

+ + + +
banded_to_dense_cmplx (defined in linalg::banded_to_dense)linalg::banded_to_dense
banded_to_dense_dbl (defined in linalg::banded_to_dense)linalg::banded_to_dense
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1banded__to__dense.html b/docs/html/interfacelinalg_1_1banded__to__dense.html new file mode 100644 index 00000000..10e5814d --- /dev/null +++ b/docs/html/interfacelinalg_1_1banded__to__dense.html @@ -0,0 +1,157 @@ + + + + + + + +linalg: linalg::banded_to_dense Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::banded_to_dense Interface Reference
+
+
+ +

Converts a banded matrix to a dense matrix. + More...

+ + + + + + +

+Public Member Functions

banded_to_dense_dbl
 
banded_to_dense_cmplx
 
+

Detailed Description

+

Converts a banded matrix to a dense matrix.

+
Syntax
subroutine banded_to_dense(integer(int32) m, integer(int32) kl, integer(int32) ku, real(real64) a(:,:), real(real64) x(:,:), optional class(errors) err)
+
subroutine banded_to_dense(integer(int32) m, integer(int32) kl, integer(int32) ku, complex(real64) a(:,:), complex(real64) x(:,:), optional class(errors) err)
+
+
Parameters
+ + + + + + + +
[in]mThe number of rows in the matrix.
[in]klThe number of subdiagonals. Must be at least 0.
[in]kuThe number of superdiagonals. Must be at least 0.
[in]aThe (KL+KU+1)-by-N banded matrix.
[out]xThe M-by-N dense matrix.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_INVALID_INPUT_ERROR: Occurs if either ku or kl are not zero or greater.
  • +
  • LA_MATRIX_FORMAT_ERROR: Occurs if ku + kl + 1 is not equal to size(a, 2).
  • +
  • LA_ARRAY_SIZE_ERROR: Occurs if x is not sized correctly.
  • +
+
+
+
+ +

Definition at line 4160 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1cholesky__factor-members.html b/docs/html/interfacelinalg_1_1cholesky__factor-members.html index 6bce02a1..5d7fcacb 100644 --- a/docs/html/interfacelinalg_1_1cholesky__factor-members.html +++ b/docs/html/interfacelinalg_1_1cholesky__factor-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1cholesky__factor.html b/docs/html/interfacelinalg_1_1cholesky__factor.html index 5aa2a8f7..868ea48a 100644 --- a/docs/html/interfacelinalg_1_1cholesky__factor.html +++ b/docs/html/interfacelinalg_1_1cholesky__factor.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -186,9 +186,9 @@
print '(A)', "Cholesky Solution (Manual Approach): X = "
print '(F8.4)', (bu(i), i = 1, size(bu))
end program
-
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1574
-
Solves a system of Cholesky factored equations.
Definition linalg.f90:2532
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1686
+
Solves a system of Cholesky factored equations.
Definition linalg.f90:2662
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Cholesky Solution: X =
239.5833
@@ -200,7 +200,7 @@
10.3333
-

Definition at line 1574 of file linalg.f90.

+

Definition at line 1686 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1cholesky__rank1__downdate-members.html b/docs/html/interfacelinalg_1_1cholesky__rank1__downdate-members.html index 3d632085..ef623fe9 100644 --- a/docs/html/interfacelinalg_1_1cholesky__rank1__downdate-members.html +++ b/docs/html/interfacelinalg_1_1cholesky__rank1__downdate-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1cholesky__rank1__downdate.html b/docs/html/interfacelinalg_1_1cholesky__rank1__downdate.html index a456874d..7db0f4cc 100644 --- a/docs/html/interfacelinalg_1_1cholesky__rank1__downdate.html +++ b/docs/html/interfacelinalg_1_1cholesky__rank1__downdate.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -187,9 +187,9 @@
print *, ad(i,:)
end do
end program
-
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1574
-
Computes the rank 1 downdate to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1780
-
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:331
+
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1686
+
Computes the rank 1 downdate to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1892
+
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:395
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Downdating the Factored Form:
2.0000000000000000 6.0000000000000000 -8.0000000000000000
@@ -201,7 +201,7 @@
0.0000000000000000 0.0000000000000000 3.0000000000000000
-

Definition at line 1780 of file linalg.f90.

+

Definition at line 1892 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1cholesky__rank1__update-members.html b/docs/html/interfacelinalg_1_1cholesky__rank1__update-members.html index cfd2cb35..62b41999 100644 --- a/docs/html/interfacelinalg_1_1cholesky__rank1__update-members.html +++ b/docs/html/interfacelinalg_1_1cholesky__rank1__update-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1cholesky__rank1__update.html b/docs/html/interfacelinalg_1_1cholesky__rank1__update.html index 14456323..fddc2b99 100644 --- a/docs/html/interfacelinalg_1_1cholesky__rank1__update.html +++ b/docs/html/interfacelinalg_1_1cholesky__rank1__update.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -181,9 +181,9 @@
print *, au(i,:)
end do
end program
-
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1574
-
Computes the rank 1 update to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1673
-
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:331
+
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1686
+
Computes the rank 1 update to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1785
+
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:395
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Updating the Factored Form:
2.0615528128088303 5.4570515633174921 -7.2760687510899889
@@ -195,7 +195,7 @@
0.0000000000000000 0.0000000000000000 6.6989384530323557
-

Definition at line 1673 of file linalg.f90.

+

Definition at line 1785 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1dense__to__banded-members.html b/docs/html/interfacelinalg_1_1dense__to__banded-members.html new file mode 100644 index 00000000..bbc6da91 --- /dev/null +++ b/docs/html/interfacelinalg_1_1dense__to__banded-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::dense_to_banded Member List
+
+
+ +

This is the complete list of members for linalg::dense_to_banded, including all inherited members.

+ + + +
dense_to_banded_cmplx (defined in linalg::dense_to_banded)linalg::dense_to_banded
dense_to_banded_dbl (defined in linalg::dense_to_banded)linalg::dense_to_banded
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1dense__to__banded.html b/docs/html/interfacelinalg_1_1dense__to__banded.html new file mode 100644 index 00000000..b44faa8f --- /dev/null +++ b/docs/html/interfacelinalg_1_1dense__to__banded.html @@ -0,0 +1,155 @@ + + + + + + + +linalg: linalg::dense_to_banded Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::dense_to_banded Interface Reference
+
+
+ +

Converts a dense matrix to a banded matrix. + More...

+ + + + + + +

+Public Member Functions

dense_to_banded_dbl
 
dense_to_banded_cmplx
 
+

Detailed Description

+

Converts a dense matrix to a banded matrix.

+
Syntax
subroutine dense_to_banded(real(real64) a(:,:), integer(int32) kl, integer(int32) ku, real(real64) x(:,:), optional class(errors) err)
+
subroutine dense_to_banded(complex(real64) a(:,:), integer(int32) kl, integer(int32) ku, complex(real64) x(:,:), optional class(errors) err)
+
+
Parameters
+ + + + + + +
[in]mThe M-by-N dense matrix.
[in]klThe number of subdiagonals. Must be at least 0.
[in]kuThe number of superdiagonals. Must be at least 0.
[out]xThe (KL+KU+1)-by-N banded matrix.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_INVALID_INPUT_ERROR: Occurs if either ku or kl are not zero or greater.
  • +
  • LA_ARRAY_SIZE_ERROR: Occurs if x is not sized correctly.
  • +
+
+
+
+ +

Definition at line 4185 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1det-members.html b/docs/html/interfacelinalg_1_1det-members.html index 63008366..d62e5bb7 100644 --- a/docs/html/interfacelinalg_1_1det-members.html +++ b/docs/html/interfacelinalg_1_1det-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1det.html b/docs/html/interfacelinalg_1_1det.html index 60e6b9d4..fcd2e280 100644 --- a/docs/html/interfacelinalg_1_1det.html +++ b/docs/html/interfacelinalg_1_1det.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -137,7 +137,7 @@
Returns
The determinant of a.
-

Definition at line 571 of file linalg.f90.

+

Definition at line 658 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1diag__mtx__mult-members.html b/docs/html/interfacelinalg_1_1diag__mtx__mult-members.html index e48e8a92..1a52d405 100644 --- a/docs/html/interfacelinalg_1_1diag__mtx__mult-members.html +++ b/docs/html/interfacelinalg_1_1diag__mtx__mult-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -113,6 +113,7 @@ diag_mtx_mult_mtx4 (defined in linalg::diag_mtx_mult)linalg::diag_mtx_mult diag_mtx_mult_mtx_cmplx (defined in linalg::diag_mtx_mult)linalg::diag_mtx_mult diag_mtx_mult_mtx_mix (defined in linalg::diag_mtx_mult)linalg::diag_mtx_mult + diag_mtx_sparse_mult (defined in linalg::diag_mtx_mult)linalg::diag_mtx_mult
diff --git a/docs/html/interfacelinalg_1_1diag__mtx__mult.html b/docs/html/interfacelinalg_1_1diag__mtx__mult.html index 1f1f40ff..132cce99 100644 --- a/docs/html/interfacelinalg_1_1diag__mtx__mult.html +++ b/docs/html/interfacelinalg_1_1diag__mtx__mult.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -135,10 +135,13 @@  diag_mtx_mult_mtx2_mix   +diag_mtx_sparse_mult

Detailed Description

Multiplies a diagonal matrix with another matrix or array.

-
Syntax 1
Computes the matrix operation: \( C = \alpha A op(B) + \beta C \), or \( C = \alpha op(B) A + \beta C \).
subroutine diag_mtx_mult(logical lside, logical trans, real(real64) alpha, real(real64) a(:), real(real64) b(:,:), real(real64) beta, real(real64) c(:,:), optional class(errors) err)
+
Syntax 1
Computes the matrix operation: C = alpha * A * op(B) + beta * C, or C = alpha * op(B) * A + beta * C.
subroutine diag_mtx_mult(logical lside, logical trans, real(real64) alpha, real(real64) a(:), real(real64) b(:,:), real(real64) beta, real(real64) c(:,:), optional class(errors) err)
subroutine diag_mtx_mult(logical lside, logical trans, real(real64) alpha, complex(real64) a(:), complex(real64) b(:,:), real(real64) beta, complex(real64) c(:,:), optional class(errors) err)
subroutine diag_mtx_mult(logical lside, logical trans, real(real64) alpha, complex(real64) a(:), real(real64) b(:,:), real(real64) beta, complex(real64) c(:,:), optional class(errors) err)
subroutine diag_mtx_mult(logical lside, logical trans, complex(real64) alpha, complex(real64) a(:), complex(real64) b(:,:), complex(real64) beta, complex(real64) c(:,:), optional class(errors) err)
@@ -147,7 +150,7 @@
Parameters
- +
[in]lsideSet to true to apply matrix A from the left; else, set to false to apply matrix A from the left.
[in]transSet to true if \( op(B) = B^T \); else, set to false for \( op(B) = B\). In the complex case set to LA_TRANSPOSE if \( op(B) = B^T \), set to LA_HERMITIAN_TRANSPOSE if \( op(B) = B^H \), otherwise set to LA_NO_OPERATION if \( op(B) = B \).
[in]transSet to true if op(B) = B^T; else, set to false for op(B) = B. In the complex case set to LA_TRANSPOSE if op(B) = B^T, set to LA_HERMITIAN_TRANSPOSE if op(B) = B^H, otherwise set to LA_NO_OPERATION if op(B) = B.
[in]alphaA scalar multiplier.
[in]aA K-element array containing the diagonal elements of A where K = MIN(M,P) if lside is true; else, if lside is false, K = MIN(N,P).
[in]bThe LDB-by-TDB matrix B where (LDB = leading dimension of B, and TDB = trailing dimension of B):
    @@ -166,7 +169,7 @@
-
Syntax 2
Computes the matrix operation: \( B = \alpha A op(B) \), or \( B = \alpha op(B) * A \).
subroutine diag_mtx_mult(logical lside, real(real64) alpha, real(real64) a(:), real(real64) b(:,:), optional class(errors) err)
+
Syntax 2
Computes the matrix operation: B = alpha * A * B, or B = alpha B * A.
subroutine diag_mtx_mult(logical lside, real(real64) alpha, real(real64) a(:), real(real64) b(:,:), optional class(errors) err)
subroutine diag_mtx_mult(logical lside, complex(real64) alpha, complex(real64) a(:), complex(real64) b(:,:), optional class(errors) err)
subroutine diag_mtx_mult(logical lside, complex(real64) alpha, real(real64) a(:), complex(real64) b(:,:), optional class(errors) err)
@@ -183,6 +186,21 @@
+
Syntax 3
Computes the sparse-matrix operation: B = alpha * A * B or B = alpha * B * A where A is a diagonal matrix and B is a sparse matrix.
subroutine diag_mtx_mult(logical lside, real(real64) alpha, real(real64) a(:), class(csr_matrix) b, optional class(errors) err)
+
+
Parameters
+ + + + + + +
[in]lsideSet to true to apply matrix A from the left; else, set to false to apply matrix A from the left.
[in]alphaA scalar multiplier.
[in]aA K-element array containing the diagonal elements of A where K = MIN(M,P) if lside is true; else, if lside is false, K = MIN(N,P).
[in]bOn input, the M-by-N matrix B. On output, the resulting M-by-N matrix.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_ARRAY_SIZE_ERROR: Occurs if any of the input array sizes are incorrect.
  • +
+
+
+
Usage
The following example illustrates the use of the diagonal matrix multiplication routine to compute the \( S V^T \) component of a singular value decomposition.
program example
use iso_fortran_env, only : int32, real64
use linalg
@@ -218,14 +236,15 @@
! Compute U * S * V**T
call diag_mtx_mult(.true., 1.0d0, s, vt) ! Compute: VT = S * V**T
-
ac = matmul(u(:,1:2), vt)
+
ac = matmul(u(:,1:2), vt)
print '(A)', "U * S * V**T ="
do i = 1, size(ac, 1)
print *, ac(i,:)
end do
end program
-
Multiplies a diagonal matrix with another matrix or array.
Definition linalg.f90:466
-
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Definition linalg.f90:2069
+
Multiplies a diagonal matrix with another matrix or array.
Definition linalg.f90:552
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Definition linalg.f90:2181
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
U =
-0.47411577501825380 -0.81850539032073777 -0.32444284226152509
@@ -243,7 +262,7 @@
-1.0000000000000000 0.99999999999999967
-

Definition at line 466 of file linalg.f90.

+

Definition at line 552 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1eigen-members.html b/docs/html/interfacelinalg_1_1eigen-members.html index 0009c72c..cd50b538 100644 --- a/docs/html/interfacelinalg_1_1eigen-members.html +++ b/docs/html/interfacelinalg_1_1eigen-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1eigen.html b/docs/html/interfacelinalg_1_1eigen.html index 40ae3010..6edab4d8 100644 --- a/docs/html/interfacelinalg_1_1eigen.html +++ b/docs/html/interfacelinalg_1_1eigen.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -244,7 +244,7 @@
print '(F10.3)', (real(modeshapes(j,i)), j = 1, size(natfreq))
end do
end program
-
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Definition linalg.f90:3240
+
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Definition linalg.f90:3370
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Modal Information:
Mode 1: (232.9225 Hz)
@@ -267,7 +267,7 @@
-

Definition at line 3240 of file linalg.f90.

+

Definition at line 3370 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1extract__diagonal-members.html b/docs/html/interfacelinalg_1_1extract__diagonal-members.html new file mode 100644 index 00000000..17c2e5e6 --- /dev/null +++ b/docs/html/interfacelinalg_1_1extract__diagonal-members.html @@ -0,0 +1,120 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::extract_diagonal Member List
+
+
+ +

This is the complete list of members for linalg::extract_diagonal, including all inherited members.

+ + + + +
extract_diagonal_cmplx (defined in linalg::extract_diagonal)linalg::extract_diagonal
extract_diagonal_csr (defined in linalg::extract_diagonal)linalg::extract_diagonal
extract_diagonal_dbl (defined in linalg::extract_diagonal)linalg::extract_diagonal
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1extract__diagonal.html b/docs/html/interfacelinalg_1_1extract__diagonal.html new file mode 100644 index 00000000..f16f4b34 --- /dev/null +++ b/docs/html/interfacelinalg_1_1extract__diagonal.html @@ -0,0 +1,156 @@ + + + + + + + +linalg: linalg::extract_diagonal Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::extract_diagonal Interface Reference
+
+
+ +

Extracts the diagonal of a matrix. + More...

+ + + + + + + + +

+Public Member Functions

extract_diagonal_dbl
 
extract_diagonal_cmplx
 
extract_diagonal_csr
 
+

Detailed Description

+

Extracts the diagonal of a matrix.

+
Syntax
subroutine extract_diagonal(real(real64) a(:,:), real(real64) diag(:), optional class(errors) err)
+
subroutine extract_diagonal(complex(real64) a(:,:), complex(real64) diag(:), optional class(errors) err)
+
subroutine extract_diagonal(class(csr_matrix) a, real(real64) diag(:), optional class(errors) err)
+
+
Parameters
+ + + + +
[in]aThe M-by-N matrix.
[out]diagThe MIN(M, N) element array for the diagonal elements.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_ARRAY_SIZE_ERROR: Occurs if @diag is not sized correctly.
  • +
+
+
+
+ +

Definition at line 4207 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1form__lq-members.html b/docs/html/interfacelinalg_1_1form__lq-members.html index c876f75f..a4bdbdd2 100644 --- a/docs/html/interfacelinalg_1_1form__lq-members.html +++ b/docs/html/interfacelinalg_1_1form__lq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1form__lq.html b/docs/html/interfacelinalg_1_1form__lq.html index 700ae539..c07ba129 100644 --- a/docs/html/interfacelinalg_1_1form__lq.html +++ b/docs/html/interfacelinalg_1_1form__lq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -193,10 +193,10 @@
print '(A)', "LQ Solution: X = "
print '(F8.4)', (x(i), i = 1, size(x))
end program
-
Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorit...
Definition linalg.f90:3551
-
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3437
-
Performs the matrix operation: .
Definition linalg.f90:296
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorit...
Definition linalg.f90:3681
+
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3567
+
Performs the matrix operation: .
Definition linalg.f90:360
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
LQ Solution: X =
0.3333
@@ -208,7 +208,7 @@
-

Definition at line 3551 of file linalg.f90.

+

Definition at line 3681 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1form__lu-members.html b/docs/html/interfacelinalg_1_1form__lu-members.html index f31740fb..f17550dd 100644 --- a/docs/html/interfacelinalg_1_1form__lu-members.html +++ b/docs/html/interfacelinalg_1_1form__lu-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1form__lu.html b/docs/html/interfacelinalg_1_1form__lu.html index 995a3b05..6ab48d4a 100644 --- a/docs/html/interfacelinalg_1_1form__lu.html +++ b/docs/html/interfacelinalg_1_1form__lu.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -203,7 +203,7 @@
! Solve the lower triangular system L * Y = P * B for Y, but first compute
! P * B, and store the results in B
-
b = matmul(p, b)
+
b = matmul(p, b)
! Now, compute the solution to the lower triangular system. Store the
! result in B. Remember, L is unit diagonal (ones on its diagonal)
@@ -216,9 +216,10 @@
print '(A)', "LU Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
end program
-
Extracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor.
Definition linalg.f90:854
-
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:732
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Extracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor.
Definition linalg.f90:966
+
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:843
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
LU Solution: X =
0.3333
@@ -226,7 +227,7 @@
0.0000
-

Definition at line 854 of file linalg.f90.

+

Definition at line 966 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1form__qr-members.html b/docs/html/interfacelinalg_1_1form__qr-members.html index 49d1527b..a655ba48 100644 --- a/docs/html/interfacelinalg_1_1form__qr-members.html +++ b/docs/html/interfacelinalg_1_1form__qr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1form__qr.html b/docs/html/interfacelinalg_1_1form__qr.html index 0f134c0d..75d43b53 100644 --- a/docs/html/interfacelinalg_1_1form__qr.html +++ b/docs/html/interfacelinalg_1_1form__qr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -207,7 +207,7 @@
! R * X = Q**T * B.
! Compute Q**T * B, and store the results in B
-
b = matmul(transpose(q), b)
+
b = matmul(transpose(q), b)
! Solve the upper triangular system R * X = Q**T * B for X
call solve_triangular_system(.true., .false., .true., a, b)
@@ -221,9 +221,11 @@
! for by noting that Q * R = A * P, where P is an N-by-N matrix describing
! the column pivoting operations.
end program
-
Forms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR fact...
Definition linalg.f90:1168
-
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1008
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Forms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR fact...
Definition linalg.f90:1280
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1120
+
Solves a triangular system of equations.
Definition linalg.f90:2315
+
Provides the transpose of a sparse matrix.
Definition linalg.f90:5454
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
QR Solution: X =
0.3333
@@ -236,7 +238,7 @@ -

Definition at line 1168 of file linalg.f90.

+

Definition at line 1280 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1lq__factor-members.html b/docs/html/interfacelinalg_1_1lq__factor-members.html index 4bee93b2..a5616b90 100644 --- a/docs/html/interfacelinalg_1_1lq__factor-members.html +++ b/docs/html/interfacelinalg_1_1lq__factor-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1lq__factor.html b/docs/html/interfacelinalg_1_1lq__factor.html index 932f816c..891a7dc2 100644 --- a/docs/html/interfacelinalg_1_1lq__factor.html +++ b/docs/html/interfacelinalg_1_1lq__factor.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -192,10 +192,10 @@
print '(A)', "LQ Solution: X = "
print '(F8.4)', (x(i), i = 1, size(x))
end program
-
Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorit...
Definition linalg.f90:3551
-
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3437
-
Performs the matrix operation: .
Definition linalg.f90:296
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorit...
Definition linalg.f90:3681
+
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3567
+
Performs the matrix operation: .
Definition linalg.f90:360
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
LQ Solution: X =
0.3333
@@ -207,7 +207,7 @@ -

Definition at line 3437 of file linalg.f90.

+

Definition at line 3567 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1lu__factor-members.html b/docs/html/interfacelinalg_1_1lu__factor-members.html index 18e465d8..a7ee634b 100644 --- a/docs/html/interfacelinalg_1_1lu__factor-members.html +++ b/docs/html/interfacelinalg_1_1lu__factor-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -105,8 +105,9 @@

This is the complete list of members for linalg::lu_factor, including all inherited members.

- - + + +
lu_factor_cmplx (defined in linalg::lu_factor)linalg::lu_factor
lu_factor_dbl (defined in linalg::lu_factor)linalg::lu_factor
csr_lu_factor (defined in linalg::lu_factor)linalg::lu_factor
lu_factor_cmplx (defined in linalg::lu_factor)linalg::lu_factor
lu_factor_dbl (defined in linalg::lu_factor)linalg::lu_factor
diff --git a/docs/html/interfacelinalg_1_1lu__factor.html b/docs/html/interfacelinalg_1_1lu__factor.html index c129369a..cc94e311 100644 --- a/docs/html/interfacelinalg_1_1lu__factor.html +++ b/docs/html/interfacelinalg_1_1lu__factor.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -117,6 +117,9 @@  lu_factor_cmplx   +csr_lu_factor

Detailed Description

Computes the LU factorization of an M-by-N matrix.

@@ -135,7 +138,25 @@ -
Notes
This routine utilizes the LAPACK routine DGETRF.
+
Syntax (Sparse Matrices)
subroutine lu_factor(class(csr_matrix) a, type(msr_matrix) lu, integer(int32) ju(:), optional real(real64) droptol, optional class(errors) err)
+
+
Parameters
+ + + + + + +
[in]aThe M-by-N sparse matrix to factor.
[out]luThe factored matrix, stored in MSR format. The diagonal is stored inverted.
[out]juAn M-element array used to track the starting row index of the U matrix.
[in]droptolAn optional threshold value used to determine when to drop small terms as part of the factorization of matrix A. The default value is set to the square root of machine precision (~1e-8).
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_ARRAY_SIZE_ERROR: Occurs if ju is not sized correctly.
  • +
  • LA_OUT_OF_MEMORY_ERROR: Occurs if there is an issue with internal memory allocations.
  • +
  • LA_MATRIX_FORMAT_ERROR: Occurs if a is improperly formatted.
  • +
  • LA_SINGULAR_MATRIX_ERROR: Occurs if a is singular.
  • +
+
+
+
+
Notes
The dense routine utilizes the LAPACK routine DGETRF.
See Also
The program generates the following output.
LU Solution: X =
0.3333
@@ -188,7 +209,7 @@
0.0000
-

Definition at line 732 of file linalg.f90.

+

Definition at line 843 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1matmul-members.html b/docs/html/interfacelinalg_1_1matmul-members.html new file mode 100644 index 00000000..37644ca7 --- /dev/null +++ b/docs/html/interfacelinalg_1_1matmul-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::matmul Member List
+
+
+ +

This is the complete list of members for linalg::matmul, including all inherited members.

+ + + +
csr_mtx_mtx_mult (defined in linalg::matmul)linalg::matmul
csr_mtx_vec_mult (defined in linalg::matmul)linalg::matmul
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1matmul.html b/docs/html/interfacelinalg_1_1matmul.html new file mode 100644 index 00000000..27c78ea1 --- /dev/null +++ b/docs/html/interfacelinalg_1_1matmul.html @@ -0,0 +1,158 @@ + + + + + + + +linalg: linalg::matmul Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::matmul Interface Reference
+
+
+ +

Performs sparse matrix multiplication C = A * B. + More...

+ + + + + + +

+Public Member Functions

csr_mtx_mtx_mult
 
csr_mtx_vec_mult
 
+

Detailed Description

+

Performs sparse matrix multiplication C = A * B.

+
Syntax 1
type(csr_matrix) function matmul(class(csr_matrix) a, class(csr_matrix) b)
+
+
Parameters
+ + + +
[in]aThe M-by-K matrix A.
[in]bThe K-by-N matrix B.
+
+
+
Returns
The M-by-N matrix C.
+
Syntax 2
real(real64)(:) function matmul(class(csr_matrix) a, real(real64) b(:))
+
+
Parameters
+ + + +
[in]aThe M-by-N matrix A.
[in]bThe N-element array B.
+
+
+
Returns
The M-element array C.
+ +

Definition at line 5368 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1mtx__inverse-members.html b/docs/html/interfacelinalg_1_1mtx__inverse-members.html index e628f14d..1a9617fd 100644 --- a/docs/html/interfacelinalg_1_1mtx__inverse-members.html +++ b/docs/html/interfacelinalg_1_1mtx__inverse-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mtx__inverse.html b/docs/html/interfacelinalg_1_1mtx__inverse.html index 8c20830b..0b4365b5 100644 --- a/docs/html/interfacelinalg_1_1mtx__inverse.html +++ b/docs/html/interfacelinalg_1_1mtx__inverse.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -166,7 +166,7 @@
call mtx_inverse(ai)
! Show that A * inv(A) = I
-
c = matmul(a, ai)
+
c = matmul(a, ai)
! Display the inverse
print '(A)', "Inverse:"
@@ -180,7 +180,8 @@
print *, c(i,:)
end do
end program
-
Computes the inverse of a square matrix.
Definition linalg.f90:2920
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Computes the inverse of a square matrix.
Definition linalg.f90:3050
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Inverse:
-1.7777777777777777 0.88888888888888884 -0.11111111111111110
@@ -192,7 +193,7 @@
1.7763568394002505E-015 -8.8817841970012523E-016 1.0000000000000000
-

Definition at line 2920 of file linalg.f90.

+

Definition at line 3050 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1mtx__mult-members.html b/docs/html/interfacelinalg_1_1mtx__mult-members.html index 1a095e86..99b580f9 100644 --- a/docs/html/interfacelinalg_1_1mtx__mult-members.html +++ b/docs/html/interfacelinalg_1_1mtx__mult-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mtx__mult.html b/docs/html/interfacelinalg_1_1mtx__mult.html index 2ce7ad5b..544b84f4 100644 --- a/docs/html/interfacelinalg_1_1mtx__mult.html +++ b/docs/html/interfacelinalg_1_1mtx__mult.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -165,7 +165,7 @@
Notes
This routine utilizes the BLAS routines DGEMM, ZGEMM, DGEMV, or ZGEMV.
-

Definition at line 296 of file linalg.f90.

+

Definition at line 360 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1mtx__pinverse-members.html b/docs/html/interfacelinalg_1_1mtx__pinverse-members.html index b167c90f..2c3b5748 100644 --- a/docs/html/interfacelinalg_1_1mtx__pinverse-members.html +++ b/docs/html/interfacelinalg_1_1mtx__pinverse-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mtx__pinverse.html b/docs/html/interfacelinalg_1_1mtx__pinverse.html index 982c2377..2db8ef2b 100644 --- a/docs/html/interfacelinalg_1_1mtx__pinverse.html +++ b/docs/html/interfacelinalg_1_1mtx__pinverse.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -170,7 +170,7 @@
call mtx_pinverse(a, ai)
! Notice, A**-1 * A is an identity matrix.
-
c = matmul(ai, ao)
+
c = matmul(ai, ao)
! Display the inverse
print '(A)', "Inverse:"
@@ -184,7 +184,8 @@
print *, c(i,:)
end do
end program
-
Computes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition o...
Definition linalg.f90:3026
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Computes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition o...
Definition linalg.f90:3156
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Inverse:
1.0000000000000000 0.0000000000000000 0.0000000000000000
@@ -194,7 +195,7 @@
0.0000000000000000 0.99999999999999967
-

Definition at line 3026 of file linalg.f90.

+

Definition at line 3156 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1mtx__rank-members.html b/docs/html/interfacelinalg_1_1mtx__rank-members.html index 635fef02..79ba1e33 100644 --- a/docs/html/interfacelinalg_1_1mtx__rank-members.html +++ b/docs/html/interfacelinalg_1_1mtx__rank-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mtx__rank.html b/docs/html/interfacelinalg_1_1mtx__rank.html index 9c191590..77f35da9 100644 --- a/docs/html/interfacelinalg_1_1mtx__rank.html +++ b/docs/html/interfacelinalg_1_1mtx__rank.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -144,7 +144,7 @@ -

Definition at line 538 of file linalg.f90.

+

Definition at line 625 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1mult__lq-members.html b/docs/html/interfacelinalg_1_1mult__lq-members.html index 6b6aa22d..96af92ae 100644 --- a/docs/html/interfacelinalg_1_1mult__lq-members.html +++ b/docs/html/interfacelinalg_1_1mult__lq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mult__lq.html b/docs/html/interfacelinalg_1_1mult__lq.html index b59b1b59..aa82bd06 100644 --- a/docs/html/interfacelinalg_1_1mult__lq.html +++ b/docs/html/interfacelinalg_1_1mult__lq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -217,9 +217,9 @@
print '(A)', "LQ Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
end program
-
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3437
-
Multiplies a general matrix by the orthogonal matrix Q from a LQ factorization.
Definition linalg.f90:3700
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3567
+
Multiplies a general matrix by the orthogonal matrix Q from a LQ factorization.
Definition linalg.f90:3830
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
LQ Solution: X =
0.3333
@@ -231,7 +231,7 @@ -

Definition at line 3700 of file linalg.f90.

+

Definition at line 3830 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1mult__qr-members.html b/docs/html/interfacelinalg_1_1mult__qr-members.html index 18af692c..0c1b7307 100644 --- a/docs/html/interfacelinalg_1_1mult__qr-members.html +++ b/docs/html/interfacelinalg_1_1mult__qr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mult__qr.html b/docs/html/interfacelinalg_1_1mult__qr.html index 155f4983..c64eefaa 100644 --- a/docs/html/interfacelinalg_1_1mult__qr.html +++ b/docs/html/interfacelinalg_1_1mult__qr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -220,9 +220,9 @@
! for by noting that Q * R = A * P, where P is an N-by-N matrix describing
! the column pivoting operations.
end program
-
Multiplies a general matrix by the orthogonal matrix Q from a QR factorization.
Definition linalg.f90:1325
-
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1008
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Multiplies a general matrix by the orthogonal matrix Q from a QR factorization.
Definition linalg.f90:1437
+
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1120
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
QR Solution: X =
0.3333
@@ -230,7 +230,7 @@
0.0000
-

Definition at line 1325 of file linalg.f90.

+

Definition at line 1437 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1mult__rz-members.html b/docs/html/interfacelinalg_1_1mult__rz-members.html index 65771ff2..cfa5dd22 100644 --- a/docs/html/interfacelinalg_1_1mult__rz-members.html +++ b/docs/html/interfacelinalg_1_1mult__rz-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1mult__rz.html b/docs/html/interfacelinalg_1_1mult__rz.html index 15b063e5..61831e25 100644 --- a/docs/html/interfacelinalg_1_1mult__rz.html +++ b/docs/html/interfacelinalg_1_1mult__rz.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -169,7 +169,7 @@
Notes
This routine utilizes the LAPACK routine DORMRZ (ZUNMRZ in the complex case).
-

Definition at line 1944 of file linalg.f90.

+

Definition at line 2056 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1nonzero__count-members.html b/docs/html/interfacelinalg_1_1nonzero__count-members.html new file mode 100644 index 00000000..bbf8819d --- /dev/null +++ b/docs/html/interfacelinalg_1_1nonzero__count-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::nonzero_count Member List
+
+
+ +

This is the complete list of members for linalg::nonzero_count, including all inherited members.

+ + + +
nonzero_count_csr (defined in linalg::nonzero_count)linalg::nonzero_count
nonzero_count_msr (defined in linalg::nonzero_count)linalg::nonzero_count
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1nonzero__count.html b/docs/html/interfacelinalg_1_1nonzero__count.html new file mode 100644 index 00000000..4bbaab03 --- /dev/null +++ b/docs/html/interfacelinalg_1_1nonzero__count.html @@ -0,0 +1,148 @@ + + + + + + + +linalg: linalg::nonzero_count Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::nonzero_count Interface Reference
+
+
+ +

Determines the number of nonzero entries in a sparse matrix. + More...

+ + + + + + +

+Public Member Functions

nonzero_count_csr
 
nonzero_count_msr
 
+

Detailed Description

+

Determines the number of nonzero entries in a sparse matrix.

+
Syntax
integer(int32) pure function nonzero_count(class(csr_matrix) x)
+
integer(int32) pure function nonzero_count(class(msr_matrix) x)
+
+
Parameters
+ + +
[in]xThe sparse matrix.
+
+
+
Returns
The number of non-zero elements in the sparse matrix.
+ +

Definition at line 5324 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07-_08-members.html b/docs/html/interfacelinalg_1_1operator_07-_08-members.html new file mode 100644 index 00000000..50140d58 --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07-_08-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::operator(-) Member List
+
+
+ +

This is the complete list of members for linalg::operator(-), including all inherited members.

+ + +
csr_mtx_sub (defined in linalg::operator(-))linalg::operator(-)
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07-_08.html b/docs/html/interfacelinalg_1_1operator_07-_08.html new file mode 100644 index 00000000..8f38a00d --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07-_08.html @@ -0,0 +1,145 @@ + + + + + + + +linalg: linalg::operator(-) Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::operator(-) Interface Reference
+
+
+ +

Subtracts two sparse matrices. + More...

+ + + + +

+Public Member Functions

csr_mtx_sub
 
+

Detailed Description

+

Subtracts two sparse matrices.

+
Syntax
type(csr_matrix) operator(-)(class(csr_matrix) a, class(csr_matrix) b)
+
+
Parameters
+ + + +
[in]aThe left-hand-side argument.
[in]bThe right-hand-side argument.
+
+
+
Returns
The resulting matrix.
+ +

Definition at line 5399 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07_09_08-members.html b/docs/html/interfacelinalg_1_1operator_07_09_08-members.html new file mode 100644 index 00000000..5de46656 --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07_09_08-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::operator(+) Member List
+
+
+ +

This is the complete list of members for linalg::operator(+), including all inherited members.

+ + +
csr_mtx_add (defined in linalg::operator(+))linalg::operator(+)
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07_09_08.html b/docs/html/interfacelinalg_1_1operator_07_09_08.html new file mode 100644 index 00000000..6837760f --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07_09_08.html @@ -0,0 +1,145 @@ + + + + + + + +linalg: linalg::operator(+) Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::operator(+) Interface Reference
+
+
+ +

Adds two sparse matrices. + More...

+ + + + +

+Public Member Functions

csr_mtx_add
 
+

Detailed Description

+

Adds two sparse matrices.

+
Syntax
type(csr_matrix) operator(+)(class(csr_matrix) a, class(csr_matrix) b)
+
+
Parameters
+ + + +
[in]aThe left-hand-side argument.
[in]bThe right-hand-side argument.
+
+
+
Returns
The resulting matrix.
+ +

Definition at line 5384 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07_2_08-members.html b/docs/html/interfacelinalg_1_1operator_07_2_08-members.html new file mode 100644 index 00000000..329ed82a --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07_2_08-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::operator(/) Member List
+
+
+ +

This is the complete list of members for linalg::operator(/), including all inherited members.

+ + +
csr_mtx_divide_scalar_1 (defined in linalg::operator(/))linalg::operator(/)
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07_2_08.html b/docs/html/interfacelinalg_1_1operator_07_2_08.html new file mode 100644 index 00000000..58bc9578 --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07_2_08.html @@ -0,0 +1,145 @@ + + + + + + + +linalg: linalg::operator(/) Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::operator(/) Interface Reference
+
+
+ +

Multiplies a sparse matrix by a scalar. + More...

+ + + + +

+Public Member Functions

csr_mtx_divide_scalar_1
 
+

Detailed Description

+

Multiplies a sparse matrix by a scalar.

+
Syntax
type(csr_matrix) operator(/)(class(csr_matrix) a, real(real64) b)
+
+
Parameters
+ + + +
[in]aThe left-hand-side argument.
[in]bThe right-hand-side argument.
+
+
+
Returns
The resulting matrix.
+ +

Definition at line 5431 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07_5_08-members.html b/docs/html/interfacelinalg_1_1operator_07_5_08-members.html new file mode 100644 index 00000000..afde47dc --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07_5_08-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::operator(*) Member List
+
+
+ +

This is the complete list of members for linalg::operator(*), including all inherited members.

+ + + +
csr_mtx_mult_scalar_1 (defined in linalg::operator(*))linalg::operator(*)
csr_mtx_mult_scalar_2 (defined in linalg::operator(*))linalg::operator(*)
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1operator_07_5_08.html b/docs/html/interfacelinalg_1_1operator_07_5_08.html new file mode 100644 index 00000000..224734ad --- /dev/null +++ b/docs/html/interfacelinalg_1_1operator_07_5_08.html @@ -0,0 +1,149 @@ + + + + + + + +linalg: linalg::operator(*) Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::operator(*) Interface Reference
+
+
+ +

Multiplies a sparse matrix and a scalar. + More...

+ + + + + + +

+Public Member Functions

csr_mtx_mult_scalar_1
 
csr_mtx_mult_scalar_2
 
+

Detailed Description

+

Multiplies a sparse matrix and a scalar.

+
Syntax
type(csr_matrix) operator(*)(class(csr_matrix) a, real(real64) b)
+
type(csr_matrix) operator(*)(real(real64) a, class(csr_matrix) b)
+
+
Parameters
+ + + +
[in]aThe left-hand-side argument.
[in]bThe right-hand-side argument.
+
+
+
Returns
The resulting matrix.
+ +

Definition at line 5415 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1pgmres__solver-members.html b/docs/html/interfacelinalg_1_1pgmres__solver-members.html new file mode 100644 index 00000000..2631183c --- /dev/null +++ b/docs/html/interfacelinalg_1_1pgmres__solver-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::pgmres_solver Member List
+
+
+ +

This is the complete list of members for linalg::pgmres_solver, including all inherited members.

+ + +
csr_pgmres_solver (defined in linalg::pgmres_solver)linalg::pgmres_solver
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1pgmres__solver.html b/docs/html/interfacelinalg_1_1pgmres__solver.html new file mode 100644 index 00000000..0e69334b --- /dev/null +++ b/docs/html/interfacelinalg_1_1pgmres__solver.html @@ -0,0 +1,166 @@ + + + + + + + +linalg: linalg::pgmres_solver Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::pgmres_solver Interface Reference
+
+
+ +

A preconditioned GMRES solver. + More...

+ + + + +

+Public Member Functions

csr_pgmres_solver
 
+

Detailed Description

+

A preconditioned GMRES solver.

+
Syntax
subroutine pgmres_solver( &
+
class(csr_matrix) a, &
+
class(msr_matrix) lu, &
+
integer(int32) ju(:), &
+
real(real64) b(:), &
+
real(real64) x(:), &
+
optional integer(int32) im, &
+
optional real(real64) tol, &
+
optional integer(int32) maxits, &
+
optional integer(int32) iout, &
+
optional class(errors) err)
+
+
Parameters
+ + + + + + + + + + + +
[in]aThe original N-by-N matrix.
[in]luThe N-by-N LU-factored matrix of the approximation to the system as output by lu_factor.
[in]juThe N-element U row tracking array output by lu_factor.
[in,out]bOn input, the N-element right-hand-side array. On output, this array is overwritten as it is used as in-place storage by the PGMRES algorithm.
[out]xThe N-element solution array.
[in]imAn optional parameter specifying the size of the Krylov subspace. This value should not exceed 50.
[in]tolAn optional parameter specifying the convergence tolerance against which the Euclidean norm of the residual is checked. The default value is the square root of machine precision.
[in]maxitsAn optional parameter specifying the maximum number of iterations allowed. The default is 100.
[in]ioutAn optional parameter used to specify the device to which status updates will be written. If no updates are requested, a value less than or equal to zero should be supplied. The default is zero such that no updates will be provided.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_ARRAY_SIZE_ERROR: Occurs if any of the arrays and/or matrices are not sized correctly.
  • +
  • LA_OUT_OF_MEMORY_ERROR: Occurs if there is an issue with internal memory allocations.
  • +
+
+
+
+ +

Definition at line 5532 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1qr__factor-members.html b/docs/html/interfacelinalg_1_1qr__factor-members.html index f0e6d3c4..cf0ceb8d 100644 --- a/docs/html/interfacelinalg_1_1qr__factor-members.html +++ b/docs/html/interfacelinalg_1_1qr__factor-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1qr__factor.html b/docs/html/interfacelinalg_1_1qr__factor.html index 2c5e5387..d105cdde 100644 --- a/docs/html/interfacelinalg_1_1qr__factor.html +++ b/docs/html/interfacelinalg_1_1qr__factor.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -208,8 +208,8 @@
! same manner. The only difference is to omit the PVT array (column pivot
! tracking array).
end program
-
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1008
-
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2426
+
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1120
+
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2556
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
QR Solution: X =
0.3333
@@ -223,7 +223,7 @@ -

Definition at line 1008 of file linalg.f90.

+

Definition at line 1120 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1qr__rank1__update-members.html b/docs/html/interfacelinalg_1_1qr__rank1__update-members.html index 66ebf280..f73f795a 100644 --- a/docs/html/interfacelinalg_1_1qr__rank1__update-members.html +++ b/docs/html/interfacelinalg_1_1qr__rank1__update-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1qr__rank1__update.html b/docs/html/interfacelinalg_1_1qr__rank1__update.html index a5493496..55fdb98d 100644 --- a/docs/html/interfacelinalg_1_1qr__rank1__update.html +++ b/docs/html/interfacelinalg_1_1qr__rank1__update.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -207,10 +207,10 @@
print *, a(i,:)
end do
end program
-
Forms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR fact...
Definition linalg.f90:1168
-
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1008
-
Computes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where , and such that ....
Definition linalg.f90:1475
-
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:331
+
Forms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR fact...
Definition linalg.f90:1280
+
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1120
+
Computes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where , and such that ....
Definition linalg.f90:1587
+
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:395
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Updating the Factored Form:
Q =
@@ -232,7 +232,7 @@
0.0000000000000000 0.0000000000000000 -5.2929341121113058
-

Definition at line 1475 of file linalg.f90.

+

Definition at line 1587 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1rank1__update-members.html b/docs/html/interfacelinalg_1_1rank1__update-members.html index 698bc242..fd62067b 100644 --- a/docs/html/interfacelinalg_1_1rank1__update-members.html +++ b/docs/html/interfacelinalg_1_1rank1__update-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1rank1__update.html b/docs/html/interfacelinalg_1_1rank1__update.html index 2a3be3d0..c6037b5a 100644 --- a/docs/html/interfacelinalg_1_1rank1__update.html +++ b/docs/html/interfacelinalg_1_1rank1__update.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -138,7 +138,7 @@
Notes
This routine is based upon the BLAS routine DGER or ZGER.
-

Definition at line 331 of file linalg.f90.

+

Definition at line 395 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1recip__mult__array-members.html b/docs/html/interfacelinalg_1_1recip__mult__array-members.html index 01ac06d0..44c79a1a 100644 --- a/docs/html/interfacelinalg_1_1recip__mult__array-members.html +++ b/docs/html/interfacelinalg_1_1recip__mult__array-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1recip__mult__array.html b/docs/html/interfacelinalg_1_1recip__mult__array.html index 27e92675..fddec502 100644 --- a/docs/html/interfacelinalg_1_1recip__mult__array.html +++ b/docs/html/interfacelinalg_1_1recip__mult__array.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -128,7 +128,7 @@
Notes
This routine is based upon the LAPACK routine DRSCL.
-

Definition at line 612 of file linalg.f90.

+

Definition at line 699 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1rz__factor-members.html b/docs/html/interfacelinalg_1_1rz__factor-members.html index 2c872539..f3b7743b 100644 --- a/docs/html/interfacelinalg_1_1rz__factor-members.html +++ b/docs/html/interfacelinalg_1_1rz__factor-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1rz__factor.html b/docs/html/interfacelinalg_1_1rz__factor.html index 6ebf01de..89a7c4c3 100644 --- a/docs/html/interfacelinalg_1_1rz__factor.html +++ b/docs/html/interfacelinalg_1_1rz__factor.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -148,7 +148,7 @@ -

Definition at line 1853 of file linalg.f90.

+

Definition at line 1965 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1size-members.html b/docs/html/interfacelinalg_1_1size-members.html new file mode 100644 index 00000000..0c6da70b --- /dev/null +++ b/docs/html/interfacelinalg_1_1size-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::size Member List
+
+
+ +

This is the complete list of members for linalg::size, including all inherited members.

+ + + +
csr_size (defined in linalg::size)linalg::size
msr_size (defined in linalg::size)linalg::size
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1size.html b/docs/html/interfacelinalg_1_1size.html new file mode 100644 index 00000000..4c51dc31 --- /dev/null +++ b/docs/html/interfacelinalg_1_1size.html @@ -0,0 +1,149 @@ + + + + + + + +linalg: linalg::size Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::size Interface Reference
+
+
+ +

Determines the size of the requested dimension of the supplied sparse matrix. + More...

+ + + + + + +

+Public Member Functions

csr_size
 
msr_size
 
+

Detailed Description

+

Determines the size of the requested dimension of the supplied sparse matrix.

+
Syntax
integer(int32) pure function size(class(csr_matrix) x, integer(int32) dim)
+
integer(int32) pure function size(class(msr_matrix) x, integer(int32) dim)
+
+
Parameters
+ + + +
[in]xThe sparse matrix.
[in]dimEither 1 (row) or 2(column).
+
+
+
Returns
The size of the requested dimension.
+ +

Definition at line 5342 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1solve__cholesky-members.html b/docs/html/interfacelinalg_1_1solve__cholesky-members.html index 4cc13ed3..00b687ba 100644 --- a/docs/html/interfacelinalg_1_1solve__cholesky-members.html +++ b/docs/html/interfacelinalg_1_1solve__cholesky-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__cholesky.html b/docs/html/interfacelinalg_1_1solve__cholesky.html index 7d362683..1a0c6a8a 100644 --- a/docs/html/interfacelinalg_1_1solve__cholesky.html +++ b/docs/html/interfacelinalg_1_1solve__cholesky.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -194,9 +194,9 @@
print '(A)', "Cholesky Solution (Manual Approach): X = "
print '(F8.4)', (bu(i), i = 1, size(bu))
end program
-
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1574
-
Solves a system of Cholesky factored equations.
Definition linalg.f90:2532
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1686
+
Solves a system of Cholesky factored equations.
Definition linalg.f90:2662
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Cholesky Solution: X =
239.5833
@@ -208,7 +208,7 @@
10.3333
-

Definition at line 2532 of file linalg.f90.

+

Definition at line 2662 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__least__squares-members.html b/docs/html/interfacelinalg_1_1solve__least__squares-members.html index d37ad0f8..46c497c3 100644 --- a/docs/html/interfacelinalg_1_1solve__least__squares-members.html +++ b/docs/html/interfacelinalg_1_1solve__least__squares-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__least__squares.html b/docs/html/interfacelinalg_1_1solve__least__squares.html index 4bc1fade..1ecab81f 100644 --- a/docs/html/interfacelinalg_1_1solve__least__squares.html +++ b/docs/html/interfacelinalg_1_1solve__least__squares.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -179,14 +179,14 @@
print '(A)', "Least Squares Solution: X = "
print '(F9.5)', (b(i), i = 1, size(a, 2))
end program
-
Solves the overdetermined or underdetermined system of M equations of N unknowns....
Definition linalg.f90:2622
+
Solves the overdetermined or underdetermined system of M equations of N unknowns....
Definition linalg.f90:2752
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Least Squares Solution: X =
0.13158
-0.57895
-

Definition at line 2622 of file linalg.f90.

+

Definition at line 2752 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__least__squares__full-members.html b/docs/html/interfacelinalg_1_1solve__least__squares__full-members.html index 6f77bcdb..12c9eef7 100644 --- a/docs/html/interfacelinalg_1_1solve__least__squares__full-members.html +++ b/docs/html/interfacelinalg_1_1solve__least__squares__full-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__least__squares__full.html b/docs/html/interfacelinalg_1_1solve__least__squares__full.html index 72b04e07..02b71355 100644 --- a/docs/html/interfacelinalg_1_1solve__least__squares__full.html +++ b/docs/html/interfacelinalg_1_1solve__least__squares__full.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -181,14 +181,14 @@
print '(A)', "Least Squares Solution: X = "
print '(F9.5)', (b(i), i = 1, size(a, 2))
end program
-
Solves the overdetermined or underdetermined system of M equations of N unknowns,...
Definition linalg.f90:2723
+
Solves the overdetermined or underdetermined system of M equations of N unknowns,...
Definition linalg.f90:2853
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Least Squares Solution: X =
0.13158
-0.57895
-

Definition at line 2723 of file linalg.f90.

+

Definition at line 2853 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__least__squares__svd-members.html b/docs/html/interfacelinalg_1_1solve__least__squares__svd-members.html index 2b1de974..564a94b7 100644 --- a/docs/html/interfacelinalg_1_1solve__least__squares__svd-members.html +++ b/docs/html/interfacelinalg_1_1solve__least__squares__svd-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__least__squares__svd.html b/docs/html/interfacelinalg_1_1solve__least__squares__svd.html index 3f2d7812..9e3770f1 100644 --- a/docs/html/interfacelinalg_1_1solve__least__squares__svd.html +++ b/docs/html/interfacelinalg_1_1solve__least__squares__svd.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -177,14 +177,14 @@
print '(A)', "Least Squares Solution: X = "
print '(F9.5)', (b(i), i = 1, size(a, 2))
end program
-
Solves the overdetermined or underdetermined system of M equations of N unknowns using a singular va...
Definition linalg.f90:2825
+
Solves the overdetermined or underdetermined system of M equations of N unknowns using a singular va...
Definition linalg.f90:2955
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
Least Squares Solution: X =
0.13158
-0.57895
-

Definition at line 2825 of file linalg.f90.

+

Definition at line 2955 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__lq-members.html b/docs/html/interfacelinalg_1_1solve__lq-members.html index c166aa31..c6e99467 100644 --- a/docs/html/interfacelinalg_1_1solve__lq-members.html +++ b/docs/html/interfacelinalg_1_1solve__lq-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__lq.html b/docs/html/interfacelinalg_1_1solve__lq.html index 8a64426f..601b5790 100644 --- a/docs/html/interfacelinalg_1_1solve__lq.html +++ b/docs/html/interfacelinalg_1_1solve__lq.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -184,8 +184,8 @@
print '(A)', "LQ Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
end program
-
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3437
-
Solves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M.
Definition linalg.f90:3795
+
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3567
+
Solves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M.
Definition linalg.f90:3925
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
QR Solution: X =
0.3333
@@ -197,7 +197,7 @@ -

Definition at line 3795 of file linalg.f90.

+

Definition at line 3925 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__lu-members.html b/docs/html/interfacelinalg_1_1solve__lu-members.html index 4581d319..73439b27 100644 --- a/docs/html/interfacelinalg_1_1solve__lu-members.html +++ b/docs/html/interfacelinalg_1_1solve__lu-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -105,10 +105,11 @@

This is the complete list of members for linalg::solve_lu, including all inherited members.

- - - - + + + + +
solve_lu_mtx (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_mtx_cmplx (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_vec (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_vec_cmplx (defined in linalg::solve_lu)linalg::solve_lu
csr_lu_solve (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_mtx (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_mtx_cmplx (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_vec (defined in linalg::solve_lu)linalg::solve_lu
solve_lu_vec_cmplx (defined in linalg::solve_lu)linalg::solve_lu
diff --git a/docs/html/interfacelinalg_1_1solve__lu.html b/docs/html/interfacelinalg_1_1solve__lu.html index 63628a40..dc43f546 100644 --- a/docs/html/interfacelinalg_1_1solve__lu.html +++ b/docs/html/interfacelinalg_1_1solve__lu.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -123,6 +123,9 @@  solve_lu_vec_cmplx   +csr_lu_solve

Detailed Description

Solves a system of LU-factored equations.

@@ -143,7 +146,22 @@ -
Notes
The routine is based upon the LAPACK routine DGETRS (ZGETRS in the complex case).
+
Sparse Syntax
subroutine solve_lu(class(msr_matrix) lu, integer(int32) ju(:), real(real64) b(:), real(real64) x(:), optional class(errors) err)
+
+
Parameters
+ + + + + + +
[in]luThe N-by-N LU-factored matrix from lu_factor.
[in]juThe N-element U row tracking array from lu_factor.
[in]bThe N-element right-hand-side array.
[out]xThe N-element solution array.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_ARRAY_SIZE_ERROR: Occurs if any of the input array sizes are incorrect.
  • +
+
+
+
+
Notes
The dense routine is based upon the LAPACK routine DGETRS (ZGETRS in the complex case).
Usage
To solve a system of 3 equations of 3 unknowns using LU factorization, the following code will suffice.
program example
use iso_fortran_env
use linalg
@@ -182,8 +200,8 @@
print '(A)', "LU Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
end program
-
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:732
-
Solves a system of LU-factored equations.
Definition linalg.f90:2291
+
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:843
+
Solves a system of LU-factored equations.
Definition linalg.f90:2420
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The program generates the following output.
LU Solution: X =
0.3333
@@ -196,7 +214,7 @@
-

Definition at line 2291 of file linalg.f90.

+

Definition at line 2420 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__qr-members.html b/docs/html/interfacelinalg_1_1solve__qr-members.html index 047f54e0..1dbbca4a 100644 --- a/docs/html/interfacelinalg_1_1solve__qr-members.html +++ b/docs/html/interfacelinalg_1_1solve__qr-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__qr.html b/docs/html/interfacelinalg_1_1solve__qr.html index 3f276446..02b1125c 100644 --- a/docs/html/interfacelinalg_1_1solve__qr.html +++ b/docs/html/interfacelinalg_1_1solve__qr.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -222,8 +222,8 @@
! same manner. The only difference is to omit the PVT array (column pivot
! tracking array).
end program
-
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1008
-
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2426
+
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1120
+
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2556
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
QR Solution: X =
0.3333
@@ -236,7 +236,7 @@ -

Definition at line 2426 of file linalg.f90.

+

Definition at line 2556 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1solve__triangular__system-members.html b/docs/html/interfacelinalg_1_1solve__triangular__system-members.html index ab716526..dd9a85dd 100644 --- a/docs/html/interfacelinalg_1_1solve__triangular__system-members.html +++ b/docs/html/interfacelinalg_1_1solve__triangular__system-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1solve__triangular__system.html b/docs/html/interfacelinalg_1_1solve__triangular__system.html index 6cf7072f..0027a124 100644 --- a/docs/html/interfacelinalg_1_1solve__triangular__system.html +++ b/docs/html/interfacelinalg_1_1solve__triangular__system.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -200,7 +200,7 @@
! Solve the lower triangular system L * Y = P * B for Y, but first compute
! P * B, and store the results in B
-
b = matmul(p, b)
+
b = matmul(p, b)
! Now, compute the solution to the lower triangular system. Store the
! result in B. Remember, L is unit diagonal (ones on its diagonal)
@@ -213,9 +213,10 @@
print '(A)', "LU Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
end program
-
Extracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor.
Definition linalg.f90:854
-
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:732
-
Solves a triangular system of equations.
Definition linalg.f90:2203
+
Extracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor.
Definition linalg.f90:966
+
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:843
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Solves a triangular system of equations.
Definition linalg.f90:2315
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
LU Solution: X =
0.3333
@@ -223,7 +224,7 @@
0.0000
-

Definition at line 2203 of file linalg.f90.

+

Definition at line 2315 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1sort-members.html b/docs/html/interfacelinalg_1_1sort-members.html index 55125c64..7653a07e 100644 --- a/docs/html/interfacelinalg_1_1sort-members.html +++ b/docs/html/interfacelinalg_1_1sort-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1sort.html b/docs/html/interfacelinalg_1_1sort.html index 0f4c633f..ba794d6c 100644 --- a/docs/html/interfacelinalg_1_1sort.html +++ b/docs/html/interfacelinalg_1_1sort.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -177,7 +177,7 @@ -

Definition at line 3323 of file linalg.f90.

+

Definition at line 3453 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1sparse__direct__solve-members.html b/docs/html/interfacelinalg_1_1sparse__direct__solve-members.html new file mode 100644 index 00000000..4a48685e --- /dev/null +++ b/docs/html/interfacelinalg_1_1sparse__direct__solve-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::sparse_direct_solve Member List
+
+
+ +

This is the complete list of members for linalg::sparse_direct_solve, including all inherited members.

+ + +
csr_solve_sparse_direct (defined in linalg::sparse_direct_solve)linalg::sparse_direct_solve
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1sparse__direct__solve.html b/docs/html/interfacelinalg_1_1sparse__direct__solve.html new file mode 100644 index 00000000..ccb1298f --- /dev/null +++ b/docs/html/interfacelinalg_1_1sparse__direct__solve.html @@ -0,0 +1,153 @@ + + + + + + + +linalg: linalg::sparse_direct_solve Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::sparse_direct_solve Interface Reference
+
+
+ +

Provides a direct solution to a square, sparse system. + More...

+ + + + +

+Public Member Functions

csr_solve_sparse_direct
 
+

Detailed Description

+

Provides a direct solution to a square, sparse system.

+
Syntax
subroutine solve_direct_sparse(class(csr_matrix) a, real(real64) b(:), real(real64) x(:), optional real(real64) droptol, optional class(errors) err)
+
+
Parameters
+ + + + + + +
[in]aThe N-by-N sparse matrix to factor.
[in]bThe N-element right-hand-side array.
[out]xThe N-element solution array.
[in]droptolAn optional threshold value used to determine when to drop small terms as part of the factorization of matrix A. The default value is set to the square root of machine precision (~1e-8).
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
    +
  • LA_ARRAY_SIZE_ERROR: Occurs if is not square, or if there is a mismatch in dimensions between a, x, and b.
  • +
  • LA_OUT_OF_MEMORY_ERROR: Occurs if there is an issue with internal memory allocations.
  • +
  • LA_MATRIX_FORMAT_ERROR: Occurs if a is improperly formatted.
  • +
  • LA_SINGULAR_MATRIX_ERROR: Occurs if a is singular.
  • +
+
+
+
+ +

Definition at line 5482 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1svd-members.html b/docs/html/interfacelinalg_1_1svd-members.html index 1593d9ef..ed008e16 100644 --- a/docs/html/interfacelinalg_1_1svd-members.html +++ b/docs/html/interfacelinalg_1_1svd-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1svd.html b/docs/html/interfacelinalg_1_1svd.html index de982b1f..04e43593 100644 --- a/docs/html/interfacelinalg_1_1svd.html +++ b/docs/html/interfacelinalg_1_1svd.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -182,14 +182,15 @@
! Compute U * S * V**T
call diag_mtx_mult(.true., 1.0d0, s, vt) ! Compute: VT = S * V**T
-
ac = matmul(u(:,1:2), vt)
+
ac = matmul(u(:,1:2), vt)
print '(A)', "U * S * V**T ="
do i = 1, size(ac, 1)
print *, ac(i,:)
end do
end program
-
Multiplies a diagonal matrix with another matrix or array.
Definition linalg.f90:466
-
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Definition linalg.f90:2069
+
Multiplies a diagonal matrix with another matrix or array.
Definition linalg.f90:552
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Definition linalg.f90:2181
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
U =
-0.47411577501825380 -0.81850539032073777 -0.32444284226152509
@@ -207,7 +208,7 @@
-1.0000000000000000 0.99999999999999967
-

Definition at line 2069 of file linalg.f90.

+

Definition at line 2181 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1swap-members.html b/docs/html/interfacelinalg_1_1swap-members.html index 255fdfa1..d09377be 100644 --- a/docs/html/interfacelinalg_1_1swap-members.html +++ b/docs/html/interfacelinalg_1_1swap-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1swap.html b/docs/html/interfacelinalg_1_1swap.html index 46d54f25..b171ba49 100644 --- a/docs/html/interfacelinalg_1_1swap.html +++ b/docs/html/interfacelinalg_1_1swap.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -135,7 +135,7 @@ -

Definition at line 593 of file linalg.f90.

+

Definition at line 680 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1trace-members.html b/docs/html/interfacelinalg_1_1trace-members.html index ecbc43f2..6648d491 100644 --- a/docs/html/interfacelinalg_1_1trace-members.html +++ b/docs/html/interfacelinalg_1_1trace-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1trace.html b/docs/html/interfacelinalg_1_1trace.html index f39c7b05..792b540a 100644 --- a/docs/html/interfacelinalg_1_1trace.html +++ b/docs/html/interfacelinalg_1_1trace.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -131,7 +131,7 @@
Returns
The trace of x.
-

Definition at line 490 of file linalg.f90.

+

Definition at line 577 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfacelinalg_1_1transpose-members.html b/docs/html/interfacelinalg_1_1transpose-members.html new file mode 100644 index 00000000..135ce6ae --- /dev/null +++ b/docs/html/interfacelinalg_1_1transpose-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::transpose Member List
+
+
+ +

This is the complete list of members for linalg::transpose, including all inherited members.

+ + +
csr_transpose (defined in linalg::transpose)linalg::transpose
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1transpose.html b/docs/html/interfacelinalg_1_1transpose.html new file mode 100644 index 00000000..d1bc1df0 --- /dev/null +++ b/docs/html/interfacelinalg_1_1transpose.html @@ -0,0 +1,144 @@ + + + + + + + +linalg: linalg::transpose Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::transpose Interface Reference
+
+
+ +

Provides the transpose of a sparse matrix. + More...

+ + + + +

+Public Member Functions

csr_transpose
 
+

Detailed Description

+

Provides the transpose of a sparse matrix.

+
Syntax
type(csr_matrix) function transpose(class(csr_matrix) a)
+
+
Parameters
+ + +
[in]aThe input matrix.
+
+
+
Returns
The resulting matrix.
+ +

Definition at line 5454 of file linalg.f90.

+

The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacelinalg_1_1tri__mtx__mult-members.html b/docs/html/interfacelinalg_1_1tri__mtx__mult-members.html index 4bdbaf2b..a2298c87 100644 --- a/docs/html/interfacelinalg_1_1tri__mtx__mult-members.html +++ b/docs/html/interfacelinalg_1_1tri__mtx__mult-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacelinalg_1_1tri__mtx__mult.html b/docs/html/interfacelinalg_1_1tri__mtx__mult.html index e6c5fe7c..01b7a63f 100644 --- a/docs/html/interfacelinalg_1_1tri__mtx__mult.html +++ b/docs/html/interfacelinalg_1_1tri__mtx__mult.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -138,7 +138,7 @@ -

Definition at line 646 of file linalg.f90.

+

Definition at line 733 of file linalg.f90.


The documentation for this interface was generated from the following file: diff --git a/docs/html/interfaceqrupdate_1_1dch1dn-members.html b/docs/html/interfaceqrupdate_1_1dch1dn-members.html index 28927150..738ac9ad 100644 --- a/docs/html/interfaceqrupdate_1_1dch1dn-members.html +++ b/docs/html/interfaceqrupdate_1_1dch1dn-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1dch1dn.html b/docs/html/interfaceqrupdate_1_1dch1dn.html index 5bdb3046..5a8db53e 100644 --- a/docs/html/interfaceqrupdate_1_1dch1dn.html +++ b/docs/html/interfaceqrupdate_1_1dch1dn.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1dch1up-members.html b/docs/html/interfaceqrupdate_1_1dch1up-members.html index 15a1f453..e59e9ccf 100644 --- a/docs/html/interfaceqrupdate_1_1dch1up-members.html +++ b/docs/html/interfaceqrupdate_1_1dch1up-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1dch1up.html b/docs/html/interfaceqrupdate_1_1dch1up.html index 58c12a18..90b1d3a1 100644 --- a/docs/html/interfaceqrupdate_1_1dch1up.html +++ b/docs/html/interfaceqrupdate_1_1dch1up.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1dqr1up-members.html b/docs/html/interfaceqrupdate_1_1dqr1up-members.html index 2b4cf11e..07a49d56 100644 --- a/docs/html/interfaceqrupdate_1_1dqr1up-members.html +++ b/docs/html/interfaceqrupdate_1_1dqr1up-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1dqr1up.html b/docs/html/interfaceqrupdate_1_1dqr1up.html index 4bf513aa..42f92497 100644 --- a/docs/html/interfaceqrupdate_1_1dqr1up.html +++ b/docs/html/interfaceqrupdate_1_1dqr1up.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1zch1dn-members.html b/docs/html/interfaceqrupdate_1_1zch1dn-members.html index 162d0a8d..797c8e71 100644 --- a/docs/html/interfaceqrupdate_1_1zch1dn-members.html +++ b/docs/html/interfaceqrupdate_1_1zch1dn-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1zch1dn.html b/docs/html/interfaceqrupdate_1_1zch1dn.html index 68012abb..159c37db 100644 --- a/docs/html/interfaceqrupdate_1_1zch1dn.html +++ b/docs/html/interfaceqrupdate_1_1zch1dn.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1zch1up-members.html b/docs/html/interfaceqrupdate_1_1zch1up-members.html index ed734177..ceead967 100644 --- a/docs/html/interfaceqrupdate_1_1zch1up-members.html +++ b/docs/html/interfaceqrupdate_1_1zch1up-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1zch1up.html b/docs/html/interfaceqrupdate_1_1zch1up.html index 0633f64f..c68f8034 100644 --- a/docs/html/interfaceqrupdate_1_1zch1up.html +++ b/docs/html/interfaceqrupdate_1_1zch1up.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1zqr1up-members.html b/docs/html/interfaceqrupdate_1_1zqr1up-members.html index 028876e4..02218f9a 100644 --- a/docs/html/interfaceqrupdate_1_1zqr1up-members.html +++ b/docs/html/interfaceqrupdate_1_1zqr1up-members.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfaceqrupdate_1_1zqr1up.html b/docs/html/interfaceqrupdate_1_1zqr1up.html index ba576c09..358d20dd 100644 --- a/docs/html/interfaceqrupdate_1_1zqr1up.html +++ b/docs/html/interfaceqrupdate_1_1zqr1up.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/interfacesparskit_1_1amub-members.html b/docs/html/interfacesparskit_1_1amub-members.html new file mode 100644 index 00000000..cb9f3756 --- /dev/null +++ b/docs/html/interfacesparskit_1_1amub-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::amub Member List
+
+
+ +

This is the complete list of members for sparskit::amub, including all inherited members.

+ + +
amub(nrow, ncol, job, a, ja, ia, b, jb, ib, c, jc, ic, nzmax, iw, ierr) (defined in sparskit::amub)sparskit::amub
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1amub.html b/docs/html/interfacesparskit_1_1amub.html new file mode 100644 index 00000000..202ddb75 --- /dev/null +++ b/docs/html/interfacesparskit_1_1amub.html @@ -0,0 +1,247 @@ + + + + + + + +linalg: sparskit::amub Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::amub Interface Reference
+
+
+ +

Computes the matrix product: C = A * B. + More...

+ + + + +

+Public Member Functions

subroutine amub (nrow, ncol, job, a, ja, ia, b, jb, ib, c, jc, ic, nzmax, iw, ierr)
 
+

Detailed Description

+

Computes the matrix product: C = A * B.

+
Parameters
+ + + + + + + + + + + + + + + + +
[in]nrowThe row dimension of matrices A & C.
[in]ncolThe column dimension of matrices B & C.
[in]jobSet to 0 to compute only the structure (JC & IC); else, set to any non-zero value.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]bThe non-zero elements of matrix B.
[in]jbThe column indices of matrix B.
[in]ibThe index in B where the requested row starts.
[out]cThe non-zero elements of matrix C.
[out]jcThe column indices of matrix C.
[out]icThe index in C where the requested row starts.
[in]nzmaxThe length of arrays C & JC. The routine will stop if the results matrix C has a number of elements that exceeds NZMAX.
[out]iwA workspace array with a length equal to the number of of columns in matrix C.
[out]ierrAn error message indicator.
    +
  • 0: Normal return
  • +
  • .gt. 0: Routine failed in row I with IERR = I because the number of elements in C exceeds NZMAX.
  • +
+
+
+
+ +

Definition at line 31 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ amub()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::amub::amub (integer(int32), intent(in) nrow,
integer(int32), intent(in) ncol,
integer(int32), intent(in) job,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(nrow+1), intent(in) ia,
real(real64), dimension(*), intent(in) b,
integer(int32), dimension(*), intent(in) jb,
integer(int32), dimension(*), intent(in) ib,
real(real64), dimension(*), intent(out) c,
integer(int32), dimension(*), intent(out) jc,
integer(int32), dimension(*), intent(out) ic,
integer(int32), intent(in) nzmax,
integer(int32), dimension(ncol), intent(out) iw,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 31 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1aplb-members.html b/docs/html/interfacesparskit_1_1aplb-members.html new file mode 100644 index 00000000..2ebdd7b5 --- /dev/null +++ b/docs/html/interfacesparskit_1_1aplb-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::aplb Member List
+
+
+ +

This is the complete list of members for sparskit::aplb, including all inherited members.

+ + +
aplb(nrow, ncol, job, a, ja, ia, b, jb, ib, c, jc, ic, nzmax, iw, ierr) (defined in sparskit::aplb)sparskit::aplb
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1aplb.html b/docs/html/interfacesparskit_1_1aplb.html new file mode 100644 index 00000000..4309dcbb --- /dev/null +++ b/docs/html/interfacesparskit_1_1aplb.html @@ -0,0 +1,246 @@ + + + + + + + +linalg: sparskit::aplb Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::aplb Interface Reference
+
+
+ +

Computes the matrix sum: C = A + B, where the matrices are given in CSR format. + More...

+ + + + +

+Public Member Functions

subroutine aplb (nrow, ncol, job, a, ja, ia, b, jb, ib, c, jc, ic, nzmax, iw, ierr)
 
+

Detailed Description

+

Computes the matrix sum: C = A + B, where the matrices are given in CSR format.

+
Parameters
+ + + + + + + + + + + + + + + +
[in]nrowThe number of rows in the matrices.
[in]ncolThe number of columns in the matrices.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]bThe non-zero elements of matrix B.
[in]jbThe column indices of matrix B.
[in]ibThe index in B where the requested row starts.
[out]cThe non-zero elements of matrix C.
[out]jcThe column indices of matrix C.
[out]icThe index in C where the requested row starts.
[in]nzmaxThe length of arrays C & JC. The routine will stop if the results matrix C has a number of elements that exceeds NZMAX.
[out]iwA workspace array with a length equal to the number of of columns in matrix A.
[out]ierrAn error message indicator.
    +
  • 0: Normal return
  • +
  • .gt. 0: Routine failed in row I with IERR = I because the number of elements in C exceeds NZMAX.
  • +
+
+
+
+ +

Definition at line 63 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ aplb()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::aplb::aplb (integer(int32), intent(in) nrow,
integer(int32), intent(in) ncol,
integer(int32), intent(in) job,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(nrow+1), intent(in) ia,
real(real64), dimension(*), intent(in) b,
integer(int32), dimension(*), intent(in) jb,
integer(int32), dimension(nrow+1), intent(in) ib,
real(real64), dimension(*), intent(out) c,
integer(int32), dimension(*), intent(out) jc,
integer(int32), dimension(nrow+1), intent(out) ic,
integer(int32), intent(in) nzmax,
integer(int32), dimension(ncol), intent(out) iw,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 63 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1aplsb-members.html b/docs/html/interfacesparskit_1_1aplsb-members.html new file mode 100644 index 00000000..e6241809 --- /dev/null +++ b/docs/html/interfacesparskit_1_1aplsb-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::aplsb Member List
+
+
+ +

This is the complete list of members for sparskit::aplsb, including all inherited members.

+ + +
aplsb(nrow, ncol, a, ja, ia, s, b, jb, ib, c, jc, ic, nzmax, iw, ierr) (defined in sparskit::aplsb)sparskit::aplsb
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1aplsb.html b/docs/html/interfacesparskit_1_1aplsb.html new file mode 100644 index 00000000..1d57b009 --- /dev/null +++ b/docs/html/interfacesparskit_1_1aplsb.html @@ -0,0 +1,247 @@ + + + + + + + +linalg: sparskit::aplsb Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::aplsb Interface Reference
+
+
+ +

Computes the matrix sum: C = A + s * B, where the matrices are given in CSR format. + More...

+ + + + +

+Public Member Functions

subroutine aplsb (nrow, ncol, a, ja, ia, s, b, jb, ib, c, jc, ic, nzmax, iw, ierr)
 
+

Detailed Description

+

Computes the matrix sum: C = A + s * B, where the matrices are given in CSR format.

+
Parameters
+ + + + + + + + + + + + + + + + +
[in]nrowThe number of rows in the matrices.
[in]ncolThe number of columns in the matrices.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]sThe scalar multiplier.
[in]bThe non-zero elements of matrix B.
[in]jbThe column indices of matrix B.
[in]ibThe index in B where the requested row starts.
[out]cThe non-zero elements of matrix C.
[out]jcThe column indices of matrix C.
[out]icThe index in C where the requested row starts.
[in]nzmaxThe length of arrays C & JC. The routine will stop if the results matrix C has a number of elements that exceeds NZMAX.
[out]iwA workspace array with a length equal to the number of of columns in matrix A.
[out]ierrAn error message indicator.
    +
  • 0: Normal return
  • +
  • .gt. 0: Routine failed in row I with IERR = I because the number of elements in C exceeds NZMAX.
  • +
+
+
+
+ +

Definition at line 96 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ aplsb()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::aplsb::aplsb (integer(int32), intent(in) nrow,
integer(int32), intent(in) ncol,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(nrow+1), intent(in) ia,
real(real64), intent(in) s,
real(real64), dimension(*), intent(in) b,
integer(int32), dimension(*), intent(in) jb,
integer(int32), dimension(nrow+1), intent(in) ib,
real(real64), dimension(*), intent(out) c,
integer(int32), dimension(*), intent(out) jc,
integer(int32), dimension(nrow+1), intent(out) ic,
integer(int32), intent(in) nzmax,
integer(int32), dimension(ncol), intent(out) iw,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 96 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1bndcsr-members.html b/docs/html/interfacesparskit_1_1bndcsr-members.html new file mode 100644 index 00000000..c7a56f63 --- /dev/null +++ b/docs/html/interfacesparskit_1_1bndcsr-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::bndcsr Member List
+
+
+ +

This is the complete list of members for sparskit::bndcsr, including all inherited members.

+ + +
bndcsr(n, abd, nabd, lowd, ml, mu, a, ja, ia, len, ierr) (defined in sparskit::bndcsr)sparskit::bndcsr
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1bndcsr.html b/docs/html/interfacesparskit_1_1bndcsr.html new file mode 100644 index 00000000..874e7d63 --- /dev/null +++ b/docs/html/interfacesparskit_1_1bndcsr.html @@ -0,0 +1,224 @@ + + + + + + + +linalg: sparskit::bndcsr Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::bndcsr Interface Reference
+
+
+ +

Converts the LINPACK, BLAS, LAPACK banded matrix format into a CSR format. + More...

+ + + + +

+Public Member Functions

subroutine bndcsr (n, abd, nabd, lowd, ml, mu, a, ja, ia, len, ierr)
 
+

Detailed Description

+

Converts the LINPACK, BLAS, LAPACK banded matrix format into a CSR format.

+
Parameters
+ + + + + + + + + + + + +
[in]nThe row dimension of the matrix.
[in]abdThe banded matrix.
[in]nabdThe leading dimension of abd.
[in]lowdThe row index where the lowest diagonal (leftmost) of A is located. LINPACK uses LOWD = 2 * ML + MU + 1.
[in]mlThe bandwidth of the strict lower part of A.
[in]muThe bandwidth of the strict upper part of A.
[out]aThe non-zero elements of matrix A.
[out]jaThe column indices of matrix A.
[out]iaThe index in A where the requested row starts.
[in]lenThe length of a and ja.
[out]ierrError message output.
    +
  • 0: Normal return.
  • +
  • -1: Invalid lowd value.
  • +
  • Positive Valued: Not enough storage in a and ja.
  • +
+
+
+
+ +

Definition at line 150 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ bndcsr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::bndcsr::bndcsr (integer(int32), intent(in) n,
real(real64), dimension(nabd,*), intent(in) abd,
integer(int32), intent(in) nabd,
integer(int32), intent(in) lowd,
integer(int32), intent(in) ml,
integer(int32), intent(in) mu,
real(real64), dimension(*), intent(out) a,
integer(int32), dimension(*), intent(out) ja,
integer(int32), dimension(n+1), intent(out) ia,
integer(int32), intent(in) len,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 150 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1csrcsc2-members.html b/docs/html/interfacesparskit_1_1csrcsc2-members.html new file mode 100644 index 00000000..938ac01a --- /dev/null +++ b/docs/html/interfacesparskit_1_1csrcsc2-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::csrcsc2 Member List
+
+
+ +

This is the complete list of members for sparskit::csrcsc2, including all inherited members.

+ + +
csrcsc2(n, n2, job, ipos, a, ja, ia, a0, ja0, ia0) (defined in sparskit::csrcsc2)sparskit::csrcsc2
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1csrcsc2.html b/docs/html/interfacesparskit_1_1csrcsc2.html new file mode 100644 index 00000000..9768517f --- /dev/null +++ b/docs/html/interfacesparskit_1_1csrcsc2.html @@ -0,0 +1,213 @@ + + + + + + + +linalg: sparskit::csrcsc2 Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::csrcsc2 Interface Reference
+
+
+ +

Converts a CSR matrix into a CSC matrix (transposition). + More...

+ + + + +

+Public Member Functions

subroutine csrcsc2 (n, n2, job, ipos, a, ja, ia, a0, ja0, ia0)
 
+

Detailed Description

+

Converts a CSR matrix into a CSC matrix (transposition).

+
Parameters
+ + + + + + + + + + + +
[in]nThe number of rows in the CSR matrix.
[in]n2The number of columns in the CSC matrix.
[in]jobFill the values (job == 1) or only the pattern (job /= 1).
[in]iposStarting position of A0 in JA0.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[out]a0The non-zero elements of the transposed array.
[out]ja0The size NNZ array containing the column indices.
[out]ia0The N+1 size array containing the column starts.
+
+
+ +

Definition at line 124 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ csrcsc2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::csrcsc2::csrcsc2 (integer(int32), intent(in) n,
integer(int32), intent(in) n2,
integer(int32), intent(in) job,
integer(int32), intent(in) ipos,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(n+1), intent(in) ia,
real(real64), dimension(*), intent(out) a0,
integer(int32), dimension(*), intent(out) ja0,
integer(int32), dimension(n2+1), intent(out) ia0 )
+
+ +

Definition at line 124 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1csrmsr-members.html b/docs/html/interfacesparskit_1_1csrmsr-members.html new file mode 100644 index 00000000..aa8fd8e2 --- /dev/null +++ b/docs/html/interfacesparskit_1_1csrmsr-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::csrmsr Member List
+
+
+ +

This is the complete list of members for sparskit::csrmsr, including all inherited members.

+ + +
csrmsr(n, a, ja, ia, ao, jao, wk, iwk) (defined in sparskit::csrmsr)sparskit::csrmsr
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1csrmsr.html b/docs/html/interfacesparskit_1_1csrmsr.html new file mode 100644 index 00000000..2f530115 --- /dev/null +++ b/docs/html/interfacesparskit_1_1csrmsr.html @@ -0,0 +1,201 @@ + + + + + + + +linalg: sparskit::csrmsr Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::csrmsr Interface Reference
+
+
+ +

Converts a CSR matrix to an MSR matrix. + More...

+ + + + +

+Public Member Functions

subroutine csrmsr (n, a, ja, ia, ao, jao, wk, iwk)
 
+

Detailed Description

+

Converts a CSR matrix to an MSR matrix.

+
Parameters
+ + + + + + + + + +
[in]nThe row dimension of the matrix.
[in,out]aThe non-zero elements of matrix A.
[in,out]jaThe column indices of matrix A.
[in,out]iaThe index in A where the requested row starts.
[out]aoAn NNZ-element array containing the non-zero elements for the MSR matrix.
[out]jaoAn NNZ-element index tracking array for the MSR matrix.
[out]wkAn N-element workspace array.
[out]iwkAn N+1 element workspace array.
+
+
+ +

Definition at line 170 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ csrmsr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::csrmsr::csrmsr (integer(int32), intent(in) n,
real(real64), dimension(*), intent(inout) a,
integer(int32), dimension(*), intent(inout) ja,
integer(int32), dimension(n+1), intent(inout) ia,
real(real64), dimension(*), intent(out) ao,
integer(int32), dimension(*), intent(out) jao,
real(real64), dimension(n), intent(out) wk,
integer(int32), dimension(n+1), intent(out) iwk )
+
+ +

Definition at line 170 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1getdia-members.html b/docs/html/interfacesparskit_1_1getdia-members.html new file mode 100644 index 00000000..800b1666 --- /dev/null +++ b/docs/html/interfacesparskit_1_1getdia-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::getdia Member List
+
+
+ +

This is the complete list of members for sparskit::getdia, including all inherited members.

+ + +
getdia(nrow, ncol, job, a, ja, ia, len, diag, idiag, ioff) (defined in sparskit::getdia)sparskit::getdia
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1getdia.html b/docs/html/interfacesparskit_1_1getdia.html new file mode 100644 index 00000000..ed95bba0 --- /dev/null +++ b/docs/html/interfacesparskit_1_1getdia.html @@ -0,0 +1,209 @@ + + + + + + + +linalg: sparskit::getdia Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::getdia Interface Reference
+
+
+ +

Extracts the diagonal from a matrix. + More...

+ + + + +

+Public Member Functions

subroutine getdia (nrow, ncol, job, a, ja, ia, len, diag, idiag, ioff)
 
+

Detailed Description

+

Extracts the diagonal from a matrix.

+
Parameters
+ + + + + + + +
[in]nrowThe number of rows.
[in]ncolThe number of columns.
[in]jobSet to 0 to not alter a, ja, and ia; else, set to a non-zero value to perform this as an in-place operation.
[out]lenThe number of non-zero elements found in diag.
[out]idiagAn array of length len containing the original positions in the original arrays a and ja of the diagonal elements collected in diagl.
[in]ioffThe offset of the wanted diagonal.
+
+
+ +

Definition at line 234 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ getdia()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::getdia::getdia (integer(int32), intent(in) nrow,
integer(int32), intent(in) ncol,
integer(int32), intent(in) job,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(*), intent(in) ia,
integer(int32), intent(out) len,
real(real64), dimension(*), intent(out) diag,
integer(int32), dimension(*), intent(out) idiag,
integer(int32), intent(in) ioff )
+
+ +

Definition at line 234 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1getelm-members.html b/docs/html/interfacesparskit_1_1getelm-members.html new file mode 100644 index 00000000..1272b1ad --- /dev/null +++ b/docs/html/interfacesparskit_1_1getelm-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::getelm Member List
+
+
+ +

This is the complete list of members for sparskit::getelm, including all inherited members.

+ + +
getelm(i, j, a, ja, ia, iadd, sorted) (defined in sparskit::getelm)sparskit::getelm
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1getelm.html b/docs/html/interfacesparskit_1_1getelm.html new file mode 100644 index 00000000..ed7c7abc --- /dev/null +++ b/docs/html/interfacesparskit_1_1getelm.html @@ -0,0 +1,196 @@ + + + + + + + +linalg: sparskit::getelm Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::getelm Interface Reference
+
+
+ +

Gets element A(i,j) of matrix A for any pair (i,j). + More...

+ + + + +

+Public Member Functions

real(real64) function getelm (i, j, a, ja, ia, iadd, sorted)
 
+

Detailed Description

+

Gets element A(i,j) of matrix A for any pair (i,j).

+
Parameters
+ + + + + + + + +
[in]iThe row index.
[in]jThe column index.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[out]iaddThe address of element A(i,j) in arrays A & JA, if found; else, zero if not found.
[in]sortedIndicates whether the matrix is known to be sorted.
+
+
+
Returns
The requested value.
+ +

Definition at line 214 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ getelm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
real(real64) function sparskit::getelm::getelm (integer(int32), intent(in) i,
integer(int32), intent(in) j,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(*), intent(in) ia,
integer(int32), intent(out) iadd,
logical, intent(in) sorted )
+
+ +

Definition at line 214 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1ilud-members.html b/docs/html/interfacesparskit_1_1ilud-members.html new file mode 100644 index 00000000..7b1d66db --- /dev/null +++ b/docs/html/interfacesparskit_1_1ilud-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::ilud Member List
+
+
+ +

This is the complete list of members for sparskit::ilud, including all inherited members.

+ + +
ilud(n, a, ja, ia, alph, tol, alu, jlu, ju, iwk, w, jw, ierr) (defined in sparskit::ilud)sparskit::ilud
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1ilud.html b/docs/html/interfacesparskit_1_1ilud.html new file mode 100644 index 00000000..dd34602d --- /dev/null +++ b/docs/html/interfacesparskit_1_1ilud.html @@ -0,0 +1,238 @@ + + + + + + + +linalg: sparskit::ilud Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::ilud Interface Reference
+
+
+ +

Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy. + More...

+ + + + +

+Public Member Functions

subroutine ilud (n, a, ja, ia, alph, tol, alu, jlu, ju, iwk, w, jw, ierr)
 
+

Detailed Description

+

Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy.

+
Parameters
+ + + + + + + + + + + + + + +
[in]nThe row dimension of the matrix.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]alphThe diagonal compensation parameter. If ALPH = 0, the process is approximately equivalent to ILU with threshold; else, if ALPH = 1, the process is approximately equivalent to MILU with threshold.
[in]tolThe threshold parameter for dropping small terms in the factorization.
[out]aluThe factored matrix stored in Modified Sparse Row (MSR) format containing the L and U factors together. The diagonal, stored in ALU(1:N), is inverted. Each i-th row of the ALU, JLU matrix contains the i-th row of L, excluding the diagonal entry, followed by the i-th row of U.
[out]jluThe column indices for the factored matrix.
[out]juAn N-element array containing the pointers to the beginning of each row of U in the factored matrix.
[in]iwkThe lengths of alu and jlu.
[out]wAn N+1 element workspace array.
[out]jwA 2*N element workspace array.
[out]ierrError flag:
    +
  • 0: Successful return
  • +
  • .gt. 0: Zero pivot encountered at step number IERR.
  • +
  • -1: Input matrix is incorrect. The elimination process generated a row in L or U whose length is greater than N.
  • +
  • -2: Insufficient storage for the LU factors.
  • +
  • -3: Zero-valued row encountered.
  • +
+
+
+
+ +

Definition at line 386 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ ilud()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::ilud::ilud (integer(int32), intent(in) n,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(n+1), intent(in) ia,
real(real64), intent(in) alph,
real(real64), intent(in) tol,
real(real64), dimension(*), intent(out) alu,
integer(int32), dimension(*), intent(out) jlu,
integer(int32), dimension(n), intent(out) ju,
integer(int32), intent(in) iwk,
real(real64), dimension(2*n), intent(out) w,
integer(int32), dimension(2*n), intent(out) jw,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 386 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1iludp-members.html b/docs/html/interfacesparskit_1_1iludp-members.html new file mode 100644 index 00000000..82d1eda3 --- /dev/null +++ b/docs/html/interfacesparskit_1_1iludp-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::iludp Member List
+
+
+ +

This is the complete list of members for sparskit::iludp, including all inherited members.

+ + +
iludp(n, a, ja, ia, alph, droptol, permtol, mbloc, alu, jlu, ju, iwk, w, jw, iperm, ierr) (defined in sparskit::iludp)sparskit::iludp
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1iludp.html b/docs/html/interfacesparskit_1_1iludp.html new file mode 100644 index 00000000..27ad77ae --- /dev/null +++ b/docs/html/interfacesparskit_1_1iludp.html @@ -0,0 +1,255 @@ + + + + + + + +linalg: sparskit::iludp Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::iludp Interface Reference
+
+
+ +

Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy. + More...

+ + + + +

+Public Member Functions

subroutine iludp (n, a, ja, ia, alph, droptol, permtol, mbloc, alu, jlu, ju, iwk, w, jw, iperm, ierr)
 
+

Detailed Description

+

Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy.

+
Parameters
+ + + + + + + + + + + + + + + + +
[in]nThe row dimension of the matrix.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]alphThe diagonal compensation parameter. If ALPH = 0, the process is approximately equivalent to ILU with threshold; else, if ALPH = 1, the process is approximately equivalent to MILU with threshold.
[in]droptolThe threshold for dropping small terms in the factorization.
[in]permtolA tolerance ratio used to determine whether or not to permute two columns. At step I, columns I and J are permuted when ABS(A(I,J)) * PERMTOL .GT. ABS(A(I,I)). Good values are typically between 0.1 to 0.01.
[in]mblocIf desired, permuting can be done only within the diagonal blocks of size MBLOC. Useful for PDE problems with many degrees of freedom. If this feature is not required, simply set MBLOC equal to N.
[out]aluThe factored matrix stored in Modified Sparse Row (MSR) format containing the L and U factors together. The diagonal, stored in ALU(1:N), is inverted. Each i-th row of the ALU, JLU matrix contains the i-th row of L, excluding the diagonal entry, followed by the i-th row of U.
[out]jluThe column indices for the factored matrix.
[out]juAn N-element array containing the pointers to the beginning of each row of U in the factored matrix.
[in]iwkThe lengths of alu and jlu.
[out]wAn N+1 element workspace array.
[out]jwA 2*N element workspace array.
[out]ierrError flag:
    +
  • 0: Successful return
  • +
  • .gt. 0: Zero pivot encountered at step number IERR.
  • +
  • -1: Input matrix is incorrect. The elimination process generated a row in L or U whose length is greater than N.
  • +
  • -2: Insufficient storage for the LU factors.
  • +
  • -3: Zero-valued row encountered.
  • +
+
+
+
+ +

Definition at line 433 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ iludp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::iludp::iludp (integer(int32), intent(in) n,
real(real64), dimension(*), intent(inout) a,
integer(int32), dimension(*), intent(inout) ja,
integer(int32), dimension(n+1), intent(inout) ia,
real(real64), intent(in) alph,
real(real64), intent(in) droptol,
real(real64), intent(in) permtol,
integer(int32), intent(in) mbloc,
real(real64), dimension(*), intent(out) alu,
integer(int32), dimension(*), intent(out) jlu,
integer(int32), dimension(n), intent(out) ju,
integer(int32), intent(in) iwk,
real(real64), dimension(2*n), intent(out) w,
integer(int32), dimension(2*n), intent(out) jw,
integer(int32), dimension(2*n), intent(out) iperm,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 433 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1ilut-members.html b/docs/html/interfacesparskit_1_1ilut-members.html new file mode 100644 index 00000000..35c3a90d --- /dev/null +++ b/docs/html/interfacesparskit_1_1ilut-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::ilut Member List
+
+
+ +

This is the complete list of members for sparskit::ilut, including all inherited members.

+ + +
ilut(n, a, ja, ia, lfil, droptol, alu, jlu, ju, iwk, w, jw, ierr) (defined in sparskit::ilut)sparskit::ilut
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1ilut.html b/docs/html/interfacesparskit_1_1ilut.html new file mode 100644 index 00000000..d0618ec3 --- /dev/null +++ b/docs/html/interfacesparskit_1_1ilut.html @@ -0,0 +1,240 @@ + + + + + + + +linalg: sparskit::ilut Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::ilut Interface Reference
+
+
+ +

Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism. + More...

+ + + + +

+Public Member Functions

subroutine ilut (n, a, ja, ia, lfil, droptol, alu, jlu, ju, iwk, w, jw, ierr)
 
+

Detailed Description

+

Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism.

+
Parameters
+ + + + + + + + + + + + + + +
[in]nThe row dimension of the matrix.
[in]aThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]lfilThe fill-in parameter. Each row of L and each row of U will have a maximum of lfil elements, excluding the diagonal element. lfil must be greater than or equal to zero.
[in]droptolThe threshold for dropping small terms in the factorization.
[out]aluThe factored matrix stored in Modified Sparse Row (MSR) format containing the L and U factors together. The diagonal, stored in ALU(1:N), is inverted. Each i-th row of the ALU, JLU matrix contains the i-th row of L, excluding the diagonal entry, followed by the i-th row of U.
[out]jluThe column indices for the factored matrix.
[out]juAn N-element array containing the pointers to the beginning of each row of U in the factored matrix.
[in]iwkThe lengths of alu and jlu.
[out]wAn N+1 element workspace array.
[out]jwA 2*N element workspace array.
[out]ierrError flag:
    +
  • 0: Successful return
  • +
  • .gt. 0: Zero pivot encountered at step number IERR.
  • +
  • -1: Input matrix is incorrect. The elimination process generated a row in L or U whose length is greater than N.
  • +
  • -2: The matrix L overflows the output array.
  • +
  • -3: The matrix U overflows the output array.
  • +
  • -4: Illegal value for @P lfil.
  • +
  • -5: Zero-valued row encountered.
  • +
+
+
+
+ +

Definition at line 277 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ ilut()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::ilut::ilut (integer(int32), intent(in) n,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(n+1), intent(in) ia,
integer(int32), intent(in) lfil,
real(real64), intent(in) droptol,
real(real64), dimension(*), intent(out) alu,
integer(int32), dimension(*), intent(out) jlu,
integer(int32), dimension(n), intent(out) ju,
integer(int32), intent(in) iwk,
real(real64), dimension(n+1), intent(out) w,
integer(int32), dimension(2*n), intent(out) jw,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 277 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1ilutp-members.html b/docs/html/interfacesparskit_1_1ilutp-members.html new file mode 100644 index 00000000..9e6b2343 --- /dev/null +++ b/docs/html/interfacesparskit_1_1ilutp-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::ilutp Member List
+
+
+ +

This is the complete list of members for sparskit::ilutp, including all inherited members.

+ + +
ilutp(n, a, ja, ia, lfil, droptol, permtol, mbloc, alu, jlu, ju, iwk, w, jw, iperm, ierr) (defined in sparskit::ilutp)sparskit::ilutp
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1ilutp.html b/docs/html/interfacesparskit_1_1ilutp.html new file mode 100644 index 00000000..188155be --- /dev/null +++ b/docs/html/interfacesparskit_1_1ilutp.html @@ -0,0 +1,262 @@ + + + + + + + +linalg: sparskit::ilutp Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::ilutp Interface Reference
+
+
+ +

Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism and pivoting. + More...

+ + + + +

+Public Member Functions

subroutine ilutp (n, a, ja, ia, lfil, droptol, permtol, mbloc, alu, jlu, ju, iwk, w, jw, iperm, ierr)
 
+

Detailed Description

+

Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism and pivoting.

+
Parameters
+ + + + + + + + + + + + + + + + + +
[in]nThe row dimension of the matrix.
[in,out]aThe non-zero elements of matrix A. On output, the columns are permuted.
[in,out]jaThe column indices of matrix A. On output, the columns are permuted.
[in,out]iaThe index in A where the requested row starts. On output, the columns are permuted.
[in]lfilThe fill-in parameter. Each row of L and each row of U will have a maximum of lfil elements, excluding the diagonal element. lfil must be greater than or equal to zero.
[in]droptolThe threshold for dropping small terms in the factorization.
[in]permtolA tolerance ratio used to determine whether or not to permute two columns. At step I, columns I and J are permuted when ABS(A(I,J)) * PERMTOL .GT. ABS(A(I,I)). Good values are typically between 0.1 to 0.01.
[in]mblocIf desired, permuting can be done only within the diagonal blocks of size MBLOC. Useful for PDE problems with many degrees of freedom. If this feature is not required, simply set MBLOC equal to N.
[out]aluThe factored matrix stored in Modified Sparse Row (MSR) format containing the L and U factors together. The diagonal, stored in ALU(1:N), is inverted. Each i-th row of the ALU, JLU matrix contains the i-th row of L, excluding the diagonal entry, followed by the i-th row of U.
[out]jluThe column indices for the factored matrix.
[out]juAn N-element array containing the pointers to the beginning of each row of U in the factored matrix.
[in]iwkThe lengths of alu and jlu.
[out]wAn N+1 element workspace array.
[out]jwA 2*N element workspace array.
[out]ipermA 2*N element array containing the permutation arrays. IPERM(1:N) contains the old numbers of unknowns, and IPERM(N+1:) contains the new unknowns.
[out]ierrError flag:
    +
  • 0: Successful return
  • +
  • .gt. 0: Zero pivot encountered at step number IERR.
  • +
  • -1: Input matrix is incorrect. The elimination process generated a row in L or U whose length is greater than N.
  • +
  • -2: The matrix L overflows the output array.
  • +
  • -3: The matrix U overflows the output array.
  • +
  • -4: Illegal value for @P lfil.
  • +
  • -5: Zero-valued row encountered.
  • +
+
+
+
+
Remarks
To avoid permuting the solution vector arrays for each LU-solve, the matrix A is permuted on return. Similarly for the U matrix. To permute the matrix back to its original state, use the following code.
do k = ia(1), ia(n+1) - 1
+
ja(k) = iperm(ja(k))
+
end do
+
+ +

Definition at line 343 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ ilutp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::ilutp::ilutp (integer(int32), intent(in) n,
real(real64), dimension(*), intent(inout) a,
integer(int32), dimension(*), intent(inout) ja,
integer(int32), dimension(n+1), intent(inout) ia,
integer(int32), intent(in) lfil,
real(real64), intent(in) droptol,
real(real64), intent(in) permtol,
integer(int32), intent(in) mbloc,
real(real64), dimension(*), intent(out) alu,
integer(int32), dimension(*), intent(out) jlu,
integer(int32), dimension(n), intent(out) ju,
integer(int32), intent(in) iwk,
real(real64), dimension(n+1), intent(out) w,
integer(int32), dimension(2*n), intent(out) jw,
integer(int32), dimension(2*n), intent(out) iperm,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 343 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1lusol-members.html b/docs/html/interfacesparskit_1_1lusol-members.html new file mode 100644 index 00000000..a24c34da --- /dev/null +++ b/docs/html/interfacesparskit_1_1lusol-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::lusol Member List
+
+
+ +

This is the complete list of members for sparskit::lusol, including all inherited members.

+ + +
lusol(n, y, x, alu, jlu, ju) (defined in sparskit::lusol)sparskit::lusol
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1lusol.html b/docs/html/interfacesparskit_1_1lusol.html new file mode 100644 index 00000000..b6e18447 --- /dev/null +++ b/docs/html/interfacesparskit_1_1lusol.html @@ -0,0 +1,189 @@ + + + + + + + +linalg: sparskit::lusol Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::lusol Interface Reference
+
+
+ +

Solves the LU-factored system (LU) x = y. + More...

+ + + + +

+Public Member Functions

subroutine lusol (n, y, x, alu, jlu, ju)
 
+

Detailed Description

+

Solves the LU-factored system (LU) x = y.

+
Parameters
+ + + + + + + +
[in]nThe dimension of the system.
[in]yThe N-element right-hand-side vector.
[out]xThe N-element solution vector.
[in]aluThe LU-factored matrix.
[in]jluThe LU-factored matrix.
[in]juThe LU-factored matrix.
+
+
+ +

Definition at line 493 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ lusol()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::lusol::lusol (integer(int32), intent(in) n,
real(real64), dimension(n), intent(in) y,
real(real64), dimension(n), intent(out) x,
real(real64), dimension(*), intent(in) alu,
integer(int32), dimension(*), intent(in) jlu,
integer(int32), dimension(*), intent(in) ju )
+
+ +

Definition at line 493 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1msrcsr-members.html b/docs/html/interfacesparskit_1_1msrcsr-members.html new file mode 100644 index 00000000..3cb8f4b6 --- /dev/null +++ b/docs/html/interfacesparskit_1_1msrcsr-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::msrcsr Member List
+
+
+ +

This is the complete list of members for sparskit::msrcsr, including all inherited members.

+ + +
msrcsr(n, a, ja, ao, jao, iao, wk, iwk) (defined in sparskit::msrcsr)sparskit::msrcsr
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1msrcsr.html b/docs/html/interfacesparskit_1_1msrcsr.html new file mode 100644 index 00000000..51c6f36e --- /dev/null +++ b/docs/html/interfacesparskit_1_1msrcsr.html @@ -0,0 +1,201 @@ + + + + + + + +linalg: sparskit::msrcsr Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::msrcsr Interface Reference
+
+
+ +

Converts and MSR matrix to a CSR matrix. + More...

+ + + + +

+Public Member Functions

subroutine msrcsr (n, a, ja, ao, jao, iao, wk, iwk)
 
+

Detailed Description

+

Converts and MSR matrix to a CSR matrix.

+
Parameters
+ + + + + + + + + +
[in]nThe row dimension of the matrix.
[in]aAn NNZ-element array containing the non-zero elements for the MSR matrix.
[in]jaAn NNZ-element index tracking array for the MSR matrix.
[out]aoThe non-zero elements of matrix A.
[out]jaoThe column indices of matrix A.
[out]iaoThe index in A where the requested row starts.
[out]wkAn N-element workspace array.
[out]iwkAn N+1 element workspace array.
+
+
+ +

Definition at line 191 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ msrcsr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::msrcsr::msrcsr (integer(int32), intent(in) n,
real(real64), dimension(*), intent(in) a,
integer(int32), dimension(*), intent(in) ja,
real(real64), dimension(*), intent(out) ao,
integer(int32), dimension(*), intent(out) jao,
integer(int32), dimension(n+1), intent(out) iao,
real(real64), dimension(n), intent(out) wk,
integer(int32), dimension(n+1), intent(out) iwk )
+
+ +

Definition at line 191 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1pgmres-members.html b/docs/html/interfacesparskit_1_1pgmres-members.html new file mode 100644 index 00000000..29be7cb2 --- /dev/null +++ b/docs/html/interfacesparskit_1_1pgmres-members.html @@ -0,0 +1,118 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit::pgmres Member List
+
+
+ +

This is the complete list of members for sparskit::pgmres, including all inherited members.

+ + +
pgmres(n, im, rhs, sol, vv, eps, maxits, iout, aa, ja, ia, alu, jlu, ju, ierr) (defined in sparskit::pgmres)sparskit::pgmres
+
+ + + + diff --git a/docs/html/interfacesparskit_1_1pgmres.html b/docs/html/interfacesparskit_1_1pgmres.html new file mode 100644 index 00000000..6fdbb8f6 --- /dev/null +++ b/docs/html/interfacesparskit_1_1pgmres.html @@ -0,0 +1,248 @@ + + + + + + + +linalg: sparskit::pgmres Interface Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit::pgmres Interface Reference
+
+
+ +

An ILUT preconditioned GMRES algorithm. This routine utilizes the L and U matrices generated by the ILUT routine to precondition the GMRES algorithm. The stopping criteria utilized is based simply on reducing the residual norm to the requested tolerance. + More...

+ + + + +

+Public Member Functions

subroutine pgmres (n, im, rhs, sol, vv, eps, maxits, iout, aa, ja, ia, alu, jlu, ju, ierr)
 
+

Detailed Description

+

An ILUT preconditioned GMRES algorithm. This routine utilizes the L and U matrices generated by the ILUT routine to precondition the GMRES algorithm. The stopping criteria utilized is based simply on reducing the residual norm to the requested tolerance.

+
Parameters
+ + + + + + + + + + + + + + + + +
[in]nThe row dimension of the matrix.
[in]imThe size of the Krylov subspace. This value should not exceed 50.
[in,out]rhsThe N-element right-hand-side vector. On output, the contents of this array are overwritten.
[in,out]solOn input, the N-element solution estimate. On output, the computed solution.
[out]vvAn N-by-IM+1 workspace matrix.
[in]epsThe convergence tolerance against which the norm of the residual is checked.
[in]maxitsThe maximum number of iterations to allow.
[in]ioutThe device output number for printing intermediate results. Set to a value less than or equal to zero to suppress printing.
[in]aaThe non-zero elements of matrix A.
[in]jaThe column indices of matrix A.
[in]iaThe index in A where the requested row starts.
[in]aluThe LU-factored matrix from ILUT.
[in]jluThe LU-factored matrix from ILUT.
[in]juThe LU-factored matrix from ILUT.
[out]ierrError flag:
    +
  • 0: Successful return
  • +
  • 1: Convergence not achieved.
  • +
  • -1: The initial guess seems to be the exact solution.
  • +
+
+
+
+ +

Definition at line 474 of file sparskit.f90.

+

Constructor & Destructor Documentation

+ +

◆ pgmres()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sparskit::pgmres::pgmres (integer(int32), intent(in) n,
integer(int32), intent(in) im,
real(real64), dimension(n), intent(inout) rhs,
real(real64), dimension(n), intent(inout) sol,
real(real64), dimension(n,*), intent(out) vv,
real(real64), intent(in) eps,
integer(int32), intent(in) maxits,
integer(int32), intent(in) iout,
real(real64), dimension(*), intent(in) aa,
integer(int32), dimension(*), intent(in) ja,
integer(int32), dimension(n+1), intent(in) ia,
real(real64), dimension(*), intent(in) alu,
integer(int32), dimension(*), intent(in) jlu,
integer(int32), dimension(n), intent(in) ju,
integer(int32), intent(out) ierr )
+
+ +

Definition at line 474 of file sparskit.f90.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/html/lapack_8f90_source.html b/docs/html/lapack_8f90_source.html index 11807b0f..7bd9bb70 100644 --- a/docs/html/lapack_8f90_source.html +++ b/docs/html/lapack_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg_8f90_source.html b/docs/html/linalg_8f90_source.html index 888f7da1..980d9faf 100644 --- a/docs/html/linalg_8f90_source.html +++ b/docs/html/linalg_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -156,1476 +156,1896 @@
187 public :: band_mtx_mult
188 public :: band_mtx_to_full_mtx
189 public :: band_diag_mtx_mult
-
190 public :: la_no_operation
-
191 public :: la_transpose
-
192 public :: la_hermitian_transpose
-
193 public :: la_no_error
-
194 public :: la_invalid_input_error
-
195 public :: la_array_size_error
-
196 public :: la_singular_matrix_error
-
197 public :: la_matrix_format_error
-
198 public :: la_out_of_memory_error
-
199 public :: la_convergence_error
-
200 public :: la_invalid_operation_error
-
201
-
202! ******************************************************************************
-
203! CONSTANTS
-
204! ------------------------------------------------------------------------------
-
206 integer(int32), parameter :: la_no_operation = 0
-
208 integer(int32), parameter :: la_transpose = 1
-
210 integer(int32), parameter :: la_hermitian_transpose = 2
-
211
-
212! ******************************************************************************
-
213! ERROR FLAGS
-
214! ------------------------------------------------------------------------------
-
216 integer(int32), parameter :: la_no_error = 0
-
218 integer(int32), parameter :: la_invalid_input_error = 101
-
220 integer(int32), parameter :: la_array_size_error = 102
-
222 integer(int32), parameter :: la_singular_matrix_error = 103
-
224 integer(int32), parameter :: la_matrix_format_error = 104
-
226 integer(int32), parameter :: la_out_of_memory_error = 105
-
228 integer(int32), parameter :: la_convergence_error = 106
-
230 integer(int32), parameter :: la_invalid_operation_error = 107
-
231
-
232! ******************************************************************************
-
233! INTERFACES
-
234! ------------------------------------------------------------------------------
-
-
296interface mtx_mult
-
297 module procedure :: mtx_mult_mtx
-
298 module procedure :: mtx_mult_vec
-
299 module procedure :: cmtx_mult_mtx
-
300 module procedure :: cmtx_mult_vec
+
190 public :: banded_to_dense
+
191 public :: dense_to_banded
+
192 public :: extract_diagonal
+
193 public :: csr_matrix
+
194 public :: msr_matrix
+
195 public :: size
+
196 public :: create_empty_csr_matrix
+
197 public :: create_empty_msr_matrix
+
198 public :: nonzero_count
+
199 public :: dense_to_csr
+
200 public :: diag_to_csr
+
201 public :: banded_to_csr
+
202 public :: csr_to_dense
+
203 public :: csr_to_msr
+
204 public :: msr_to_csr
+
205 public :: dense_to_msr
+
206 public :: msr_to_dense
+
207 public :: matmul
+
208 public :: operator(+)
+
209 public :: operator(-)
+
210 public :: operator(*)
+
211 public :: operator(/)
+
212 public :: assignment(=)
+
213 public :: transpose
+
214 public :: sparse_direct_solve
+
215 public :: pgmres_solver
+
216 public :: la_no_operation
+
217 public :: la_transpose
+
218 public :: la_hermitian_transpose
+
219 public :: la_no_error
+
220 public :: la_invalid_input_error
+
221 public :: la_array_size_error
+
222 public :: la_singular_matrix_error
+
223 public :: la_matrix_format_error
+
224 public :: la_out_of_memory_error
+
225 public :: la_convergence_error
+
226 public :: la_invalid_operation_error
+
227
+
228! ******************************************************************************
+
229! TYPES
+
230! ------------------------------------------------------------------------------
+
+ +
235 integer(int32), allocatable, dimension(:) :: row_indices
+
238 integer(int32), allocatable, dimension(:) :: column_indices
+
241 real(real64), allocatable, dimension(:) :: values
+
243 integer(int32), private :: n = 0
+
244 contains
+
246 procedure, public :: get => csr_get_element
+
247 end type
-
301end interface
-
302
-
303! ------------------------------------------------------------------------------
-
- -
332 module procedure :: rank1_update_dbl
-
333 module procedure :: rank1_update_cmplx
+
248
+
249! ------------------------------------------------------------------------------
+
+ +
254 integer(int32), allocatable, dimension(:) :: indices
+
257 real(real64), allocatable, dimension(:) :: values
+
259 integer(int32), private :: m = 0
+
261 integer(int32), private :: n = 0
+
263 integer(int32), private :: nnz = 0
+
264 end type
-
334end interface
-
335
-
336! ------------------------------------------------------------------------------
-
- -
467 module procedure :: diag_mtx_mult_mtx
-
468 module procedure :: diag_mtx_mult_mtx2
-
469 module procedure :: diag_mtx_mult_mtx3
-
470 module procedure :: diag_mtx_mult_mtx4
-
471 module procedure :: diag_mtx_mult_mtx_cmplx
-
472 module procedure :: diag_mtx_mult_mtx2_cmplx
-
473 module procedure :: diag_mtx_mult_mtx_mix
-
474 module procedure :: diag_mtx_mult_mtx2_mix
+
265
+
266! ******************************************************************************
+
267! CONSTANTS
+
268! ------------------------------------------------------------------------------
+
270 integer(int32), parameter :: la_no_operation = 0
+
272 integer(int32), parameter :: la_transpose = 1
+
274 integer(int32), parameter :: la_hermitian_transpose = 2
+
275
+
276! ******************************************************************************
+
277! ERROR FLAGS
+
278! ------------------------------------------------------------------------------
+
280 integer(int32), parameter :: la_no_error = 0
+
282 integer(int32), parameter :: la_invalid_input_error = 101
+
284 integer(int32), parameter :: la_array_size_error = 102
+
286 integer(int32), parameter :: la_singular_matrix_error = 103
+
288 integer(int32), parameter :: la_matrix_format_error = 104
+
290 integer(int32), parameter :: la_out_of_memory_error = 105
+
292 integer(int32), parameter :: la_convergence_error = 106
+
294 integer(int32), parameter :: la_invalid_operation_error = 107
+
295
+
296! ******************************************************************************
+
297! INTERFACES
+
298! ------------------------------------------------------------------------------
+
+
360interface mtx_mult
+
361 module procedure :: mtx_mult_mtx
+
362 module procedure :: mtx_mult_vec
+
363 module procedure :: cmtx_mult_mtx
+
364 module procedure :: cmtx_mult_vec
-
475end interface
-
476
-
477! ------------------------------------------------------------------------------
-
-
490interface trace
-
491 module procedure :: trace_dbl
-
492 module procedure :: trace_cmplx
+
365end interface
+
366
+
367! ------------------------------------------------------------------------------
+
+ +
396 module procedure :: rank1_update_dbl
+
397 module procedure :: rank1_update_cmplx
-
493end interface
-
494
-
495! ------------------------------------------------------------------------------
-
-
538interface mtx_rank
-
539 module procedure :: mtx_rank_dbl
-
540 module procedure :: mtx_rank_cmplx
+
398end interface
+
399
+
400! ------------------------------------------------------------------------------
+
+ +
553 module procedure :: diag_mtx_mult_mtx
+
554 module procedure :: diag_mtx_mult_mtx2
+
555 module procedure :: diag_mtx_mult_mtx3
+
556 module procedure :: diag_mtx_mult_mtx4
+
557 module procedure :: diag_mtx_mult_mtx_cmplx
+
558 module procedure :: diag_mtx_mult_mtx2_cmplx
+
559 module procedure :: diag_mtx_mult_mtx_mix
+
560 module procedure :: diag_mtx_mult_mtx2_mix
+
561 module procedure :: diag_mtx_sparse_mult
-
541end interface
-
542
-
543! ------------------------------------------------------------------------------
-
-
571interface det
-
572 module procedure :: det_dbl
-
573 module procedure :: det_cmplx
+
562end interface
+
563
+
564! ------------------------------------------------------------------------------
+
+
577interface trace
+
578 module procedure :: trace_dbl
+
579 module procedure :: trace_cmplx
-
574end interface
-
575
-
576! ------------------------------------------------------------------------------
-
-
593interface swap
-
594 module procedure :: swap_dbl
-
595 module procedure :: swap_cmplx
+
580end interface
+
581
+
582! ------------------------------------------------------------------------------
+
+
625interface mtx_rank
+
626 module procedure :: mtx_rank_dbl
+
627 module procedure :: mtx_rank_cmplx
-
596end interface
-
597
-
598! ------------------------------------------------------------------------------
-
- -
613 module procedure :: recip_mult_array_dbl
+
628end interface
+
629
+
630! ------------------------------------------------------------------------------
+
+
658interface det
+
659 module procedure :: det_dbl
+
660 module procedure :: det_cmplx
-
614end interface
-
615
-
616! ------------------------------------------------------------------------------
-
- -
647 module procedure :: tri_mtx_mult_dbl
-
648 module procedure :: tri_mtx_mult_cmplx
+
661end interface
+
662
+
663! ------------------------------------------------------------------------------
+
+
680interface swap
+
681 module procedure :: swap_dbl
+
682 module procedure :: swap_cmplx
-
649end interface
-
650
-
651! ------------------------------------------------------------------------------
-
-
732interface lu_factor
-
733 module procedure :: lu_factor_dbl
-
734 module procedure :: lu_factor_cmplx
+
683end interface
+
684
+
685! ------------------------------------------------------------------------------
+
+ +
700 module procedure :: recip_mult_array_dbl
-
735end interface
-
736
-
-
854interface form_lu
-
855 module procedure :: form_lu_all
-
856 module procedure :: form_lu_all_cmplx
-
857 module procedure :: form_lu_only
-
858 module procedure :: form_lu_only_cmplx
+
701end interface
+
702
+
703! ------------------------------------------------------------------------------
+
+ +
734 module procedure :: tri_mtx_mult_dbl
+
735 module procedure :: tri_mtx_mult_cmplx
-
859end interface
-
860
-
861! ------------------------------------------------------------------------------
-
-
1008interface qr_factor
-
1009 module procedure :: qr_factor_no_pivot
-
1010 module procedure :: qr_factor_no_pivot_cmplx
-
1011 module procedure :: qr_factor_pivot
-
1012 module procedure :: qr_factor_pivot_cmplx
+
736end interface
+
737
+
738! ------------------------------------------------------------------------------
+
+
843interface lu_factor
+
844 module procedure :: lu_factor_dbl
+
845 module procedure :: lu_factor_cmplx
+
846 module procedure :: csr_lu_factor
-
1013end interface
-
1014
-
1015! ------------------------------------------------------------------------------
-
-
1168interface form_qr
-
1169 module procedure :: form_qr_no_pivot
-
1170 module procedure :: form_qr_no_pivot_cmplx
-
1171 module procedure :: form_qr_pivot
-
1172 module procedure :: form_qr_pivot_cmplx
+
847end interface
+
848
+
+
966interface form_lu
+
967 module procedure :: form_lu_all
+
968 module procedure :: form_lu_all_cmplx
+
969 module procedure :: form_lu_only
+
970 module procedure :: form_lu_only_cmplx
-
1173end interface
-
1174
-
1175! ------------------------------------------------------------------------------
-
-
1325interface mult_qr
-
1326 module procedure :: mult_qr_mtx
-
1327 module procedure :: mult_qr_mtx_cmplx
-
1328 module procedure :: mult_qr_vec
-
1329 module procedure :: mult_qr_vec_cmplx
+
971end interface
+
972
+
973! ------------------------------------------------------------------------------
+
+
1120interface qr_factor
+
1121 module procedure :: qr_factor_no_pivot
+
1122 module procedure :: qr_factor_no_pivot_cmplx
+
1123 module procedure :: qr_factor_pivot
+
1124 module procedure :: qr_factor_pivot_cmplx
-
1330end interface
-
1331
-
1332! ------------------------------------------------------------------------------
-
- -
1476 module procedure :: qr_rank1_update_dbl
-
1477 module procedure :: qr_rank1_update_cmplx
+
1125end interface
+
1126
+
1127! ------------------------------------------------------------------------------
+
+
1280interface form_qr
+
1281 module procedure :: form_qr_no_pivot
+
1282 module procedure :: form_qr_no_pivot_cmplx
+
1283 module procedure :: form_qr_pivot
+
1284 module procedure :: form_qr_pivot_cmplx
-
1478end interface
-
1479
-
1480! ------------------------------------------------------------------------------
-
- -
1575 module procedure :: cholesky_factor_dbl
-
1576 module procedure :: cholesky_factor_cmplx
+
1285end interface
+
1286
+
1287! ------------------------------------------------------------------------------
+
+
1437interface mult_qr
+
1438 module procedure :: mult_qr_mtx
+
1439 module procedure :: mult_qr_mtx_cmplx
+
1440 module procedure :: mult_qr_vec
+
1441 module procedure :: mult_qr_vec_cmplx
-
1577end interface
-
1578
-
1579! ------------------------------------------------------------------------------
-
- -
1674 module procedure :: cholesky_rank1_update_dbl
-
1675 module procedure :: cholesky_rank1_update_cmplx
+
1442end interface
+
1443
+
1444! ------------------------------------------------------------------------------
+
+ +
1588 module procedure :: qr_rank1_update_dbl
+
1589 module procedure :: qr_rank1_update_cmplx
-
1676end interface
-
1677
-
1678! ------------------------------------------------------------------------------
-
- -
1781 module procedure :: cholesky_rank1_downdate_dbl
-
1782 module procedure :: cholesky_rank1_downdate_cmplx
+
1590end interface
+
1591
+
1592! ------------------------------------------------------------------------------
+
+ +
1687 module procedure :: cholesky_factor_dbl
+
1688 module procedure :: cholesky_factor_cmplx
-
1783end interface
-
1784
-
1785! ------------------------------------------------------------------------------
-
-
1853interface rz_factor
-
1854 module procedure :: rz_factor_dbl
-
1855 module procedure :: rz_factor_cmplx
+
1689end interface
+
1690
+
1691! ------------------------------------------------------------------------------
+
+ +
1786 module procedure :: cholesky_rank1_update_dbl
+
1787 module procedure :: cholesky_rank1_update_cmplx
-
1856end interface
-
1857
-
1858! ------------------------------------------------------------------------------
-
-
1944interface mult_rz
-
1945 module procedure :: mult_rz_mtx
-
1946 module procedure :: mult_rz_mtx_cmplx
-
1947 module procedure :: mult_rz_vec
-
1948 module procedure :: mult_rz_vec_cmplx
+
1788end interface
+
1789
+
1790! ------------------------------------------------------------------------------
+
+ +
1893 module procedure :: cholesky_rank1_downdate_dbl
+
1894 module procedure :: cholesky_rank1_downdate_cmplx
-
1949end interface
-
1950
-
1951! ------------------------------------------------------------------------------
-
-
2069interface svd
-
2070 module procedure :: svd_dbl
-
2071 module procedure :: svd_cmplx
+
1895end interface
+
1896
+
1897! ------------------------------------------------------------------------------
+
+
1965interface rz_factor
+
1966 module procedure :: rz_factor_dbl
+
1967 module procedure :: rz_factor_cmplx
-
2072end interface
-
2073
-
2074! ------------------------------------------------------------------------------
-
- -
2204 module procedure :: solve_tri_mtx
-
2205 module procedure :: solve_tri_mtx_cmplx
-
2206 module procedure :: solve_tri_vec
-
2207 module procedure :: solve_tri_vec_cmplx
+
1968end interface
+
1969
+
1970! ------------------------------------------------------------------------------
+
+
2056interface mult_rz
+
2057 module procedure :: mult_rz_mtx
+
2058 module procedure :: mult_rz_mtx_cmplx
+
2059 module procedure :: mult_rz_vec
+
2060 module procedure :: mult_rz_vec_cmplx
-
2208end interface
-
2209
-
2210! ------------------------------------------------------------------------------
-
-
2291interface solve_lu
-
2292 module procedure :: solve_lu_mtx
-
2293 module procedure :: solve_lu_mtx_cmplx
-
2294 module procedure :: solve_lu_vec
-
2295 module procedure :: solve_lu_vec_cmplx
+
2061end interface
+
2062
+
2063! ------------------------------------------------------------------------------
+
+
2181interface svd
+
2182 module procedure :: svd_dbl
+
2183 module procedure :: svd_cmplx
-
2296end interface
-
2297
-
2298! ------------------------------------------------------------------------------
-
-
2426interface solve_qr
-
2427 module procedure :: solve_qr_no_pivot_mtx
-
2428 module procedure :: solve_qr_no_pivot_mtx_cmplx
-
2429 module procedure :: solve_qr_no_pivot_vec
-
2430 module procedure :: solve_qr_no_pivot_vec_cmplx
-
2431 module procedure :: solve_qr_pivot_mtx
-
2432 module procedure :: solve_qr_pivot_mtx_cmplx
-
2433 module procedure :: solve_qr_pivot_vec
-
2434 module procedure :: solve_qr_pivot_vec_cmplx
+
2184end interface
+
2185
+
2186! ------------------------------------------------------------------------------
+
+ +
2316 module procedure :: solve_tri_mtx
+
2317 module procedure :: solve_tri_mtx_cmplx
+
2318 module procedure :: solve_tri_vec
+
2319 module procedure :: solve_tri_vec_cmplx
-
2435end interface
-
2436
-
2437! ------------------------------------------------------------------------------
-
- -
2533 module procedure :: solve_cholesky_mtx
-
2534 module procedure :: solve_cholesky_mtx_cmplx
-
2535 module procedure :: solve_cholesky_vec
-
2536 module procedure :: solve_cholesky_vec_cmplx
+
2320end interface
+
2321
+
2322! ------------------------------------------------------------------------------
+
+
2420interface solve_lu
+
2421 module procedure :: solve_lu_mtx
+
2422 module procedure :: solve_lu_mtx_cmplx
+
2423 module procedure :: solve_lu_vec
+
2424 module procedure :: solve_lu_vec_cmplx
+
2425 module procedure :: csr_lu_solve
-
2537end interface
-
2538
-
2539! ------------------------------------------------------------------------------
-
- -
2623 module procedure :: solve_least_squares_mtx
-
2624 module procedure :: solve_least_squares_mtx_cmplx
-
2625 module procedure :: solve_least_squares_vec
-
2626 module procedure :: solve_least_squares_vec_cmplx
+
2426end interface
+
2427
+
2428! ------------------------------------------------------------------------------
+
+
2556interface solve_qr
+
2557 module procedure :: solve_qr_no_pivot_mtx
+
2558 module procedure :: solve_qr_no_pivot_mtx_cmplx
+
2559 module procedure :: solve_qr_no_pivot_vec
+
2560 module procedure :: solve_qr_no_pivot_vec_cmplx
+
2561 module procedure :: solve_qr_pivot_mtx
+
2562 module procedure :: solve_qr_pivot_mtx_cmplx
+
2563 module procedure :: solve_qr_pivot_vec
+
2564 module procedure :: solve_qr_pivot_vec_cmplx
-
2627end interface
-
2628
-
2629! ------------------------------------------------------------------------------
-
- -
2724 module procedure :: solve_least_squares_mtx_pvt
-
2725 module procedure :: solve_least_squares_mtx_pvt_cmplx
-
2726 module procedure :: solve_least_squares_vec_pvt
-
2727 module procedure :: solve_least_squares_vec_pvt_cmplx
+
2565end interface
+
2566
+
2567! ------------------------------------------------------------------------------
+
+ +
2663 module procedure :: solve_cholesky_mtx
+
2664 module procedure :: solve_cholesky_mtx_cmplx
+
2665 module procedure :: solve_cholesky_vec
+
2666 module procedure :: solve_cholesky_vec_cmplx
-
2728end interface
-
2729
-
2730! ------------------------------------------------------------------------------
-
- -
2826 module procedure :: solve_least_squares_mtx_svd
-
2827 module procedure :: solve_least_squares_vec_svd
+
2667end interface
+
2668
+
2669! ------------------------------------------------------------------------------
+
+ +
2753 module procedure :: solve_least_squares_mtx
+
2754 module procedure :: solve_least_squares_mtx_cmplx
+
2755 module procedure :: solve_least_squares_vec
+
2756 module procedure :: solve_least_squares_vec_cmplx
-
2828end interface
-
2829
-
2830! ------------------------------------------------------------------------------
-
- -
2921 module procedure :: mtx_inverse_dbl
-
2922 module procedure :: mtx_inverse_cmplx
+
2757end interface
+
2758
+
2759! ------------------------------------------------------------------------------
+
+ +
2854 module procedure :: solve_least_squares_mtx_pvt
+
2855 module procedure :: solve_least_squares_mtx_pvt_cmplx
+
2856 module procedure :: solve_least_squares_vec_pvt
+
2857 module procedure :: solve_least_squares_vec_pvt_cmplx
-
2923end interface
-
2924
-
2925! ------------------------------------------------------------------------------
-
- -
3027 module procedure :: mtx_pinverse_dbl
-
3028 module procedure :: mtx_pinverse_cmplx
+
2858end interface
+
2859
+
2860! ------------------------------------------------------------------------------
+
+ +
2956 module procedure :: solve_least_squares_mtx_svd
+
2957 module procedure :: solve_least_squares_vec_svd
-
3029end interface
-
3030
-
3031! ------------------------------------------------------------------------------
-
-
3240interface eigen
-
3241 module procedure :: eigen_symm
-
3242 module procedure :: eigen_asymm
-
3243 module procedure :: eigen_gen
-
3244 module procedure :: eigen_cmplx
+
2958end interface
+
2959
+
2960! ------------------------------------------------------------------------------
+
+ +
3051 module procedure :: mtx_inverse_dbl
+
3052 module procedure :: mtx_inverse_cmplx
-
3245end interface
-
3246
-
3247! ------------------------------------------------------------------------------
-
-
3323interface sort
-
3324 module procedure :: sort_dbl_array
-
3325 module procedure :: sort_dbl_array_ind
-
3326 module procedure :: sort_cmplx_array
-
3327 module procedure :: sort_cmplx_array_ind
-
3328 module procedure :: sort_eigen_cmplx
-
3329 module procedure :: sort_eigen_dbl
+
3053end interface
+
3054
+
3055! ------------------------------------------------------------------------------
+
+ +
3157 module procedure :: mtx_pinverse_dbl
+
3158 module procedure :: mtx_pinverse_cmplx
-
3330end interface
-
3331
-
-
3437interface lq_factor
-
3438 module procedure :: lq_factor_no_pivot
-
3439 module procedure :: lq_factor_no_pivot_cmplx
+
3159end interface
+
3160
+
3161! ------------------------------------------------------------------------------
+
+
3370interface eigen
+
3371 module procedure :: eigen_symm
+
3372 module procedure :: eigen_asymm
+
3373 module procedure :: eigen_gen
+
3374 module procedure :: eigen_cmplx
-
3440end interface
-
3441
-
-
3551interface form_lq
-
3552 module procedure :: form_lq_no_pivot
-
3553 module procedure :: form_lq_no_pivot_cmplx
+
3375end interface
+
3376
+
3377! ------------------------------------------------------------------------------
+
+
3453interface sort
+
3454 module procedure :: sort_dbl_array
+
3455 module procedure :: sort_dbl_array_ind
+
3456 module procedure :: sort_cmplx_array
+
3457 module procedure :: sort_cmplx_array_ind
+
3458 module procedure :: sort_eigen_cmplx
+
3459 module procedure :: sort_eigen_dbl
-
3554end interface
-
3555
-
-
3700interface mult_lq
-
3701 module procedure :: mult_lq_mtx
-
3702 module procedure :: mult_lq_mtx_cmplx
-
3703 module procedure :: mult_lq_vec
-
3704 module procedure :: mult_lq_vec_cmplx
+
3460end interface
+
3461
+
+
3567interface lq_factor
+
3568 module procedure :: lq_factor_no_pivot
+
3569 module procedure :: lq_factor_no_pivot_cmplx
-
3705end interface
-
3706
-
-
3795interface solve_lq
-
3796 module procedure :: solve_lq_mtx
-
3797 module procedure :: solve_lq_mtx_cmplx
-
3798 module procedure :: solve_lq_vec
-
3799 module procedure :: solve_lq_vec_cmplx
+
3570end interface
+
3571
+
+
3681interface form_lq
+
3682 module procedure :: form_lq_no_pivot
+
3683 module procedure :: form_lq_no_pivot_cmplx
-
3800end interface
-
3801
-
3802! ------------------------------------------------------------------------------
-
- -
3898 module procedure :: band_mtx_vec_mult_dbl
-
3899 module procedure :: band_mtx_vec_mult_cmplx
+
3684end interface
+
3685
+
+
3830interface mult_lq
+
3831 module procedure :: mult_lq_mtx
+
3832 module procedure :: mult_lq_mtx_cmplx
+
3833 module procedure :: mult_lq_vec
+
3834 module procedure :: mult_lq_vec_cmplx
-
3900end interface
-
3901
-
- -
3940 module procedure :: band_to_full_mtx_dbl
-
3941 module procedure :: band_to_full_mtx_cmplx
+
3835end interface
+
3836
+
+
3925interface solve_lq
+
3926 module procedure :: solve_lq_mtx
+
3927 module procedure :: solve_lq_mtx_cmplx
+
3928 module procedure :: solve_lq_vec
+
3929 module procedure :: solve_lq_vec_cmplx
-
3942end interface
-
3943
-
- -
4003 module procedure :: band_diag_mtx_mult_dbl
-
4004 module procedure :: band_diag_mtx_mult_cmplx
+
3930end interface
+
3931
+
3932! ------------------------------------------------------------------------------
+
+ +
4028 module procedure :: band_mtx_vec_mult_dbl
+
4029 module procedure :: band_mtx_vec_mult_cmplx
-
4005end interface
-
4006
-
4007! ******************************************************************************
-
4008! LINALG_BASIC.F90
-
4009! ------------------------------------------------------------------------------
-
4010interface
-
4011 module subroutine mtx_mult_mtx(transa, transb, alpha, a, b, beta, c, err)
-
4012 logical, intent(in) :: transa, transb
-
4013 real(real64), intent(in) :: alpha, beta
-
4014 real(real64), intent(in), dimension(:,:) :: a, b
-
4015 real(real64), intent(inout), dimension(:,:) :: c
-
4016 class(errors), intent(inout), optional, target :: err
-
4017 end subroutine
-
4018
-
4019 module subroutine mtx_mult_vec(trans, alpha, a, b, beta, c, err)
-
4020 logical, intent(in) :: trans
-
4021 real(real64), intent(in) :: alpha, beta
-
4022 real(real64), intent(in), dimension(:,:) :: a
-
4023 real(real64), intent(in), dimension(:) :: b
-
4024 real(real64), intent(inout), dimension(:) :: c
-
4025 class(errors), intent(inout), optional, target :: err
-
4026 end subroutine
-
4027
-
4028 module subroutine cmtx_mult_mtx(opa, opb, alpha, a, b, beta, c, err)
-
4029 integer(int32), intent(in) :: opa, opb
-
4030 complex(real64), intent(in) :: alpha, beta
-
4031 complex(real64), intent(in), dimension(:,:) :: a, b
-
4032 complex(real64), intent(inout), dimension(:,:) :: c
-
4033 class(errors), intent(inout), optional, target :: err
-
4034 end subroutine
-
4035
-
4036 module subroutine cmtx_mult_vec(opa, alpha, a, b, beta, c, err)
-
4037 integer(int32), intent(in) :: opa
-
4038 complex(real64), intent(in) :: alpha, beta
-
4039 complex(real64), intent(in), dimension(:,:) :: a
-
4040 complex(real64), intent(in), dimension(:) :: b
-
4041 complex(real64), intent(inout), dimension(:) :: c
-
4042 class(errors), intent(inout), optional, target :: err
-
4043 end subroutine
-
4044
-
4045 module subroutine rank1_update_dbl(alpha, x, y, a, err)
-
4046 real(real64), intent(in) :: alpha
-
4047 real(real64), intent(in), dimension(:) :: x, y
-
4048 real(real64), intent(inout), dimension(:,:) :: a
-
4049 class(errors), intent(inout), optional, target :: err
-
4050 end subroutine
-
4051
-
4052 module subroutine rank1_update_cmplx(alpha, x, y, a, err)
-
4053 complex(real64), intent(in) :: alpha
-
4054 complex(real64), intent(in), dimension(:) :: x, y
-
4055 complex(real64), intent(inout), dimension(:,:) :: a
-
4056 class(errors), intent(inout), optional, target :: err
-
4057 end subroutine
-
4058
-
4059 module subroutine diag_mtx_mult_mtx(lside, trans, alpha, a, b, beta, c, err)
-
4060 logical, intent(in) :: lside, trans
-
4061 real(real64) :: alpha, beta
-
4062 real(real64), intent(in), dimension(:) :: a
-
4063 real(real64), intent(in), dimension(:,:) :: b
-
4064 real(real64), intent(inout), dimension(:,:) :: c
-
4065 class(errors), intent(inout), optional, target :: err
-
4066 end subroutine
-
4067
-
4068 module subroutine diag_mtx_mult_mtx2(lside, alpha, a, b, err)
-
4069 logical, intent(in) :: lside
-
4070 real(real64), intent(in) :: alpha
-
4071 real(real64), intent(in), dimension(:) :: a
-
4072 real(real64), intent(inout), dimension(:,:) :: b
-
4073 class(errors), intent(inout), optional, target :: err
-
4074 end subroutine
-
4075
-
4076 module subroutine diag_mtx_mult_mtx3(lside, trans, alpha, a, b, beta, c, err)
-
4077 logical, intent(in) :: lside, trans
-
4078 real(real64) :: alpha, beta
-
4079 complex(real64), intent(in), dimension(:) :: a
-
4080 real(real64), intent(in), dimension(:,:) :: b
-
4081 complex(real64), intent(inout), dimension(:,:) :: c
-
4082 class(errors), intent(inout), optional, target :: err
-
4083 end subroutine
-
4084
-
4085 module subroutine diag_mtx_mult_mtx4(lside, opb, alpha, a, b, beta, c, err)
-
4086 logical, intent(in) :: lside
-
4087 integer(int32), intent(in) :: opb
-
4088 real(real64) :: alpha, beta
-
4089 complex(real64), intent(in), dimension(:) :: a
-
4090 complex(real64), intent(in), dimension(:,:) :: b
-
4091 complex(real64), intent(inout), dimension(:,:) :: c
-
4092 class(errors), intent(inout), optional, target :: err
-
4093 end subroutine
-
4094
-
4095 module subroutine diag_mtx_mult_mtx_cmplx(lside, opb, alpha, a, b, beta, c, err)
-
4096 logical, intent(in) :: lside
-
4097 integer(int32), intent(in) :: opb
-
4098 complex(real64) :: alpha, beta
-
4099 complex(real64), intent(in), dimension(:) :: a
-
4100 complex(real64), intent(in), dimension(:,:) :: b
-
4101 complex(real64), intent(inout), dimension(:,:) :: c
-
4102 class(errors), intent(inout), optional, target :: err
-
4103 end subroutine
-
4104
-
4105 module subroutine diag_mtx_mult_mtx2_cmplx(lside, alpha, a, b, err)
-
4106 logical, intent(in) :: lside
-
4107 complex(real64), intent(in) :: alpha
-
4108 complex(real64), intent(in), dimension(:) :: a
-
4109 complex(real64), intent(inout), dimension(:,:) :: b
-
4110 class(errors), intent(inout), optional, target :: err
-
4111 end subroutine
-
4112
-
4113 module subroutine diag_mtx_mult_mtx_mix(lside, opb, alpha, a, b, beta, c, err)
-
4114 logical, intent(in) :: lside
-
4115 integer(int32), intent(in) :: opb
-
4116 complex(real64) :: alpha, beta
-
4117 real(real64), intent(in), dimension(:) :: a
-
4118 complex(real64), intent(in), dimension(:,:) :: b
-
4119 complex(real64), intent(inout), dimension(:,:) :: c
-
4120 class(errors), intent(inout), optional, target :: err
-
4121 end subroutine
-
4122
-
4123 module subroutine diag_mtx_mult_mtx2_mix(lside, alpha, a, b, err)
-
4124 logical, intent(in) :: lside
-
4125 complex(real64), intent(in) :: alpha
-
4126 real(real64), intent(in), dimension(:) :: a
-
4127 complex(real64), intent(inout), dimension(:,:) :: b
-
4128 class(errors), intent(inout), optional, target :: err
-
4129 end subroutine
-
4130
-
4131 pure module function trace_dbl(x) result(y)
-
4132 real(real64), intent(in), dimension(:,:) :: x
-
4133 real(real64) :: y
-
4134 end function
-
4135
-
4136 pure module function trace_cmplx(x) result(y)
-
4137 complex(real64), intent(in), dimension(:,:) :: x
-
4138 complex(real64) :: y
-
4139 end function
-
4140
-
4141 module function mtx_rank_dbl(a, tol, work, olwork, err) result(rnk)
-
4142 real(real64), intent(inout), dimension(:,:) :: a
-
4143 real(real64), intent(in), optional :: tol
-
4144 real(real64), intent(out), target, optional, dimension(:) :: work
-
4145 integer(int32), intent(out), optional :: olwork
-
4146 class(errors), intent(inout), optional, target :: err
-
4147 integer(int32) :: rnk
-
4148 end function
-
4149
-
4150 module function mtx_rank_cmplx(a, tol, work, olwork, rwork, err) result(rnk)
-
4151 complex(real64), intent(inout), dimension(:,:) :: a
-
4152 real(real64), intent(in), optional :: tol
-
4153 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4154 integer(int32), intent(out), optional :: olwork
-
4155 real(real64), intent(out), target, optional, dimension(:) :: rwork
-
4156 class(errors), intent(inout), optional, target :: err
-
4157 integer(int32) :: rnk
-
4158 end function
-
4159
-
4160 module function det_dbl(a, iwork, err) result(x)
-
4161 real(real64), intent(inout), dimension(:,:) :: a
-
4162 integer(int32), intent(out), target, optional, dimension(:) :: iwork
-
4163 class(errors), intent(inout), optional, target :: err
-
4164 real(real64) :: x
-
4165 end function
-
4166
-
4167 module function det_cmplx(a, iwork, err) result(x)
-
4168 complex(real64), intent(inout), dimension(:,:) :: a
-
4169 integer(int32), intent(out), target, optional, dimension(:) :: iwork
-
4170 class(errors), intent(inout), optional, target :: err
-
4171 complex(real64) :: x
-
4172 end function
-
4173
-
4174 module subroutine swap_dbl(x, y, err)
-
4175 real(real64), intent(inout), dimension(:) :: x, y
-
4176 class(errors), intent(inout), optional, target :: err
-
4177 end subroutine
-
4178
-
4179 module subroutine swap_cmplx(x, y, err)
-
4180 complex(real64), intent(inout), dimension(:) :: x, y
-
4181 class(errors), intent(inout), optional, target :: err
-
4182 end subroutine
-
4183
-
4184 module subroutine recip_mult_array_dbl(a, x)
-
4185 real(real64), intent(in) :: a
-
4186 real(real64), intent(inout), dimension(:) :: x
-
4187 end subroutine
-
4188
-
4189 module subroutine tri_mtx_mult_dbl(upper, alpha, a, beta, b, err)
-
4190 logical, intent(in) :: upper
-
4191 real(real64), intent(in) :: alpha, beta
-
4192 real(real64), intent(in), dimension(:,:) :: a
-
4193 real(real64), intent(inout), dimension(:,:) :: b
-
4194 class(errors), intent(inout), optional, target :: err
-
4195 end subroutine
-
4196
-
4197 module subroutine tri_mtx_mult_cmplx(upper, alpha, a, beta, b, err)
-
4198 logical, intent(in) :: upper
-
4199 complex(real64), intent(in) :: alpha, beta
-
4200 complex(real64), intent(in), dimension(:,:) :: a
-
4201 complex(real64), intent(inout), dimension(:,:) :: b
-
4202 class(errors), intent(inout), optional, target :: err
-
4203 end subroutine
-
4204
-
4205 module subroutine band_mtx_vec_mult_dbl(trans, kl, ku, alpha, a, x, beta, &
-
4206 y, err)
-
4207 logical, intent(in) :: trans
-
4208 integer(int32), intent(in) :: kl, ku
-
4209 real(real64), intent(in) :: alpha, beta
-
4210 real(real64), intent(in), dimension(:,:) :: a
-
4211 real(real64), intent(in), dimension(:) :: x
-
4212 real(real64), intent(inout), dimension(:) :: y
-
4213 class(errors), intent(inout), optional, target :: err
-
4214 end subroutine
-
4215
-
4216 module subroutine band_mtx_vec_mult_cmplx(trans, kl, ku, alpha, a, x, &
-
4217 beta, y, err)
-
4218 integer(int32), intent(in) :: trans
-
4219 integer(int32), intent(in) :: kl, ku
-
4220 complex(real64), intent(in) :: alpha, beta
-
4221 complex(real64), intent(in), dimension(:,:) :: a
-
4222 complex(real64), intent(in), dimension(:) :: x
-
4223 complex(real64), intent(inout), dimension(:) :: y
-
4224 class(errors), intent(inout), optional, target :: err
-
4225 end subroutine
-
4226
-
4227 module subroutine band_to_full_mtx_dbl(kl, ku, b, f, err)
-
4228 integer(int32), intent(in) :: kl, ku
-
4229 real(real64), intent(in), dimension(:,:) :: b
-
4230 real(real64), intent(out), dimension(:,:) :: f
+
4030end interface
+
4031
+
+ +
4070 module procedure :: band_to_full_mtx_dbl
+
4071 module procedure :: band_to_full_mtx_cmplx
+
+
4072end interface
+
4073
+
+ +
4133 module procedure :: band_diag_mtx_mult_dbl
+
4134 module procedure :: band_diag_mtx_mult_cmplx
+
+
4135end interface
+
4136
+
+ +
4161 module procedure :: banded_to_dense_dbl
+
4162 module procedure :: banded_to_dense_cmplx
+
+
4163end interface
+
4164
+
+ +
4186 module procedure :: dense_to_banded_dbl
+
4187 module procedure :: dense_to_banded_cmplx
+
+
4188end interface
+
4189
+
+ +
4208 module procedure :: extract_diagonal_dbl
+
4209 module procedure :: extract_diagonal_cmplx
+
4210 module procedure :: extract_diagonal_csr
+
+
4211end interface
+
4212
+
4213! ******************************************************************************
+
4214! LINALG_BASIC.F90
+
4215! ------------------------------------------------------------------------------
+
4216interface
+
4217 module subroutine mtx_mult_mtx(transa, transb, alpha, a, b, beta, c, err)
+
4218 logical, intent(in) :: transa, transb
+
4219 real(real64), intent(in) :: alpha, beta
+
4220 real(real64), intent(in), dimension(:,:) :: a, b
+
4221 real(real64), intent(inout), dimension(:,:) :: c
+
4222 class(errors), intent(inout), optional, target :: err
+
4223 end subroutine
+
4224
+
4225 module subroutine mtx_mult_vec(trans, alpha, a, b, beta, c, err)
+
4226 logical, intent(in) :: trans
+
4227 real(real64), intent(in) :: alpha, beta
+
4228 real(real64), intent(in), dimension(:,:) :: a
+
4229 real(real64), intent(in), dimension(:) :: b
+
4230 real(real64), intent(inout), dimension(:) :: c
4231 class(errors), intent(inout), optional, target :: err
4232 end subroutine
-
4233
-
4234 module subroutine band_to_full_mtx_cmplx(kl, ku, b, f, err)
-
4235 integer(int32), intent(in) :: kl, ku
-
4236 complex(real64), intent(in), dimension(:,:) :: b
-
4237 complex(real64), intent(out), dimension(:,:) :: f
-
4238 class(errors), intent(inout), optional, target :: err
-
4239 end subroutine
-
4240
-
4241 module subroutine band_diag_mtx_mult_dbl(left, m, kl, ku, alpha, a, b, err)
-
4242 logical, intent(in) :: left
-
4243 integer(int32), intent(in) :: m, kl, ku
-
4244 real(real64), intent(in) :: alpha
-
4245 real(real64), intent(inout), dimension(:,:) :: a
-
4246 real(real64), intent(in), dimension(:) :: b
-
4247 class(errors), intent(inout), optional, target :: err
-
4248 end subroutine
-
4249
-
4250 module subroutine band_diag_mtx_mult_cmplx(left, m, kl, ku, alpha, a, b, err)
-
4251 logical, intent(in) :: left
-
4252 integer(int32), intent(in) :: m, kl, ku
-
4253 complex(real64), intent(in) :: alpha
-
4254 complex(real64), intent(inout), dimension(:,:) :: a
-
4255 complex(real64), intent(in), dimension(:) :: b
-
4256 class(errors), intent(inout), optional, target :: err
-
4257 end subroutine
-
4258end interface
-
4259
-
4260! ******************************************************************************
-
4261! LINALG_FACTOR.F90
-
4262! ------------------------------------------------------------------------------
-
4263interface
-
4264 module subroutine lu_factor_dbl(a, ipvt, err)
-
4265 real(real64), intent(inout), dimension(:,:) :: a
-
4266 integer(int32), intent(out), dimension(:) :: ipvt
-
4267 class(errors), intent(inout), optional, target :: err
-
4268 end subroutine
-
4269
-
4270 module subroutine lu_factor_cmplx(a, ipvt, err)
-
4271 complex(real64), intent(inout), dimension(:,:) :: a
-
4272 integer(int32), intent(out), dimension(:) :: ipvt
-
4273 class(errors), intent(inout), optional, target :: err
-
4274 end subroutine
-
4275
-
4276 module subroutine form_lu_all(lu, ipvt, u, p, err)
-
4277 real(real64), intent(inout), dimension(:,:) :: lu
-
4278 integer(int32), intent(in), dimension(:) :: ipvt
-
4279 real(real64), intent(out), dimension(:,:) :: u, p
-
4280 class(errors), intent(inout), optional, target :: err
-
4281 end subroutine
-
4282
-
4283 module subroutine form_lu_all_cmplx(lu, ipvt, u, p, err)
-
4284 complex(real64), intent(inout), dimension(:,:) :: lu
-
4285 integer(int32), intent(in), dimension(:) :: ipvt
-
4286 complex(real64), intent(out), dimension(:,:) :: u
-
4287 real(real64), intent(out), dimension(:,:) :: p
+
4233
+
4234 module subroutine cmtx_mult_mtx(opa, opb, alpha, a, b, beta, c, err)
+
4235 integer(int32), intent(in) :: opa, opb
+
4236 complex(real64), intent(in) :: alpha, beta
+
4237 complex(real64), intent(in), dimension(:,:) :: a, b
+
4238 complex(real64), intent(inout), dimension(:,:) :: c
+
4239 class(errors), intent(inout), optional, target :: err
+
4240 end subroutine
+
4241
+
4242 module subroutine cmtx_mult_vec(opa, alpha, a, b, beta, c, err)
+
4243 integer(int32), intent(in) :: opa
+
4244 complex(real64), intent(in) :: alpha, beta
+
4245 complex(real64), intent(in), dimension(:,:) :: a
+
4246 complex(real64), intent(in), dimension(:) :: b
+
4247 complex(real64), intent(inout), dimension(:) :: c
+
4248 class(errors), intent(inout), optional, target :: err
+
4249 end subroutine
+
4250
+
4251 module subroutine rank1_update_dbl(alpha, x, y, a, err)
+
4252 real(real64), intent(in) :: alpha
+
4253 real(real64), intent(in), dimension(:) :: x, y
+
4254 real(real64), intent(inout), dimension(:,:) :: a
+
4255 class(errors), intent(inout), optional, target :: err
+
4256 end subroutine
+
4257
+
4258 module subroutine rank1_update_cmplx(alpha, x, y, a, err)
+
4259 complex(real64), intent(in) :: alpha
+
4260 complex(real64), intent(in), dimension(:) :: x, y
+
4261 complex(real64), intent(inout), dimension(:,:) :: a
+
4262 class(errors), intent(inout), optional, target :: err
+
4263 end subroutine
+
4264
+
4265 module subroutine diag_mtx_mult_mtx(lside, trans, alpha, a, b, beta, c, err)
+
4266 logical, intent(in) :: lside, trans
+
4267 real(real64) :: alpha, beta
+
4268 real(real64), intent(in), dimension(:) :: a
+
4269 real(real64), intent(in), dimension(:,:) :: b
+
4270 real(real64), intent(inout), dimension(:,:) :: c
+
4271 class(errors), intent(inout), optional, target :: err
+
4272 end subroutine
+
4273
+
4274 module subroutine diag_mtx_mult_mtx2(lside, alpha, a, b, err)
+
4275 logical, intent(in) :: lside
+
4276 real(real64), intent(in) :: alpha
+
4277 real(real64), intent(in), dimension(:) :: a
+
4278 real(real64), intent(inout), dimension(:,:) :: b
+
4279 class(errors), intent(inout), optional, target :: err
+
4280 end subroutine
+
4281
+
4282 module subroutine diag_mtx_mult_mtx3(lside, trans, alpha, a, b, beta, c, err)
+
4283 logical, intent(in) :: lside, trans
+
4284 real(real64) :: alpha, beta
+
4285 complex(real64), intent(in), dimension(:) :: a
+
4286 real(real64), intent(in), dimension(:,:) :: b
+
4287 complex(real64), intent(inout), dimension(:,:) :: c
4288 class(errors), intent(inout), optional, target :: err
4289 end subroutine
4290
-
4291 module subroutine form_lu_only(lu, u, err)
-
4292 real(real64), intent(inout), dimension(:,:) :: lu
-
4293 real(real64), intent(out), dimension(:,:) :: u
-
4294 class(errors), intent(inout), optional, target :: err
-
4295 end subroutine
-
4296
-
4297 module subroutine form_lu_only_cmplx(lu, u, err)
-
4298 complex(real64), intent(inout), dimension(:,:) :: lu
-
4299 complex(real64), intent(out), dimension(:,:) :: u
-
4300 class(errors), intent(inout), optional, target :: err
-
4301 end subroutine
-
4302
-
4303 module subroutine qr_factor_no_pivot(a, tau, work, olwork, err)
-
4304 real(real64), intent(inout), dimension(:,:) :: a
-
4305 real(real64), intent(out), dimension(:) :: tau
-
4306 real(real64), intent(out), target, dimension(:), optional :: work
-
4307 integer(int32), intent(out), optional :: olwork
+
4291 module subroutine diag_mtx_mult_mtx4(lside, opb, alpha, a, b, beta, c, err)
+
4292 logical, intent(in) :: lside
+
4293 integer(int32), intent(in) :: opb
+
4294 real(real64) :: alpha, beta
+
4295 complex(real64), intent(in), dimension(:) :: a
+
4296 complex(real64), intent(in), dimension(:,:) :: b
+
4297 complex(real64), intent(inout), dimension(:,:) :: c
+
4298 class(errors), intent(inout), optional, target :: err
+
4299 end subroutine
+
4300
+
4301 module subroutine diag_mtx_mult_mtx_cmplx(lside, opb, alpha, a, b, beta, c, err)
+
4302 logical, intent(in) :: lside
+
4303 integer(int32), intent(in) :: opb
+
4304 complex(real64) :: alpha, beta
+
4305 complex(real64), intent(in), dimension(:) :: a
+
4306 complex(real64), intent(in), dimension(:,:) :: b
+
4307 complex(real64), intent(inout), dimension(:,:) :: c
4308 class(errors), intent(inout), optional, target :: err
4309 end subroutine
4310
-
4311 module subroutine qr_factor_no_pivot_cmplx(a, tau, work, olwork, err)
-
4312 complex(real64), intent(inout), dimension(:,:) :: a
-
4313 complex(real64), intent(out), dimension(:) :: tau
-
4314 complex(real64), intent(out), target, dimension(:), optional :: work
-
4315 integer(int32), intent(out), optional :: olwork
+
4311 module subroutine diag_mtx_mult_mtx2_cmplx(lside, alpha, a, b, err)
+
4312 logical, intent(in) :: lside
+
4313 complex(real64), intent(in) :: alpha
+
4314 complex(real64), intent(in), dimension(:) :: a
+
4315 complex(real64), intent(inout), dimension(:,:) :: b
4316 class(errors), intent(inout), optional, target :: err
4317 end subroutine
4318
-
4319 module subroutine qr_factor_pivot(a, tau, jpvt, work, olwork, err)
-
4320 real(real64), intent(inout), dimension(:,:) :: a
-
4321 real(real64), intent(out), dimension(:) :: tau
-
4322 integer(int32), intent(inout), dimension(:) :: jpvt
-
4323 real(real64), intent(out), target, dimension(:), optional :: work
-
4324 integer(int32), intent(out), optional :: olwork
-
4325 class(errors), intent(inout), optional, target :: err
-
4326 end subroutine
-
4327
-
4328 module subroutine qr_factor_pivot_cmplx(a, tau, jpvt, work, olwork, rwork, &
-
4329 err)
-
4330 complex(real64), intent(inout), dimension(:,:) :: a
-
4331 complex(real64), intent(out), dimension(:) :: tau
-
4332 integer(int32), intent(inout), dimension(:) :: jpvt
-
4333 complex(real64), intent(out), target, dimension(:), optional :: work
-
4334 integer(int32), intent(out), optional :: olwork
-
4335 real(real64), intent(out), target, dimension(:), optional :: rwork
-
4336 class(errors), intent(inout), optional, target :: err
-
4337 end subroutine
-
4338
-
4339 module subroutine form_qr_no_pivot(r, tau, q, work, olwork, err)
-
4340 real(real64), intent(inout), dimension(:,:) :: r
-
4341 real(real64), intent(in), dimension(:) :: tau
-
4342 real(real64), intent(out), dimension(:,:) :: q
-
4343 real(real64), intent(out), target, dimension(:), optional :: work
-
4344 integer(int32), intent(out), optional :: olwork
-
4345 class(errors), intent(inout), optional, target :: err
-
4346 end subroutine
-
4347
-
4348 module subroutine form_qr_no_pivot_cmplx(r, tau, q, work, olwork, err)
-
4349 complex(real64), intent(inout), dimension(:,:) :: r
-
4350 complex(real64), intent(in), dimension(:) :: tau
-
4351 complex(real64), intent(out), dimension(:,:) :: q
-
4352 complex(real64), intent(out), target, dimension(:), optional :: work
-
4353 integer(int32), intent(out), optional :: olwork
-
4354 class(errors), intent(inout), optional, target :: err
-
4355 end subroutine
-
4356
-
4357 module subroutine form_qr_pivot(r, tau, pvt, q, p, work, olwork, err)
-
4358 real(real64), intent(inout), dimension(:,:) :: r
-
4359 real(real64), intent(in), dimension(:) :: tau
-
4360 integer(int32), intent(in), dimension(:) :: pvt
-
4361 real(real64), intent(out), dimension(:,:) :: q, p
-
4362 real(real64), intent(out), target, dimension(:), optional :: work
-
4363 integer(int32), intent(out), optional :: olwork
-
4364 class(errors), intent(inout), optional, target :: err
-
4365 end subroutine
-
4366
-
4367 module subroutine form_qr_pivot_cmplx(r, tau, pvt, q, p, work, olwork, err)
-
4368 complex(real64), intent(inout), dimension(:,:) :: r
-
4369 complex(real64), intent(in), dimension(:) :: tau
-
4370 integer(int32), intent(in), dimension(:) :: pvt
-
4371 complex(real64), intent(out), dimension(:,:) :: q, p
-
4372 complex(real64), intent(out), target, dimension(:), optional :: work
-
4373 integer(int32), intent(out), optional :: olwork
-
4374 class(errors), intent(inout), optional, target :: err
-
4375 end subroutine
-
4376
-
4377 module subroutine mult_qr_mtx(lside, trans, a, tau, c, work, olwork, err)
-
4378 logical, intent(in) :: lside, trans
-
4379 real(real64), intent(in), dimension(:) :: tau
-
4380 real(real64), intent(inout), dimension(:,:) :: a, c
-
4381 real(real64), intent(out), target, dimension(:), optional :: work
-
4382 integer(int32), intent(out), optional :: olwork
-
4383 class(errors), intent(inout), optional, target :: err
-
4384 end subroutine
-
4385
-
4386 module subroutine mult_qr_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
-
4387 logical, intent(in) :: lside, trans
-
4388 complex(real64), intent(in), dimension(:) :: tau
-
4389 complex(real64), intent(inout), dimension(:,:) :: a, c
-
4390 complex(real64), intent(out), target, dimension(:), optional :: work
-
4391 integer(int32), intent(out), optional :: olwork
-
4392 class(errors), intent(inout), optional, target :: err
-
4393 end subroutine
-
4394
-
4395 module subroutine mult_qr_vec(trans, a, tau, c, work, olwork, err)
-
4396 logical, intent(in) :: trans
-
4397 real(real64), intent(inout), dimension(:,:) :: a
-
4398 real(real64), intent(in), dimension(:) :: tau
-
4399 real(real64), intent(inout), dimension(:) :: c
-
4400 real(real64), intent(out), target, dimension(:), optional :: work
-
4401 integer(int32), intent(out), optional :: olwork
-
4402 class(errors), intent(inout), optional, target :: err
-
4403 end subroutine
-
4404
-
4405 module subroutine mult_qr_vec_cmplx(trans, a, tau, c, work, olwork, err)
-
4406 logical, intent(in) :: trans
-
4407 complex(real64), intent(inout), dimension(:,:) :: a
-
4408 complex(real64), intent(in), dimension(:) :: tau
-
4409 complex(real64), intent(inout), dimension(:) :: c
-
4410 complex(real64), intent(out), target, dimension(:), optional :: work
-
4411 integer(int32), intent(out), optional :: olwork
-
4412 class(errors), intent(inout), optional, target :: err
-
4413 end subroutine
-
4414
-
4415 module subroutine qr_rank1_update_dbl(q, r, u, v, work, err)
-
4416 real(real64), intent(inout), dimension(:,:) :: q, r
-
4417 real(real64), intent(inout), dimension(:) :: u, v
-
4418 real(real64), intent(out), target, optional, dimension(:) :: work
-
4419 class(errors), intent(inout), optional, target :: err
-
4420 end subroutine
-
4421
-
4422 module subroutine qr_rank1_update_cmplx(q, r, u, v, work, rwork, err)
-
4423 complex(real64), intent(inout), dimension(:,:) :: q, r
-
4424 complex(real64), intent(inout), dimension(:) :: u, v
-
4425 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4426 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
4319 module subroutine diag_mtx_mult_mtx_mix(lside, opb, alpha, a, b, beta, c, err)
+
4320 logical, intent(in) :: lside
+
4321 integer(int32), intent(in) :: opb
+
4322 complex(real64) :: alpha, beta
+
4323 real(real64), intent(in), dimension(:) :: a
+
4324 complex(real64), intent(in), dimension(:,:) :: b
+
4325 complex(real64), intent(inout), dimension(:,:) :: c
+
4326 class(errors), intent(inout), optional, target :: err
+
4327 end subroutine
+
4328
+
4329 module subroutine diag_mtx_mult_mtx2_mix(lside, alpha, a, b, err)
+
4330 logical, intent(in) :: lside
+
4331 complex(real64), intent(in) :: alpha
+
4332 real(real64), intent(in), dimension(:) :: a
+
4333 complex(real64), intent(inout), dimension(:,:) :: b
+
4334 class(errors), intent(inout), optional, target :: err
+
4335 end subroutine
+
4336
+
4337 module subroutine diag_mtx_sparse_mult(lside, alpha, a, b, err)
+
4338 logical, intent(in) :: lside
+
4339 real(real64), intent(in) :: alpha
+
4340 real(real64), intent(in), dimension(:) :: a
+
4341 type(csr_matrix), intent(inout) :: b
+
4342 class(errors), intent(inout), optional, target :: err
+
4343 end subroutine
+
4344
+
4345 pure module function trace_dbl(x) result(y)
+
4346 real(real64), intent(in), dimension(:,:) :: x
+
4347 real(real64) :: y
+
4348 end function
+
4349
+
4350 pure module function trace_cmplx(x) result(y)
+
4351 complex(real64), intent(in), dimension(:,:) :: x
+
4352 complex(real64) :: y
+
4353 end function
+
4354
+
4355 module function mtx_rank_dbl(a, tol, work, olwork, err) result(rnk)
+
4356 real(real64), intent(inout), dimension(:,:) :: a
+
4357 real(real64), intent(in), optional :: tol
+
4358 real(real64), intent(out), target, optional, dimension(:) :: work
+
4359 integer(int32), intent(out), optional :: olwork
+
4360 class(errors), intent(inout), optional, target :: err
+
4361 integer(int32) :: rnk
+
4362 end function
+
4363
+
4364 module function mtx_rank_cmplx(a, tol, work, olwork, rwork, err) result(rnk)
+
4365 complex(real64), intent(inout), dimension(:,:) :: a
+
4366 real(real64), intent(in), optional :: tol
+
4367 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4368 integer(int32), intent(out), optional :: olwork
+
4369 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
4370 class(errors), intent(inout), optional, target :: err
+
4371 integer(int32) :: rnk
+
4372 end function
+
4373
+
4374 module function det_dbl(a, iwork, err) result(x)
+
4375 real(real64), intent(inout), dimension(:,:) :: a
+
4376 integer(int32), intent(out), target, optional, dimension(:) :: iwork
+
4377 class(errors), intent(inout), optional, target :: err
+
4378 real(real64) :: x
+
4379 end function
+
4380
+
4381 module function det_cmplx(a, iwork, err) result(x)
+
4382 complex(real64), intent(inout), dimension(:,:) :: a
+
4383 integer(int32), intent(out), target, optional, dimension(:) :: iwork
+
4384 class(errors), intent(inout), optional, target :: err
+
4385 complex(real64) :: x
+
4386 end function
+
4387
+
4388 module subroutine swap_dbl(x, y, err)
+
4389 real(real64), intent(inout), dimension(:) :: x, y
+
4390 class(errors), intent(inout), optional, target :: err
+
4391 end subroutine
+
4392
+
4393 module subroutine swap_cmplx(x, y, err)
+
4394 complex(real64), intent(inout), dimension(:) :: x, y
+
4395 class(errors), intent(inout), optional, target :: err
+
4396 end subroutine
+
4397
+
4398 module subroutine recip_mult_array_dbl(a, x)
+
4399 real(real64), intent(in) :: a
+
4400 real(real64), intent(inout), dimension(:) :: x
+
4401 end subroutine
+
4402
+
4403 module subroutine tri_mtx_mult_dbl(upper, alpha, a, beta, b, err)
+
4404 logical, intent(in) :: upper
+
4405 real(real64), intent(in) :: alpha, beta
+
4406 real(real64), intent(in), dimension(:,:) :: a
+
4407 real(real64), intent(inout), dimension(:,:) :: b
+
4408 class(errors), intent(inout), optional, target :: err
+
4409 end subroutine
+
4410
+
4411 module subroutine tri_mtx_mult_cmplx(upper, alpha, a, beta, b, err)
+
4412 logical, intent(in) :: upper
+
4413 complex(real64), intent(in) :: alpha, beta
+
4414 complex(real64), intent(in), dimension(:,:) :: a
+
4415 complex(real64), intent(inout), dimension(:,:) :: b
+
4416 class(errors), intent(inout), optional, target :: err
+
4417 end subroutine
+
4418
+
4419 module subroutine band_mtx_vec_mult_dbl(trans, kl, ku, alpha, a, x, beta, &
+
4420 y, err)
+
4421 logical, intent(in) :: trans
+
4422 integer(int32), intent(in) :: kl, ku
+
4423 real(real64), intent(in) :: alpha, beta
+
4424 real(real64), intent(in), dimension(:,:) :: a
+
4425 real(real64), intent(in), dimension(:) :: x
+
4426 real(real64), intent(inout), dimension(:) :: y
4427 class(errors), intent(inout), optional, target :: err
4428 end subroutine
-
4429
-
4430 module subroutine cholesky_factor_dbl(a, upper, err)
-
4431 real(real64), intent(inout), dimension(:,:) :: a
-
4432 logical, intent(in), optional :: upper
-
4433 class(errors), intent(inout), optional, target :: err
-
4434 end subroutine
-
4435
-
4436 module subroutine cholesky_factor_cmplx(a, upper, err)
-
4437 complex(real64), intent(inout), dimension(:,:) :: a
-
4438 logical, intent(in), optional :: upper
-
4439 class(errors), intent(inout), optional, target :: err
-
4440 end subroutine
-
4441
-
4442 module subroutine cholesky_rank1_update_dbl(r, u, work, err)
-
4443 real(real64), intent(inout), dimension(:,:) :: r
-
4444 real(real64), intent(inout), dimension(:) :: u
-
4445 real(real64), intent(out), target, optional, dimension(:) :: work
-
4446 class(errors), intent(inout), optional, target :: err
-
4447 end subroutine
-
4448
-
4449 module subroutine cholesky_rank1_update_cmplx(r, u, work, err)
-
4450 complex(real64), intent(inout), dimension(:,:) :: r
-
4451 complex(real64), intent(inout), dimension(:) :: u
-
4452 real(real64), intent(out), target, optional, dimension(:) :: work
-
4453 class(errors), intent(inout), optional, target :: err
-
4454 end subroutine
-
4455
-
4456 module subroutine cholesky_rank1_downdate_dbl(r, u, work, err)
-
4457 real(real64), intent(inout), dimension(:,:) :: r
-
4458 real(real64), intent(inout), dimension(:) :: u
-
4459 real(real64), intent(out), target, optional, dimension(:) :: work
-
4460 class(errors), intent(inout), optional, target :: err
-
4461 end subroutine
-
4462
-
4463 module subroutine cholesky_rank1_downdate_cmplx(r, u, work, err)
-
4464 complex(real64), intent(inout), dimension(:,:) :: r
-
4465 complex(real64), intent(inout), dimension(:) :: u
-
4466 real(real64), intent(out), target, optional, dimension(:) :: work
-
4467 class(errors), intent(inout), optional, target :: err
-
4468 end subroutine
-
4469
-
4470 module subroutine rz_factor_dbl(a, tau, work, olwork, err)
-
4471 real(real64), intent(inout), dimension(:,:) :: a
-
4472 real(real64), intent(out), dimension(:) :: tau
-
4473 real(real64), intent(out), target, optional, dimension(:) :: work
-
4474 integer(int32), intent(out), optional :: olwork
-
4475 class(errors), intent(inout), optional, target :: err
-
4476 end subroutine
-
4477
-
4478 module subroutine rz_factor_cmplx(a, tau, work, olwork, err)
-
4479 complex(real64), intent(inout), dimension(:,:) :: a
-
4480 complex(real64), intent(out), dimension(:) :: tau
-
4481 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4482 integer(int32), intent(out), optional :: olwork
-
4483 class(errors), intent(inout), optional, target :: err
-
4484 end subroutine
-
4485
-
4486 module subroutine mult_rz_mtx(lside, trans, l, a, tau, c, work, olwork, err)
-
4487 logical, intent(in) :: lside, trans
-
4488 integer(int32), intent(in) :: l
-
4489 real(real64), intent(inout), dimension(:,:) :: a, c
-
4490 real(real64), intent(in), dimension(:) :: tau
-
4491 real(real64), intent(out), target, optional, dimension(:) :: work
-
4492 integer(int32), intent(out), optional :: olwork
-
4493 class(errors), intent(inout), optional, target :: err
-
4494 end subroutine
-
4495
-
4496 module subroutine mult_rz_mtx_cmplx(lside, trans, l, a, tau, c, work, olwork, err)
-
4497 logical, intent(in) :: lside, trans
-
4498 integer(int32), intent(in) :: l
-
4499 complex(real64), intent(inout), dimension(:,:) :: a, c
-
4500 complex(real64), intent(in), dimension(:) :: tau
-
4501 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4502 integer(int32), intent(out), optional :: olwork
-
4503 class(errors), intent(inout), optional, target :: err
-
4504 end subroutine
-
4505
-
4506 module subroutine mult_rz_vec(trans, l, a, tau, c, work, olwork, err)
-
4507 logical, intent(in) :: trans
-
4508 integer(int32), intent(in) :: l
-
4509 real(real64), intent(inout), dimension(:,:) :: a
-
4510 real(real64), intent(in), dimension(:) :: tau
-
4511 real(real64), intent(inout), dimension(:) :: c
-
4512 real(real64), intent(out), target, optional, dimension(:) :: work
-
4513 integer(int32), intent(out), optional :: olwork
-
4514 class(errors), intent(inout), optional, target :: err
-
4515 end subroutine
-
4516
-
4517 module subroutine mult_rz_vec_cmplx(trans, l, a, tau, c, work, olwork, err)
-
4518 logical, intent(in) :: trans
-
4519 integer(int32), intent(in) :: l
-
4520 complex(real64), intent(inout), dimension(:,:) :: a
-
4521 complex(real64), intent(in), dimension(:) :: tau
-
4522 complex(real64), intent(inout), dimension(:) :: c
-
4523 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4524 integer(int32), intent(out), optional :: olwork
-
4525 class(errors), intent(inout), optional, target :: err
-
4526 end subroutine
-
4527
-
4528 module subroutine svd_dbl(a, s, u, vt, work, olwork, err)
-
4529 real(real64), intent(inout), dimension(:,:) :: a
-
4530 real(real64), intent(out), dimension(:) :: s
-
4531 real(real64), intent(out), optional, dimension(:,:) :: u, vt
-
4532 real(real64), intent(out), target, optional, dimension(:) :: work
-
4533 integer(int32), intent(out), optional :: olwork
-
4534 class(errors), intent(inout), optional, target :: err
-
4535 end subroutine
-
4536
-
4537 module subroutine svd_cmplx(a, s, u, vt, work, olwork, rwork, err)
-
4538 complex(real64), intent(inout), dimension(:,:) :: a
-
4539 real(real64), intent(out), dimension(:) :: s
-
4540 complex(real64), intent(out), optional, dimension(:,:) :: u, vt
-
4541 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4542 integer(int32), intent(out), optional :: olwork
-
4543 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
4429
+
4430 module subroutine band_mtx_vec_mult_cmplx(trans, kl, ku, alpha, a, x, &
+
4431 beta, y, err)
+
4432 integer(int32), intent(in) :: trans
+
4433 integer(int32), intent(in) :: kl, ku
+
4434 complex(real64), intent(in) :: alpha, beta
+
4435 complex(real64), intent(in), dimension(:,:) :: a
+
4436 complex(real64), intent(in), dimension(:) :: x
+
4437 complex(real64), intent(inout), dimension(:) :: y
+
4438 class(errors), intent(inout), optional, target :: err
+
4439 end subroutine
+
4440
+
4441 module subroutine band_to_full_mtx_dbl(kl, ku, b, f, err)
+
4442 integer(int32), intent(in) :: kl, ku
+
4443 real(real64), intent(in), dimension(:,:) :: b
+
4444 real(real64), intent(out), dimension(:,:) :: f
+
4445 class(errors), intent(inout), optional, target :: err
+
4446 end subroutine
+
4447
+
4448 module subroutine band_to_full_mtx_cmplx(kl, ku, b, f, err)
+
4449 integer(int32), intent(in) :: kl, ku
+
4450 complex(real64), intent(in), dimension(:,:) :: b
+
4451 complex(real64), intent(out), dimension(:,:) :: f
+
4452 class(errors), intent(inout), optional, target :: err
+
4453 end subroutine
+
4454
+
4455 module subroutine band_diag_mtx_mult_dbl(left, m, kl, ku, alpha, a, b, err)
+
4456 logical, intent(in) :: left
+
4457 integer(int32), intent(in) :: m, kl, ku
+
4458 real(real64), intent(in) :: alpha
+
4459 real(real64), intent(inout), dimension(:,:) :: a
+
4460 real(real64), intent(in), dimension(:) :: b
+
4461 class(errors), intent(inout), optional, target :: err
+
4462 end subroutine
+
4463
+
4464 module subroutine band_diag_mtx_mult_cmplx(left, m, kl, ku, alpha, a, b, err)
+
4465 logical, intent(in) :: left
+
4466 integer(int32), intent(in) :: m, kl, ku
+
4467 complex(real64), intent(in) :: alpha
+
4468 complex(real64), intent(inout), dimension(:,:) :: a
+
4469 complex(real64), intent(in), dimension(:) :: b
+
4470 class(errors), intent(inout), optional, target :: err
+
4471 end subroutine
+
4472
+
4473 module subroutine banded_to_dense_dbl(m, kl, ku, a, x, err)
+
4474 integer(int32), intent(in) :: m, kl, ku
+
4475 real(real64), intent(in), dimension(:,:) :: a
+
4476 real(real64), intent(out), dimension(:,:) :: x
+
4477 class(errors), intent(inout), optional, target :: err
+
4478 end subroutine
+
4479
+
4480 module subroutine banded_to_dense_cmplx(m, kl, ku, a, x, err)
+
4481 integer(int32), intent(in) :: m, kl, ku
+
4482 complex(real64), intent(in), dimension(:,:) :: a
+
4483 complex(real64), intent(out), dimension(:,:) :: x
+
4484 class(errors), intent(inout), optional, target :: err
+
4485 end subroutine
+
4486
+
4487 module subroutine dense_to_banded_dbl(a, kl, ku, x, err)
+
4488 real(real64), intent(in), dimension(:,:) :: a
+
4489 integer(int32), intent(in) :: kl, ku
+
4490 real(real64), intent(out), dimension(:,:) :: x
+
4491 class(errors), intent(inout), optional, target :: err
+
4492 end subroutine
+
4493
+
4494 module subroutine dense_to_banded_cmplx(a, kl, ku, x, err)
+
4495 complex(real64), intent(in), dimension(:,:) :: a
+
4496 integer(int32), intent(in) :: kl, ku
+
4497 complex(real64), intent(out), dimension(:,:) :: x
+
4498 class(errors), intent(inout), optional, target :: err
+
4499 end subroutine
+
4500
+
4501 module subroutine extract_diagonal_dbl(a, diag, err)
+
4502 ! Arguments
+
4503 real(real64), intent(in), dimension(:,:) :: a
+
4504 real(real64), intent(out), dimension(:) :: diag
+
4505 class(errors), intent(inout), optional, target :: err
+
4506 end subroutine
+
4507
+
4508 module subroutine extract_diagonal_cmplx(a, diag, err)
+
4509 ! Arguments
+
4510 complex(real64), intent(in), dimension(:,:) :: a
+
4511 complex(real64), intent(out), dimension(:) :: diag
+
4512 class(errors), intent(inout), optional, target :: err
+
4513 end subroutine
+
4514end interface
+
4515
+
4516! ******************************************************************************
+
4517! LINALG_FACTOR.F90
+
4518! ------------------------------------------------------------------------------
+
4519interface
+
4520 module subroutine lu_factor_dbl(a, ipvt, err)
+
4521 real(real64), intent(inout), dimension(:,:) :: a
+
4522 integer(int32), intent(out), dimension(:) :: ipvt
+
4523 class(errors), intent(inout), optional, target :: err
+
4524 end subroutine
+
4525
+
4526 module subroutine lu_factor_cmplx(a, ipvt, err)
+
4527 complex(real64), intent(inout), dimension(:,:) :: a
+
4528 integer(int32), intent(out), dimension(:) :: ipvt
+
4529 class(errors), intent(inout), optional, target :: err
+
4530 end subroutine
+
4531
+
4532 module subroutine form_lu_all(lu, ipvt, u, p, err)
+
4533 real(real64), intent(inout), dimension(:,:) :: lu
+
4534 integer(int32), intent(in), dimension(:) :: ipvt
+
4535 real(real64), intent(out), dimension(:,:) :: u, p
+
4536 class(errors), intent(inout), optional, target :: err
+
4537 end subroutine
+
4538
+
4539 module subroutine form_lu_all_cmplx(lu, ipvt, u, p, err)
+
4540 complex(real64), intent(inout), dimension(:,:) :: lu
+
4541 integer(int32), intent(in), dimension(:) :: ipvt
+
4542 complex(real64), intent(out), dimension(:,:) :: u
+
4543 real(real64), intent(out), dimension(:,:) :: p
4544 class(errors), intent(inout), optional, target :: err
4545 end subroutine
-
4546
-
4547 module subroutine lq_factor_no_pivot(a, tau, work, olwork, err)
-
4548 real(real64), intent(inout), dimension(:,:) :: a
-
4549 real(real64), intent(out), dimension(:) :: tau
-
4550 real(real64), intent(out), target, dimension(:), optional :: work
-
4551 integer(int32), intent(out), optional :: olwork
-
4552 class(errors), intent(inout), optional, target :: err
-
4553 end subroutine
-
4554
-
4555 module subroutine lq_factor_no_pivot_cmplx(a, tau, work, olwork, err)
-
4556 complex(real64), intent(inout), dimension(:,:) :: a
-
4557 complex(real64), intent(out), dimension(:) :: tau
-
4558 complex(real64), intent(out), target, dimension(:), optional :: work
-
4559 integer(int32), intent(out), optional :: olwork
-
4560 class(errors), intent(inout), optional, target :: err
-
4561 end subroutine
-
4562
-
4563 module subroutine form_lq_no_pivot(l, tau, q, work, olwork, err)
-
4564 real(real64), intent(inout), dimension(:,:) :: l
-
4565 real(real64), intent(in), dimension(:) :: tau
-
4566 real(real64), intent(out), dimension(:,:) :: q
-
4567 real(real64), intent(out), target, dimension(:), optional :: work
-
4568 integer(int32), intent(out), optional :: olwork
-
4569 class(errors), intent(inout), optional, target :: err
-
4570 end subroutine
-
4571
-
4572 module subroutine form_lq_no_pivot_cmplx(l, tau, q, work, olwork, err)
-
4573 complex(real64), intent(inout), dimension(:,:) :: l
-
4574 complex(real64), intent(in), dimension(:) :: tau
-
4575 complex(real64), intent(out), dimension(:,:) :: q
-
4576 complex(real64), intent(out), target, dimension(:), optional :: work
-
4577 integer(int32), intent(out), optional :: olwork
-
4578 class(errors), intent(inout), optional, target :: err
-
4579 end subroutine
-
4580
-
4581 module subroutine mult_lq_mtx(lside, trans, a, tau, c, work, olwork, err)
-
4582 logical, intent(in) :: lside, trans
-
4583 real(real64), intent(in), dimension(:,:) :: a
-
4584 real(real64), intent(in), dimension(:) :: tau
-
4585 real(real64), intent(inout), dimension(:,:) :: c
-
4586 real(real64), intent(out), target, dimension(:), optional :: work
-
4587 integer(int32), intent(out), optional :: olwork
-
4588 class(errors), intent(inout), optional, target :: err
-
4589 end subroutine
-
4590
-
4591 module subroutine mult_lq_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
-
4592 logical, intent(in) :: lside, trans
-
4593 complex(real64), intent(in), dimension(:,:) :: a
-
4594 complex(real64), intent(in), dimension(:) :: tau
-
4595 complex(real64), intent(inout), dimension(:,:) :: c
-
4596 complex(real64), intent(out), target, dimension(:), optional :: work
-
4597 integer(int32), intent(out), optional :: olwork
-
4598 class(errors), intent(inout), optional, target :: err
-
4599 end subroutine
-
4600
-
4601 module subroutine mult_lq_vec(trans, a, tau, c, work, olwork, err)
-
4602 logical, intent(in) :: trans
-
4603 real(real64), intent(in), dimension(:,:) :: a
-
4604 real(real64), intent(in), dimension(:) :: tau
-
4605 real(real64), intent(inout), dimension(:) :: c
-
4606 real(real64), intent(out), target, dimension(:), optional :: work
-
4607 integer(int32), intent(out), optional :: olwork
-
4608 class(errors), intent(inout), optional, target :: err
-
4609 end subroutine
-
4610
-
4611 module subroutine mult_lq_vec_cmplx(trans, a, tau, c, work, olwork, err)
-
4612 logical, intent(in) :: trans
-
4613 complex(real64), intent(in), dimension(:,:) :: a
-
4614 complex(real64), intent(in), dimension(:) :: tau
-
4615 complex(real64), intent(inout), dimension(:) :: c
-
4616 complex(real64), intent(out), target, dimension(:), optional :: work
-
4617 integer(int32), intent(out), optional :: olwork
-
4618 class(errors), intent(inout), optional, target :: err
-
4619 end subroutine
-
4620end interface
-
4621
-
4622! ******************************************************************************
-
4623! LINALG_SOLVE.F90
-
4624! ------------------------------------------------------------------------------
-
4625interface
-
4626 module subroutine solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b, err)
-
4627 logical, intent(in) :: lside, upper, trans, nounit
-
4628 real(real64), intent(in) :: alpha
-
4629 real(real64), intent(in), dimension(:,:) :: a
-
4630 real(real64), intent(inout), dimension(:,:) :: b
-
4631 class(errors), intent(inout), optional, target :: err
-
4632 end subroutine
-
4633
-
4634 module subroutine solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b, err)
-
4635 logical, intent(in) :: lside, upper, trans, nounit
-
4636 complex(real64), intent(in) :: alpha
-
4637 complex(real64), intent(in), dimension(:,:) :: a
-
4638 complex(real64), intent(inout), dimension(:,:) :: b
+
4546
+
4547 module subroutine form_lu_only(lu, u, err)
+
4548 real(real64), intent(inout), dimension(:,:) :: lu
+
4549 real(real64), intent(out), dimension(:,:) :: u
+
4550 class(errors), intent(inout), optional, target :: err
+
4551 end subroutine
+
4552
+
4553 module subroutine form_lu_only_cmplx(lu, u, err)
+
4554 complex(real64), intent(inout), dimension(:,:) :: lu
+
4555 complex(real64), intent(out), dimension(:,:) :: u
+
4556 class(errors), intent(inout), optional, target :: err
+
4557 end subroutine
+
4558
+
4559 module subroutine qr_factor_no_pivot(a, tau, work, olwork, err)
+
4560 real(real64), intent(inout), dimension(:,:) :: a
+
4561 real(real64), intent(out), dimension(:) :: tau
+
4562 real(real64), intent(out), target, dimension(:), optional :: work
+
4563 integer(int32), intent(out), optional :: olwork
+
4564 class(errors), intent(inout), optional, target :: err
+
4565 end subroutine
+
4566
+
4567 module subroutine qr_factor_no_pivot_cmplx(a, tau, work, olwork, err)
+
4568 complex(real64), intent(inout), dimension(:,:) :: a
+
4569 complex(real64), intent(out), dimension(:) :: tau
+
4570 complex(real64), intent(out), target, dimension(:), optional :: work
+
4571 integer(int32), intent(out), optional :: olwork
+
4572 class(errors), intent(inout), optional, target :: err
+
4573 end subroutine
+
4574
+
4575 module subroutine qr_factor_pivot(a, tau, jpvt, work, olwork, err)
+
4576 real(real64), intent(inout), dimension(:,:) :: a
+
4577 real(real64), intent(out), dimension(:) :: tau
+
4578 integer(int32), intent(inout), dimension(:) :: jpvt
+
4579 real(real64), intent(out), target, dimension(:), optional :: work
+
4580 integer(int32), intent(out), optional :: olwork
+
4581 class(errors), intent(inout), optional, target :: err
+
4582 end subroutine
+
4583
+
4584 module subroutine qr_factor_pivot_cmplx(a, tau, jpvt, work, olwork, rwork, &
+
4585 err)
+
4586 complex(real64), intent(inout), dimension(:,:) :: a
+
4587 complex(real64), intent(out), dimension(:) :: tau
+
4588 integer(int32), intent(inout), dimension(:) :: jpvt
+
4589 complex(real64), intent(out), target, dimension(:), optional :: work
+
4590 integer(int32), intent(out), optional :: olwork
+
4591 real(real64), intent(out), target, dimension(:), optional :: rwork
+
4592 class(errors), intent(inout), optional, target :: err
+
4593 end subroutine
+
4594
+
4595 module subroutine form_qr_no_pivot(r, tau, q, work, olwork, err)
+
4596 real(real64), intent(inout), dimension(:,:) :: r
+
4597 real(real64), intent(in), dimension(:) :: tau
+
4598 real(real64), intent(out), dimension(:,:) :: q
+
4599 real(real64), intent(out), target, dimension(:), optional :: work
+
4600 integer(int32), intent(out), optional :: olwork
+
4601 class(errors), intent(inout), optional, target :: err
+
4602 end subroutine
+
4603
+
4604 module subroutine form_qr_no_pivot_cmplx(r, tau, q, work, olwork, err)
+
4605 complex(real64), intent(inout), dimension(:,:) :: r
+
4606 complex(real64), intent(in), dimension(:) :: tau
+
4607 complex(real64), intent(out), dimension(:,:) :: q
+
4608 complex(real64), intent(out), target, dimension(:), optional :: work
+
4609 integer(int32), intent(out), optional :: olwork
+
4610 class(errors), intent(inout), optional, target :: err
+
4611 end subroutine
+
4612
+
4613 module subroutine form_qr_pivot(r, tau, pvt, q, p, work, olwork, err)
+
4614 real(real64), intent(inout), dimension(:,:) :: r
+
4615 real(real64), intent(in), dimension(:) :: tau
+
4616 integer(int32), intent(in), dimension(:) :: pvt
+
4617 real(real64), intent(out), dimension(:,:) :: q, p
+
4618 real(real64), intent(out), target, dimension(:), optional :: work
+
4619 integer(int32), intent(out), optional :: olwork
+
4620 class(errors), intent(inout), optional, target :: err
+
4621 end subroutine
+
4622
+
4623 module subroutine form_qr_pivot_cmplx(r, tau, pvt, q, p, work, olwork, err)
+
4624 complex(real64), intent(inout), dimension(:,:) :: r
+
4625 complex(real64), intent(in), dimension(:) :: tau
+
4626 integer(int32), intent(in), dimension(:) :: pvt
+
4627 complex(real64), intent(out), dimension(:,:) :: q, p
+
4628 complex(real64), intent(out), target, dimension(:), optional :: work
+
4629 integer(int32), intent(out), optional :: olwork
+
4630 class(errors), intent(inout), optional, target :: err
+
4631 end subroutine
+
4632
+
4633 module subroutine mult_qr_mtx(lside, trans, a, tau, c, work, olwork, err)
+
4634 logical, intent(in) :: lside, trans
+
4635 real(real64), intent(in), dimension(:) :: tau
+
4636 real(real64), intent(inout), dimension(:,:) :: a, c
+
4637 real(real64), intent(out), target, dimension(:), optional :: work
+
4638 integer(int32), intent(out), optional :: olwork
4639 class(errors), intent(inout), optional, target :: err
4640 end subroutine
-
4641
-
4642 module subroutine solve_tri_vec(upper, trans, nounit, a, x, err)
-
4643 logical, intent(in) :: upper, trans, nounit
-
4644 real(real64), intent(in), dimension(:,:) :: a
-
4645 real(real64), intent(inout), dimension(:) :: x
-
4646 class(errors), intent(inout), optional, target :: err
-
4647 end subroutine
-
4648
-
4649 module subroutine solve_tri_vec_cmplx(upper, trans, nounit, a, x, err)
-
4650 logical, intent(in) :: upper, trans, nounit
-
4651 complex(real64), intent(in), dimension(:,:) :: a
-
4652 complex(real64), intent(inout), dimension(:) :: x
-
4653 class(errors), intent(inout), optional, target :: err
-
4654 end subroutine
-
4655
-
4656 module subroutine solve_lu_mtx(a, ipvt, b, err)
-
4657 real(real64), intent(in), dimension(:,:) :: a
-
4658 integer(int32), intent(in), dimension(:) :: ipvt
-
4659 real(real64), intent(inout), dimension(:,:) :: b
-
4660 class(errors), intent(inout), optional, target :: err
-
4661 end subroutine
-
4662
-
4663 module subroutine solve_lu_mtx_cmplx(a, ipvt, b, err)
-
4664 complex(real64), intent(in), dimension(:,:) :: a
-
4665 integer(int32), intent(in), dimension(:) :: ipvt
-
4666 complex(real64), intent(inout), dimension(:,:) :: b
-
4667 class(errors), intent(inout), optional, target :: err
-
4668 end subroutine
-
4669
-
4670 module subroutine solve_lu_vec(a, ipvt, b, err)
-
4671 real(real64), intent(in), dimension(:,:) :: a
-
4672 integer(int32), intent(in), dimension(:) :: ipvt
-
4673 real(real64), intent(inout), dimension(:) :: b
-
4674 class(errors), intent(inout), optional, target :: err
-
4675 end subroutine
-
4676
-
4677 module subroutine solve_lu_vec_cmplx(a, ipvt, b, err)
-
4678 complex(real64), intent(in), dimension(:,:) :: a
-
4679 integer(int32), intent(in), dimension(:) :: ipvt
-
4680 complex(real64), intent(inout), dimension(:) :: b
-
4681 class(errors), intent(inout), optional, target :: err
-
4682 end subroutine
-
4683
-
4684 module subroutine solve_qr_no_pivot_mtx(a, tau, b, work, olwork, err)
-
4685 real(real64), intent(inout), dimension(:,:) :: a, b
-
4686 real(real64), intent(in), dimension(:) :: tau
-
4687 real(real64), intent(out), target, optional, dimension(:) :: work
-
4688 integer(int32), intent(out), optional :: olwork
+
4641
+
4642 module subroutine mult_qr_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
+
4643 logical, intent(in) :: lside, trans
+
4644 complex(real64), intent(in), dimension(:) :: tau
+
4645 complex(real64), intent(inout), dimension(:,:) :: a, c
+
4646 complex(real64), intent(out), target, dimension(:), optional :: work
+
4647 integer(int32), intent(out), optional :: olwork
+
4648 class(errors), intent(inout), optional, target :: err
+
4649 end subroutine
+
4650
+
4651 module subroutine mult_qr_vec(trans, a, tau, c, work, olwork, err)
+
4652 logical, intent(in) :: trans
+
4653 real(real64), intent(inout), dimension(:,:) :: a
+
4654 real(real64), intent(in), dimension(:) :: tau
+
4655 real(real64), intent(inout), dimension(:) :: c
+
4656 real(real64), intent(out), target, dimension(:), optional :: work
+
4657 integer(int32), intent(out), optional :: olwork
+
4658 class(errors), intent(inout), optional, target :: err
+
4659 end subroutine
+
4660
+
4661 module subroutine mult_qr_vec_cmplx(trans, a, tau, c, work, olwork, err)
+
4662 logical, intent(in) :: trans
+
4663 complex(real64), intent(inout), dimension(:,:) :: a
+
4664 complex(real64), intent(in), dimension(:) :: tau
+
4665 complex(real64), intent(inout), dimension(:) :: c
+
4666 complex(real64), intent(out), target, dimension(:), optional :: work
+
4667 integer(int32), intent(out), optional :: olwork
+
4668 class(errors), intent(inout), optional, target :: err
+
4669 end subroutine
+
4670
+
4671 module subroutine qr_rank1_update_dbl(q, r, u, v, work, err)
+
4672 real(real64), intent(inout), dimension(:,:) :: q, r
+
4673 real(real64), intent(inout), dimension(:) :: u, v
+
4674 real(real64), intent(out), target, optional, dimension(:) :: work
+
4675 class(errors), intent(inout), optional, target :: err
+
4676 end subroutine
+
4677
+
4678 module subroutine qr_rank1_update_cmplx(q, r, u, v, work, rwork, err)
+
4679 complex(real64), intent(inout), dimension(:,:) :: q, r
+
4680 complex(real64), intent(inout), dimension(:) :: u, v
+
4681 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4682 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
4683 class(errors), intent(inout), optional, target :: err
+
4684 end subroutine
+
4685
+
4686 module subroutine cholesky_factor_dbl(a, upper, err)
+
4687 real(real64), intent(inout), dimension(:,:) :: a
+
4688 logical, intent(in), optional :: upper
4689 class(errors), intent(inout), optional, target :: err
4690 end subroutine
4691
-
4692 module subroutine solve_qr_no_pivot_mtx_cmplx(a, tau, b, work, olwork, err)
-
4693 complex(real64), intent(inout), dimension(:,:) :: a, b
-
4694 complex(real64), intent(in), dimension(:) :: tau
-
4695 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4696 integer(int32), intent(out), optional :: olwork
-
4697 class(errors), intent(inout), optional, target :: err
-
4698 end subroutine
-
4699
-
4700 module subroutine solve_qr_no_pivot_vec(a, tau, b, work, olwork, err)
-
4701 real(real64), intent(inout), dimension(:,:) :: a
-
4702 real(real64), intent(in), dimension(:) :: tau
-
4703 real(real64), intent(inout), dimension(:) :: b
-
4704 real(real64), intent(out), target, optional, dimension(:) :: work
-
4705 integer(int32), intent(out), optional :: olwork
-
4706 class(errors), intent(inout), optional, target :: err
-
4707 end subroutine
-
4708
-
4709 module subroutine solve_qr_no_pivot_vec_cmplx(a, tau, b, work, olwork, err)
-
4710 complex(real64), intent(inout), dimension(:,:) :: a
-
4711 complex(real64), intent(in), dimension(:) :: tau
-
4712 complex(real64), intent(inout), dimension(:) :: b
-
4713 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4714 integer(int32), intent(out), optional :: olwork
-
4715 class(errors), intent(inout), optional, target :: err
-
4716 end subroutine
-
4717
-
4718 module subroutine solve_qr_pivot_mtx(a, tau, jpvt, b, work, olwork, err)
-
4719 real(real64), intent(inout), dimension(:,:) :: a
-
4720 real(real64), intent(in), dimension(:) :: tau
-
4721 integer(int32), intent(in), dimension(:) :: jpvt
-
4722 real(real64), intent(inout), dimension(:,:) :: b
-
4723 real(real64), intent(out), target, optional, dimension(:) :: work
-
4724 integer(int32), intent(out), optional :: olwork
-
4725 class(errors), intent(inout), optional, target :: err
-
4726 end subroutine
-
4727
-
4728 module subroutine solve_qr_pivot_mtx_cmplx(a, tau, jpvt, b, work, olwork, err)
-
4729 complex(real64), intent(inout), dimension(:,:) :: a
-
4730 complex(real64), intent(in), dimension(:) :: tau
-
4731 integer(int32), intent(in), dimension(:) :: jpvt
-
4732 complex(real64), intent(inout), dimension(:,:) :: b
-
4733 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4734 integer(int32), intent(out), optional :: olwork
-
4735 class(errors), intent(inout), optional, target :: err
-
4736 end subroutine
-
4737
-
4738 module subroutine solve_qr_pivot_vec(a, tau, jpvt, b, work, olwork, err)
-
4739 real(real64), intent(inout), dimension(:,:) :: a
-
4740 real(real64), intent(in), dimension(:) :: tau
-
4741 integer(int32), intent(in), dimension(:) :: jpvt
-
4742 real(real64), intent(inout), dimension(:) :: b
-
4743 real(real64), intent(out), target, optional, dimension(:) :: work
-
4744 integer(int32), intent(out), optional :: olwork
-
4745 class(errors), intent(inout), optional, target :: err
-
4746 end subroutine
-
4747
-
4748 module subroutine solve_qr_pivot_vec_cmplx(a, tau, jpvt, b, work, olwork, err)
-
4749 complex(real64), intent(inout), dimension(:,:) :: a
-
4750 complex(real64), intent(in), dimension(:) :: tau
-
4751 integer(int32), intent(in), dimension(:) :: jpvt
-
4752 complex(real64), intent(inout), dimension(:) :: b
-
4753 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4754 integer(int32), intent(out), optional :: olwork
-
4755 class(errors), intent(inout), optional, target :: err
-
4756 end subroutine
-
4757
-
4758 module subroutine solve_cholesky_mtx(upper, a, b, err)
-
4759 logical, intent(in) :: upper
-
4760 real(real64), intent(in), dimension(:,:) :: a
-
4761 real(real64), intent(inout), dimension(:,:) :: b
-
4762 class(errors), intent(inout), optional, target :: err
-
4763 end subroutine
-
4764
-
4765 module subroutine solve_cholesky_mtx_cmplx(upper, a, b, err)
-
4766 logical, intent(in) :: upper
-
4767 complex(real64), intent(in), dimension(:,:) :: a
-
4768 complex(real64), intent(inout), dimension(:,:) :: b
-
4769 class(errors), intent(inout), optional, target :: err
-
4770 end subroutine
-
4771
-
4772 module subroutine solve_cholesky_vec(upper, a, b, err)
-
4773 logical, intent(in) :: upper
-
4774 real(real64), intent(in), dimension(:,:) :: a
-
4775 real(real64), intent(inout), dimension(:) :: b
-
4776 class(errors), intent(inout), optional, target :: err
-
4777 end subroutine
-
4778
-
4779 module subroutine solve_cholesky_vec_cmplx(upper, a, b, err)
-
4780 logical, intent(in) :: upper
-
4781 complex(real64), intent(in), dimension(:,:) :: a
-
4782 complex(real64), intent(inout), dimension(:) :: b
-
4783 class(errors), intent(inout), optional, target :: err
-
4784 end subroutine
-
4785
-
4786 module subroutine solve_least_squares_mtx(a, b, work, olwork, err)
-
4787 real(real64), intent(inout), dimension(:,:) :: a, b
+
4692 module subroutine cholesky_factor_cmplx(a, upper, err)
+
4693 complex(real64), intent(inout), dimension(:,:) :: a
+
4694 logical, intent(in), optional :: upper
+
4695 class(errors), intent(inout), optional, target :: err
+
4696 end subroutine
+
4697
+
4698 module subroutine cholesky_rank1_update_dbl(r, u, work, err)
+
4699 real(real64), intent(inout), dimension(:,:) :: r
+
4700 real(real64), intent(inout), dimension(:) :: u
+
4701 real(real64), intent(out), target, optional, dimension(:) :: work
+
4702 class(errors), intent(inout), optional, target :: err
+
4703 end subroutine
+
4704
+
4705 module subroutine cholesky_rank1_update_cmplx(r, u, work, err)
+
4706 complex(real64), intent(inout), dimension(:,:) :: r
+
4707 complex(real64), intent(inout), dimension(:) :: u
+
4708 real(real64), intent(out), target, optional, dimension(:) :: work
+
4709 class(errors), intent(inout), optional, target :: err
+
4710 end subroutine
+
4711
+
4712 module subroutine cholesky_rank1_downdate_dbl(r, u, work, err)
+
4713 real(real64), intent(inout), dimension(:,:) :: r
+
4714 real(real64), intent(inout), dimension(:) :: u
+
4715 real(real64), intent(out), target, optional, dimension(:) :: work
+
4716 class(errors), intent(inout), optional, target :: err
+
4717 end subroutine
+
4718
+
4719 module subroutine cholesky_rank1_downdate_cmplx(r, u, work, err)
+
4720 complex(real64), intent(inout), dimension(:,:) :: r
+
4721 complex(real64), intent(inout), dimension(:) :: u
+
4722 real(real64), intent(out), target, optional, dimension(:) :: work
+
4723 class(errors), intent(inout), optional, target :: err
+
4724 end subroutine
+
4725
+
4726 module subroutine rz_factor_dbl(a, tau, work, olwork, err)
+
4727 real(real64), intent(inout), dimension(:,:) :: a
+
4728 real(real64), intent(out), dimension(:) :: tau
+
4729 real(real64), intent(out), target, optional, dimension(:) :: work
+
4730 integer(int32), intent(out), optional :: olwork
+
4731 class(errors), intent(inout), optional, target :: err
+
4732 end subroutine
+
4733
+
4734 module subroutine rz_factor_cmplx(a, tau, work, olwork, err)
+
4735 complex(real64), intent(inout), dimension(:,:) :: a
+
4736 complex(real64), intent(out), dimension(:) :: tau
+
4737 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4738 integer(int32), intent(out), optional :: olwork
+
4739 class(errors), intent(inout), optional, target :: err
+
4740 end subroutine
+
4741
+
4742 module subroutine mult_rz_mtx(lside, trans, l, a, tau, c, work, olwork, err)
+
4743 logical, intent(in) :: lside, trans
+
4744 integer(int32), intent(in) :: l
+
4745 real(real64), intent(inout), dimension(:,:) :: a, c
+
4746 real(real64), intent(in), dimension(:) :: tau
+
4747 real(real64), intent(out), target, optional, dimension(:) :: work
+
4748 integer(int32), intent(out), optional :: olwork
+
4749 class(errors), intent(inout), optional, target :: err
+
4750 end subroutine
+
4751
+
4752 module subroutine mult_rz_mtx_cmplx(lside, trans, l, a, tau, c, work, olwork, err)
+
4753 logical, intent(in) :: lside, trans
+
4754 integer(int32), intent(in) :: l
+
4755 complex(real64), intent(inout), dimension(:,:) :: a, c
+
4756 complex(real64), intent(in), dimension(:) :: tau
+
4757 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4758 integer(int32), intent(out), optional :: olwork
+
4759 class(errors), intent(inout), optional, target :: err
+
4760 end subroutine
+
4761
+
4762 module subroutine mult_rz_vec(trans, l, a, tau, c, work, olwork, err)
+
4763 logical, intent(in) :: trans
+
4764 integer(int32), intent(in) :: l
+
4765 real(real64), intent(inout), dimension(:,:) :: a
+
4766 real(real64), intent(in), dimension(:) :: tau
+
4767 real(real64), intent(inout), dimension(:) :: c
+
4768 real(real64), intent(out), target, optional, dimension(:) :: work
+
4769 integer(int32), intent(out), optional :: olwork
+
4770 class(errors), intent(inout), optional, target :: err
+
4771 end subroutine
+
4772
+
4773 module subroutine mult_rz_vec_cmplx(trans, l, a, tau, c, work, olwork, err)
+
4774 logical, intent(in) :: trans
+
4775 integer(int32), intent(in) :: l
+
4776 complex(real64), intent(inout), dimension(:,:) :: a
+
4777 complex(real64), intent(in), dimension(:) :: tau
+
4778 complex(real64), intent(inout), dimension(:) :: c
+
4779 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4780 integer(int32), intent(out), optional :: olwork
+
4781 class(errors), intent(inout), optional, target :: err
+
4782 end subroutine
+
4783
+
4784 module subroutine svd_dbl(a, s, u, vt, work, olwork, err)
+
4785 real(real64), intent(inout), dimension(:,:) :: a
+
4786 real(real64), intent(out), dimension(:) :: s
+
4787 real(real64), intent(out), optional, dimension(:,:) :: u, vt
4788 real(real64), intent(out), target, optional, dimension(:) :: work
4789 integer(int32), intent(out), optional :: olwork
4790 class(errors), intent(inout), optional, target :: err
4791 end subroutine
4792
-
4793 module subroutine solve_least_squares_mtx_cmplx(a, b, work, olwork, err)
-
4794 complex(real64), intent(inout), dimension(:,:) :: a, b
-
4795 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4796 integer(int32), intent(out), optional :: olwork
-
4797 class(errors), intent(inout), optional, target :: err
-
4798 end subroutine
-
4799
-
4800 module subroutine solve_least_squares_vec(a, b, work, olwork, err)
-
4801 real(real64), intent(inout), dimension(:,:) :: a
-
4802 real(real64), intent(inout), dimension(:) :: b
-
4803 real(real64), intent(out), target, optional, dimension(:) :: work
-
4804 integer(int32), intent(out), optional :: olwork
-
4805 class(errors), intent(inout), optional, target :: err
-
4806 end subroutine
-
4807
-
4808 module subroutine solve_least_squares_vec_cmplx(a, b, work, olwork, err)
-
4809 complex(real64), intent(inout), dimension(:,:) :: a
-
4810 complex(real64), intent(inout), dimension(:) :: b
-
4811 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4812 integer(int32), intent(out), optional :: olwork
-
4813 class(errors), intent(inout), optional, target :: err
-
4814 end subroutine
-
4815
-
4816 module subroutine solve_least_squares_mtx_pvt(a, b, ipvt, arnk, work, olwork, err)
-
4817 real(real64), intent(inout), dimension(:,:) :: a, b
-
4818 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
-
4819 integer(int32), intent(out), optional :: arnk
-
4820 real(real64), intent(out), target, optional, dimension(:) :: work
-
4821 integer(int32), intent(out), optional :: olwork
-
4822 class(errors), intent(inout), optional, target :: err
-
4823 end subroutine
-
4824
-
4825 module subroutine solve_least_squares_mtx_pvt_cmplx(a, b, ipvt, arnk, &
-
4826 work, olwork, rwork, err)
-
4827 complex(real64), intent(inout), dimension(:,:) :: a, b
-
4828 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
-
4829 integer(int32), intent(out), optional :: arnk
-
4830 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4831 integer(int32), intent(out), optional :: olwork
-
4832 real(real64), intent(out), target, optional, dimension(:) :: rwork
-
4833 class(errors), intent(inout), optional, target :: err
-
4834 end subroutine
-
4835
-
4836 module subroutine solve_least_squares_vec_pvt(a, b, ipvt, arnk, work, olwork, err)
-
4837 real(real64), intent(inout), dimension(:,:) :: a
-
4838 real(real64), intent(inout), dimension(:) :: b
-
4839 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
-
4840 integer(int32), intent(out), optional :: arnk
-
4841 real(real64), intent(out), target, optional, dimension(:) :: work
-
4842 integer(int32), intent(out), optional :: olwork
-
4843 class(errors), intent(inout), optional, target :: err
-
4844 end subroutine
-
4845
-
4846 module subroutine solve_least_squares_vec_pvt_cmplx(a, b, ipvt, arnk, &
-
4847 work, olwork, rwork, err)
-
4848 complex(real64), intent(inout), dimension(:,:) :: a
-
4849 complex(real64), intent(inout), dimension(:) :: b
-
4850 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
-
4851 integer(int32), intent(out), optional :: arnk
-
4852 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4793 module subroutine svd_cmplx(a, s, u, vt, work, olwork, rwork, err)
+
4794 complex(real64), intent(inout), dimension(:,:) :: a
+
4795 real(real64), intent(out), dimension(:) :: s
+
4796 complex(real64), intent(out), optional, dimension(:,:) :: u, vt
+
4797 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4798 integer(int32), intent(out), optional :: olwork
+
4799 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
4800 class(errors), intent(inout), optional, target :: err
+
4801 end subroutine
+
4802
+
4803 module subroutine lq_factor_no_pivot(a, tau, work, olwork, err)
+
4804 real(real64), intent(inout), dimension(:,:) :: a
+
4805 real(real64), intent(out), dimension(:) :: tau
+
4806 real(real64), intent(out), target, dimension(:), optional :: work
+
4807 integer(int32), intent(out), optional :: olwork
+
4808 class(errors), intent(inout), optional, target :: err
+
4809 end subroutine
+
4810
+
4811 module subroutine lq_factor_no_pivot_cmplx(a, tau, work, olwork, err)
+
4812 complex(real64), intent(inout), dimension(:,:) :: a
+
4813 complex(real64), intent(out), dimension(:) :: tau
+
4814 complex(real64), intent(out), target, dimension(:), optional :: work
+
4815 integer(int32), intent(out), optional :: olwork
+
4816 class(errors), intent(inout), optional, target :: err
+
4817 end subroutine
+
4818
+
4819 module subroutine form_lq_no_pivot(l, tau, q, work, olwork, err)
+
4820 real(real64), intent(inout), dimension(:,:) :: l
+
4821 real(real64), intent(in), dimension(:) :: tau
+
4822 real(real64), intent(out), dimension(:,:) :: q
+
4823 real(real64), intent(out), target, dimension(:), optional :: work
+
4824 integer(int32), intent(out), optional :: olwork
+
4825 class(errors), intent(inout), optional, target :: err
+
4826 end subroutine
+
4827
+
4828 module subroutine form_lq_no_pivot_cmplx(l, tau, q, work, olwork, err)
+
4829 complex(real64), intent(inout), dimension(:,:) :: l
+
4830 complex(real64), intent(in), dimension(:) :: tau
+
4831 complex(real64), intent(out), dimension(:,:) :: q
+
4832 complex(real64), intent(out), target, dimension(:), optional :: work
+
4833 integer(int32), intent(out), optional :: olwork
+
4834 class(errors), intent(inout), optional, target :: err
+
4835 end subroutine
+
4836
+
4837 module subroutine mult_lq_mtx(lside, trans, a, tau, c, work, olwork, err)
+
4838 logical, intent(in) :: lside, trans
+
4839 real(real64), intent(in), dimension(:,:) :: a
+
4840 real(real64), intent(in), dimension(:) :: tau
+
4841 real(real64), intent(inout), dimension(:,:) :: c
+
4842 real(real64), intent(out), target, dimension(:), optional :: work
+
4843 integer(int32), intent(out), optional :: olwork
+
4844 class(errors), intent(inout), optional, target :: err
+
4845 end subroutine
+
4846
+
4847 module subroutine mult_lq_mtx_cmplx(lside, trans, a, tau, c, work, olwork, err)
+
4848 logical, intent(in) :: lside, trans
+
4849 complex(real64), intent(in), dimension(:,:) :: a
+
4850 complex(real64), intent(in), dimension(:) :: tau
+
4851 complex(real64), intent(inout), dimension(:,:) :: c
+
4852 complex(real64), intent(out), target, dimension(:), optional :: work
4853 integer(int32), intent(out), optional :: olwork
-
4854 real(real64), intent(out), target, optional, dimension(:) :: rwork
-
4855 class(errors), intent(inout), optional, target :: err
-
4856 end subroutine
-
4857
-
4858 module subroutine solve_least_squares_mtx_svd(a, b, s, arnk, work, olwork, err)
-
4859 real(real64), intent(inout), dimension(:,:) :: a, b
-
4860 integer(int32), intent(out), optional :: arnk
-
4861 real(real64), intent(out), target, optional, dimension(:) :: work, s
-
4862 integer(int32), intent(out), optional :: olwork
-
4863 class(errors), intent(inout), optional, target :: err
-
4864 end subroutine
-
4865
-
4866 module subroutine solve_least_squares_mtx_svd_cmplx(a, b, s, arnk, work, &
-
4867 olwork, rwork, err)
-
4868 complex(real64), intent(inout), dimension(:,:) :: a, b
-
4869 integer(int32), intent(out), optional :: arnk
-
4870 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4871 real(real64), intent(out), target, optional, dimension(:) :: rwork, s
-
4872 integer(int32), intent(out), optional :: olwork
-
4873 class(errors), intent(inout), optional, target :: err
-
4874 end subroutine
-
4875
-
4876 module subroutine solve_least_squares_vec_svd(a, b, s, arnk, work, olwork, err)
-
4877 real(real64), intent(inout), dimension(:,:) :: a
-
4878 real(real64), intent(inout), dimension(:) :: b
-
4879 integer(int32), intent(out), optional :: arnk
-
4880 real(real64), intent(out), target, optional, dimension(:) :: work, s
-
4881 integer(int32), intent(out), optional :: olwork
-
4882 class(errors), intent(inout), optional, target :: err
-
4883 end subroutine
-
4884
-
4885 module subroutine solve_least_squares_vec_svd_cmplx(a, b, s, arnk, work, &
-
4886 olwork, rwork, err)
-
4887 complex(real64), intent(inout), dimension(:,:) :: a
-
4888 complex(real64), intent(inout), dimension(:) :: b
-
4889 integer(int32), intent(out), optional :: arnk
-
4890 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4891 real(real64), intent(out), target, optional, dimension(:) :: rwork, s
-
4892 integer(int32), intent(out), optional :: olwork
-
4893 class(errors), intent(inout), optional, target :: err
-
4894 end subroutine
-
4895
-
4896 module subroutine mtx_inverse_dbl(a, iwork, work, olwork, err)
-
4897 real(real64), intent(inout), dimension(:,:) :: a
-
4898 integer(int32), intent(out), target, optional, dimension(:) :: iwork
-
4899 real(real64), intent(out), target, optional, dimension(:) :: work
-
4900 integer(int32), intent(out), optional :: olwork
-
4901 class(errors), intent(inout), optional, target :: err
-
4902 end subroutine
-
4903
-
4904 module subroutine mtx_inverse_cmplx(a, iwork, work, olwork, err)
-
4905 complex(real64), intent(inout), dimension(:,:) :: a
-
4906 integer(int32), intent(out), target, optional, dimension(:) :: iwork
-
4907 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4908 integer(int32), intent(out), optional :: olwork
+
4854 class(errors), intent(inout), optional, target :: err
+
4855 end subroutine
+
4856
+
4857 module subroutine mult_lq_vec(trans, a, tau, c, work, olwork, err)
+
4858 logical, intent(in) :: trans
+
4859 real(real64), intent(in), dimension(:,:) :: a
+
4860 real(real64), intent(in), dimension(:) :: tau
+
4861 real(real64), intent(inout), dimension(:) :: c
+
4862 real(real64), intent(out), target, dimension(:), optional :: work
+
4863 integer(int32), intent(out), optional :: olwork
+
4864 class(errors), intent(inout), optional, target :: err
+
4865 end subroutine
+
4866
+
4867 module subroutine mult_lq_vec_cmplx(trans, a, tau, c, work, olwork, err)
+
4868 logical, intent(in) :: trans
+
4869 complex(real64), intent(in), dimension(:,:) :: a
+
4870 complex(real64), intent(in), dimension(:) :: tau
+
4871 complex(real64), intent(inout), dimension(:) :: c
+
4872 complex(real64), intent(out), target, dimension(:), optional :: work
+
4873 integer(int32), intent(out), optional :: olwork
+
4874 class(errors), intent(inout), optional, target :: err
+
4875 end subroutine
+
4876end interface
+
4877
+
4878! ******************************************************************************
+
4879! LINALG_SOLVE.F90
+
4880! ------------------------------------------------------------------------------
+
4881interface
+
4882 module subroutine solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b, err)
+
4883 logical, intent(in) :: lside, upper, trans, nounit
+
4884 real(real64), intent(in) :: alpha
+
4885 real(real64), intent(in), dimension(:,:) :: a
+
4886 real(real64), intent(inout), dimension(:,:) :: b
+
4887 class(errors), intent(inout), optional, target :: err
+
4888 end subroutine
+
4889
+
4890 module subroutine solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b, err)
+
4891 logical, intent(in) :: lside, upper, trans, nounit
+
4892 complex(real64), intent(in) :: alpha
+
4893 complex(real64), intent(in), dimension(:,:) :: a
+
4894 complex(real64), intent(inout), dimension(:,:) :: b
+
4895 class(errors), intent(inout), optional, target :: err
+
4896 end subroutine
+
4897
+
4898 module subroutine solve_tri_vec(upper, trans, nounit, a, x, err)
+
4899 logical, intent(in) :: upper, trans, nounit
+
4900 real(real64), intent(in), dimension(:,:) :: a
+
4901 real(real64), intent(inout), dimension(:) :: x
+
4902 class(errors), intent(inout), optional, target :: err
+
4903 end subroutine
+
4904
+
4905 module subroutine solve_tri_vec_cmplx(upper, trans, nounit, a, x, err)
+
4906 logical, intent(in) :: upper, trans, nounit
+
4907 complex(real64), intent(in), dimension(:,:) :: a
+
4908 complex(real64), intent(inout), dimension(:) :: x
4909 class(errors), intent(inout), optional, target :: err
4910 end subroutine
4911
-
4912 module subroutine mtx_pinverse_dbl(a, ainv, tol, work, olwork, err)
-
4913 real(real64), intent(inout), dimension(:,:) :: a
-
4914 real(real64), intent(out), dimension(:,:) :: ainv
-
4915 real(real64), intent(in), optional :: tol
-
4916 real(real64), intent(out), target, dimension(:), optional :: work
-
4917 integer(int32), intent(out), optional :: olwork
-
4918 class(errors), intent(inout), optional, target :: err
-
4919 end subroutine
-
4920
-
4921 module subroutine mtx_pinverse_cmplx(a, ainv, tol, work, olwork, rwork, err)
-
4922 complex(real64), intent(inout), dimension(:,:) :: a
-
4923 complex(real64), intent(out), dimension(:,:) :: ainv
-
4924 real(real64), intent(in), optional :: tol
-
4925 complex(real64), intent(out), target, dimension(:), optional :: work
-
4926 integer(int32), intent(out), optional :: olwork
-
4927 real(real64), intent(out), target, dimension(:), optional :: rwork
-
4928 class(errors), intent(inout), optional, target :: err
-
4929 end subroutine
-
4930
-
4931 module subroutine solve_lq_mtx(a, tau, b, work, olwork, err)
-
4932 real(real64), intent(in), dimension(:,:) :: a
-
4933 real(real64), intent(in), dimension(:) :: tau
-
4934 real(real64), intent(inout), dimension(:,:) :: b
-
4935 real(real64), intent(out), target, optional, dimension(:) :: work
-
4936 integer(int32), intent(out), optional :: olwork
+
4912 module subroutine solve_lu_mtx(a, ipvt, b, err)
+
4913 real(real64), intent(in), dimension(:,:) :: a
+
4914 integer(int32), intent(in), dimension(:) :: ipvt
+
4915 real(real64), intent(inout), dimension(:,:) :: b
+
4916 class(errors), intent(inout), optional, target :: err
+
4917 end subroutine
+
4918
+
4919 module subroutine solve_lu_mtx_cmplx(a, ipvt, b, err)
+
4920 complex(real64), intent(in), dimension(:,:) :: a
+
4921 integer(int32), intent(in), dimension(:) :: ipvt
+
4922 complex(real64), intent(inout), dimension(:,:) :: b
+
4923 class(errors), intent(inout), optional, target :: err
+
4924 end subroutine
+
4925
+
4926 module subroutine solve_lu_vec(a, ipvt, b, err)
+
4927 real(real64), intent(in), dimension(:,:) :: a
+
4928 integer(int32), intent(in), dimension(:) :: ipvt
+
4929 real(real64), intent(inout), dimension(:) :: b
+
4930 class(errors), intent(inout), optional, target :: err
+
4931 end subroutine
+
4932
+
4933 module subroutine solve_lu_vec_cmplx(a, ipvt, b, err)
+
4934 complex(real64), intent(in), dimension(:,:) :: a
+
4935 integer(int32), intent(in), dimension(:) :: ipvt
+
4936 complex(real64), intent(inout), dimension(:) :: b
4937 class(errors), intent(inout), optional, target :: err
4938 end subroutine
-
4939
-
4940 module subroutine solve_lq_mtx_cmplx(a, tau, b, work, olwork, err)
-
4941 complex(real64), intent(in), dimension(:,:) :: a
-
4942 complex(real64), intent(in), dimension(:) :: tau
-
4943 complex(real64), intent(inout), dimension(:,:) :: b
-
4944 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4945 integer(int32), intent(out), optional :: olwork
-
4946 class(errors), intent(inout), optional, target :: err
-
4947 end subroutine
-
4948
-
4949 module subroutine solve_lq_vec(a, tau, b, work, olwork, err)
-
4950 real(real64), intent(in), dimension(:,:) :: a
-
4951 real(real64), intent(in), dimension(:) :: tau
-
4952 real(real64), intent(inout), dimension(:) :: b
-
4953 real(real64), intent(out), target, optional, dimension(:) :: work
-
4954 integer(int32), intent(out), optional :: olwork
-
4955 class(errors), intent(inout), optional, target :: err
-
4956 end subroutine
-
4957
-
4958 module subroutine solve_lq_vec_cmplx(a, tau, b, work, olwork, err)
-
4959 complex(real64), intent(in), dimension(:,:) :: a
-
4960 complex(real64), intent(in), dimension(:) :: tau
-
4961 complex(real64), intent(inout), dimension(:) :: b
-
4962 complex(real64), intent(out), target, optional, dimension(:) :: work
-
4963 integer(int32), intent(out), optional :: olwork
-
4964 class(errors), intent(inout), optional, target :: err
-
4965 end subroutine
-
4966end interface
-
4967
-
4968! ******************************************************************************
-
4969! LINALG_EIGEN.F90
-
4970! ------------------------------------------------------------------------------
-
4971interface
-
4972 module subroutine eigen_symm(vecs, a, vals, work, olwork, err)
-
4973 logical, intent(in) :: vecs
-
4974 real(real64), intent(inout), dimension(:,:) :: a
-
4975 real(real64), intent(out), dimension(:) :: vals
-
4976 real(real64), intent(out), pointer, optional, dimension(:) :: work
-
4977 integer(int32), intent(out), optional :: olwork
-
4978 class(errors), intent(inout), optional, target :: err
-
4979 end subroutine
-
4980
-
4981 module subroutine eigen_asymm(a, vals, vecs, work, olwork, err)
-
4982 real(real64), intent(inout), dimension(:,:) :: a
-
4983 complex(real64), intent(out), dimension(:) :: vals
-
4984 complex(real64), intent(out), optional, dimension(:,:) :: vecs
-
4985 real(real64), intent(out), pointer, optional, dimension(:) :: work
-
4986 integer(int32), intent(out), optional :: olwork
-
4987 class(errors), intent(inout), optional, target :: err
-
4988 end subroutine
-
4989
-
4990 module subroutine eigen_gen(a, b, alpha, beta, vecs, work, olwork, err)
-
4991 real(real64), intent(inout), dimension(:,:) :: a, b
-
4992 complex(real64), intent(out), dimension(:) :: alpha
-
4993 real(real64), intent(out), optional, dimension(:) :: beta
-
4994 complex(real64), intent(out), optional, dimension(:,:) :: vecs
-
4995 real(real64), intent(out), optional, pointer, dimension(:) :: work
-
4996 integer(int32), intent(out), optional :: olwork
-
4997 class(errors), intent(inout), optional, target :: err
-
4998 end subroutine
-
4999
-
5000 module subroutine eigen_cmplx(a, vals, vecs, work, olwork, rwork, err)
-
5001 complex(real64), intent(inout), dimension(:,:) :: a
-
5002 complex(real64), intent(out), dimension(:) :: vals
-
5003 complex(real64), intent(out), optional, dimension(:,:) :: vecs
-
5004 complex(real64), intent(out), target, optional, dimension(:) :: work
-
5005 real(real64), intent(out), target, optional, dimension(:) :: rwork
-
5006 integer(int32), intent(out), optional :: olwork
-
5007 class(errors), intent(inout), optional, target :: err
-
5008 end subroutine
-
5009end interface
-
5010
-
5011! ******************************************************************************
-
5012! LINALG_SORTING.F90
-
5013! ------------------------------------------------------------------------------
-
5014interface
-
5015 module subroutine sort_dbl_array(x, ascend)
-
5016 real(real64), intent(inout), dimension(:) :: x
-
5017 logical, intent(in), optional :: ascend
-
5018 end subroutine
-
5019
-
5020 module subroutine sort_dbl_array_ind(x, ind, ascend, err)
-
5021 real(real64), intent(inout), dimension(:) :: x
-
5022 integer(int32), intent(inout), dimension(:) :: ind
-
5023 logical, intent(in), optional :: ascend
-
5024 class(errors), intent(inout), optional, target :: err
-
5025 end subroutine
-
5026
-
5027 module subroutine sort_cmplx_array(x, ascend)
-
5028 complex(real64), intent(inout), dimension(:) :: x
-
5029 logical, intent(in), optional :: ascend
-
5030 end subroutine
-
5031
-
5032 module subroutine sort_cmplx_array_ind(x, ind, ascend, err)
-
5033 complex(real64), intent(inout), dimension(:) :: x
-
5034 integer(int32), intent(inout), dimension(:) :: ind
-
5035 logical, intent(in), optional :: ascend
-
5036 class(errors), intent(inout), optional, target :: err
-
5037 end subroutine
-
5038
-
5039 module subroutine sort_eigen_cmplx(vals, vecs, ascend, err)
-
5040 complex(real64), intent(inout), dimension(:) :: vals
-
5041 complex(real64), intent(inout), dimension(:,:) :: vecs
-
5042 logical, intent(in), optional :: ascend
-
5043 class(errors), intent(inout), optional, target :: err
-
5044 end subroutine
-
5045
-
5046 module subroutine sort_eigen_dbl(vals, vecs, ascend, err)
-
5047 real(real64), intent(inout), dimension(:) :: vals
-
5048 real(real64), intent(inout), dimension(:,:) :: vecs
-
5049 logical, intent(in), optional :: ascend
-
5050 class(errors), intent(inout), optional, target :: err
-
5051 end subroutine
-
5052
-
5053end interface
-
5054
-
5055end module
-
Multiplies a banded matrix, A, with a diagonal matrix, B, such that A = alpha * A * B,...
Definition linalg.f90:4002
-
Multiplies a banded matrix, A, by a vector x such that alpha * op(A) * x + beta * y = y.
Definition linalg.f90:3897
-
Converts a banded matrix stored in dense form to a full matrix.
Definition linalg.f90:3939
-
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1574
-
Computes the rank 1 downdate to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1780
-
Computes the rank 1 update to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1673
-
Computes the determinant of a square matrix.
Definition linalg.f90:571
-
Multiplies a diagonal matrix with another matrix or array.
Definition linalg.f90:466
-
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Definition linalg.f90:3240
-
Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorit...
Definition linalg.f90:3551
-
Extracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor.
Definition linalg.f90:854
-
Forms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR fact...
Definition linalg.f90:1168
-
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3437
-
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:732
-
Computes the inverse of a square matrix.
Definition linalg.f90:2920
-
Performs the matrix operation: .
Definition linalg.f90:296
-
Computes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition o...
Definition linalg.f90:3026
-
Computes the rank of a matrix.
Definition linalg.f90:538
-
Multiplies a general matrix by the orthogonal matrix Q from a LQ factorization.
Definition linalg.f90:3700
-
Multiplies a general matrix by the orthogonal matrix Q from a QR factorization.
Definition linalg.f90:1325
-
Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization.
Definition linalg.f90:1944
-
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1008
-
Computes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where , and such that ....
Definition linalg.f90:1475
-
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:331
-
Multiplies a vector by the reciprocal of a real scalar.
Definition linalg.f90:612
-
Factors an upper trapezoidal matrix by means of orthogonal transformations such that ....
Definition linalg.f90:1853
-
Solves a system of Cholesky factored equations.
Definition linalg.f90:2532
-
Solves the overdetermined or underdetermined system of M equations of N unknowns,...
Definition linalg.f90:2723
-
Solves the overdetermined or underdetermined system of M equations of N unknowns using a singular va...
Definition linalg.f90:2825
-
Solves the overdetermined or underdetermined system of M equations of N unknowns....
Definition linalg.f90:2622
-
Solves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M.
Definition linalg.f90:3795
-
Solves a system of LU-factored equations.
Definition linalg.f90:2291
-
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2426
-
Solves a triangular system of equations.
Definition linalg.f90:2203
-
Sorts an array.
Definition linalg.f90:3323
-
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Definition linalg.f90:2069
-
Swaps the contents of two arrays.
Definition linalg.f90:593
-
Computes the trace of a matrix (the sum of the main diagonal elements).
Definition linalg.f90:490
-
Computes the triangular matrix operation: , or , where A is a triangular matrix.
Definition linalg.f90:646
+
4939
+
4940 module subroutine solve_qr_no_pivot_mtx(a, tau, b, work, olwork, err)
+
4941 real(real64), intent(inout), dimension(:,:) :: a, b
+
4942 real(real64), intent(in), dimension(:) :: tau
+
4943 real(real64), intent(out), target, optional, dimension(:) :: work
+
4944 integer(int32), intent(out), optional :: olwork
+
4945 class(errors), intent(inout), optional, target :: err
+
4946 end subroutine
+
4947
+
4948 module subroutine solve_qr_no_pivot_mtx_cmplx(a, tau, b, work, olwork, err)
+
4949 complex(real64), intent(inout), dimension(:,:) :: a, b
+
4950 complex(real64), intent(in), dimension(:) :: tau
+
4951 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4952 integer(int32), intent(out), optional :: olwork
+
4953 class(errors), intent(inout), optional, target :: err
+
4954 end subroutine
+
4955
+
4956 module subroutine solve_qr_no_pivot_vec(a, tau, b, work, olwork, err)
+
4957 real(real64), intent(inout), dimension(:,:) :: a
+
4958 real(real64), intent(in), dimension(:) :: tau
+
4959 real(real64), intent(inout), dimension(:) :: b
+
4960 real(real64), intent(out), target, optional, dimension(:) :: work
+
4961 integer(int32), intent(out), optional :: olwork
+
4962 class(errors), intent(inout), optional, target :: err
+
4963 end subroutine
+
4964
+
4965 module subroutine solve_qr_no_pivot_vec_cmplx(a, tau, b, work, olwork, err)
+
4966 complex(real64), intent(inout), dimension(:,:) :: a
+
4967 complex(real64), intent(in), dimension(:) :: tau
+
4968 complex(real64), intent(inout), dimension(:) :: b
+
4969 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4970 integer(int32), intent(out), optional :: olwork
+
4971 class(errors), intent(inout), optional, target :: err
+
4972 end subroutine
+
4973
+
4974 module subroutine solve_qr_pivot_mtx(a, tau, jpvt, b, work, olwork, err)
+
4975 real(real64), intent(inout), dimension(:,:) :: a
+
4976 real(real64), intent(in), dimension(:) :: tau
+
4977 integer(int32), intent(in), dimension(:) :: jpvt
+
4978 real(real64), intent(inout), dimension(:,:) :: b
+
4979 real(real64), intent(out), target, optional, dimension(:) :: work
+
4980 integer(int32), intent(out), optional :: olwork
+
4981 class(errors), intent(inout), optional, target :: err
+
4982 end subroutine
+
4983
+
4984 module subroutine solve_qr_pivot_mtx_cmplx(a, tau, jpvt, b, work, olwork, err)
+
4985 complex(real64), intent(inout), dimension(:,:) :: a
+
4986 complex(real64), intent(in), dimension(:) :: tau
+
4987 integer(int32), intent(in), dimension(:) :: jpvt
+
4988 complex(real64), intent(inout), dimension(:,:) :: b
+
4989 complex(real64), intent(out), target, optional, dimension(:) :: work
+
4990 integer(int32), intent(out), optional :: olwork
+
4991 class(errors), intent(inout), optional, target :: err
+
4992 end subroutine
+
4993
+
4994 module subroutine solve_qr_pivot_vec(a, tau, jpvt, b, work, olwork, err)
+
4995 real(real64), intent(inout), dimension(:,:) :: a
+
4996 real(real64), intent(in), dimension(:) :: tau
+
4997 integer(int32), intent(in), dimension(:) :: jpvt
+
4998 real(real64), intent(inout), dimension(:) :: b
+
4999 real(real64), intent(out), target, optional, dimension(:) :: work
+
5000 integer(int32), intent(out), optional :: olwork
+
5001 class(errors), intent(inout), optional, target :: err
+
5002 end subroutine
+
5003
+
5004 module subroutine solve_qr_pivot_vec_cmplx(a, tau, jpvt, b, work, olwork, err)
+
5005 complex(real64), intent(inout), dimension(:,:) :: a
+
5006 complex(real64), intent(in), dimension(:) :: tau
+
5007 integer(int32), intent(in), dimension(:) :: jpvt
+
5008 complex(real64), intent(inout), dimension(:) :: b
+
5009 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5010 integer(int32), intent(out), optional :: olwork
+
5011 class(errors), intent(inout), optional, target :: err
+
5012 end subroutine
+
5013
+
5014 module subroutine solve_cholesky_mtx(upper, a, b, err)
+
5015 logical, intent(in) :: upper
+
5016 real(real64), intent(in), dimension(:,:) :: a
+
5017 real(real64), intent(inout), dimension(:,:) :: b
+
5018 class(errors), intent(inout), optional, target :: err
+
5019 end subroutine
+
5020
+
5021 module subroutine solve_cholesky_mtx_cmplx(upper, a, b, err)
+
5022 logical, intent(in) :: upper
+
5023 complex(real64), intent(in), dimension(:,:) :: a
+
5024 complex(real64), intent(inout), dimension(:,:) :: b
+
5025 class(errors), intent(inout), optional, target :: err
+
5026 end subroutine
+
5027
+
5028 module subroutine solve_cholesky_vec(upper, a, b, err)
+
5029 logical, intent(in) :: upper
+
5030 real(real64), intent(in), dimension(:,:) :: a
+
5031 real(real64), intent(inout), dimension(:) :: b
+
5032 class(errors), intent(inout), optional, target :: err
+
5033 end subroutine
+
5034
+
5035 module subroutine solve_cholesky_vec_cmplx(upper, a, b, err)
+
5036 logical, intent(in) :: upper
+
5037 complex(real64), intent(in), dimension(:,:) :: a
+
5038 complex(real64), intent(inout), dimension(:) :: b
+
5039 class(errors), intent(inout), optional, target :: err
+
5040 end subroutine
+
5041
+
5042 module subroutine solve_least_squares_mtx(a, b, work, olwork, err)
+
5043 real(real64), intent(inout), dimension(:,:) :: a, b
+
5044 real(real64), intent(out), target, optional, dimension(:) :: work
+
5045 integer(int32), intent(out), optional :: olwork
+
5046 class(errors), intent(inout), optional, target :: err
+
5047 end subroutine
+
5048
+
5049 module subroutine solve_least_squares_mtx_cmplx(a, b, work, olwork, err)
+
5050 complex(real64), intent(inout), dimension(:,:) :: a, b
+
5051 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5052 integer(int32), intent(out), optional :: olwork
+
5053 class(errors), intent(inout), optional, target :: err
+
5054 end subroutine
+
5055
+
5056 module subroutine solve_least_squares_vec(a, b, work, olwork, err)
+
5057 real(real64), intent(inout), dimension(:,:) :: a
+
5058 real(real64), intent(inout), dimension(:) :: b
+
5059 real(real64), intent(out), target, optional, dimension(:) :: work
+
5060 integer(int32), intent(out), optional :: olwork
+
5061 class(errors), intent(inout), optional, target :: err
+
5062 end subroutine
+
5063
+
5064 module subroutine solve_least_squares_vec_cmplx(a, b, work, olwork, err)
+
5065 complex(real64), intent(inout), dimension(:,:) :: a
+
5066 complex(real64), intent(inout), dimension(:) :: b
+
5067 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5068 integer(int32), intent(out), optional :: olwork
+
5069 class(errors), intent(inout), optional, target :: err
+
5070 end subroutine
+
5071
+
5072 module subroutine solve_least_squares_mtx_pvt(a, b, ipvt, arnk, work, olwork, err)
+
5073 real(real64), intent(inout), dimension(:,:) :: a, b
+
5074 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
+
5075 integer(int32), intent(out), optional :: arnk
+
5076 real(real64), intent(out), target, optional, dimension(:) :: work
+
5077 integer(int32), intent(out), optional :: olwork
+
5078 class(errors), intent(inout), optional, target :: err
+
5079 end subroutine
+
5080
+
5081 module subroutine solve_least_squares_mtx_pvt_cmplx(a, b, ipvt, arnk, &
+
5082 work, olwork, rwork, err)
+
5083 complex(real64), intent(inout), dimension(:,:) :: a, b
+
5084 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
+
5085 integer(int32), intent(out), optional :: arnk
+
5086 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5087 integer(int32), intent(out), optional :: olwork
+
5088 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
5089 class(errors), intent(inout), optional, target :: err
+
5090 end subroutine
+
5091
+
5092 module subroutine solve_least_squares_vec_pvt(a, b, ipvt, arnk, work, olwork, err)
+
5093 real(real64), intent(inout), dimension(:,:) :: a
+
5094 real(real64), intent(inout), dimension(:) :: b
+
5095 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
+
5096 integer(int32), intent(out), optional :: arnk
+
5097 real(real64), intent(out), target, optional, dimension(:) :: work
+
5098 integer(int32), intent(out), optional :: olwork
+
5099 class(errors), intent(inout), optional, target :: err
+
5100 end subroutine
+
5101
+
5102 module subroutine solve_least_squares_vec_pvt_cmplx(a, b, ipvt, arnk, &
+
5103 work, olwork, rwork, err)
+
5104 complex(real64), intent(inout), dimension(:,:) :: a
+
5105 complex(real64), intent(inout), dimension(:) :: b
+
5106 integer(int32), intent(inout), target, optional, dimension(:) :: ipvt
+
5107 integer(int32), intent(out), optional :: arnk
+
5108 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5109 integer(int32), intent(out), optional :: olwork
+
5110 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
5111 class(errors), intent(inout), optional, target :: err
+
5112 end subroutine
+
5113
+
5114 module subroutine solve_least_squares_mtx_svd(a, b, s, arnk, work, olwork, err)
+
5115 real(real64), intent(inout), dimension(:,:) :: a, b
+
5116 integer(int32), intent(out), optional :: arnk
+
5117 real(real64), intent(out), target, optional, dimension(:) :: work, s
+
5118 integer(int32), intent(out), optional :: olwork
+
5119 class(errors), intent(inout), optional, target :: err
+
5120 end subroutine
+
5121
+
5122 module subroutine solve_least_squares_mtx_svd_cmplx(a, b, s, arnk, work, &
+
5123 olwork, rwork, err)
+
5124 complex(real64), intent(inout), dimension(:,:) :: a, b
+
5125 integer(int32), intent(out), optional :: arnk
+
5126 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5127 real(real64), intent(out), target, optional, dimension(:) :: rwork, s
+
5128 integer(int32), intent(out), optional :: olwork
+
5129 class(errors), intent(inout), optional, target :: err
+
5130 end subroutine
+
5131
+
5132 module subroutine solve_least_squares_vec_svd(a, b, s, arnk, work, olwork, err)
+
5133 real(real64), intent(inout), dimension(:,:) :: a
+
5134 real(real64), intent(inout), dimension(:) :: b
+
5135 integer(int32), intent(out), optional :: arnk
+
5136 real(real64), intent(out), target, optional, dimension(:) :: work, s
+
5137 integer(int32), intent(out), optional :: olwork
+
5138 class(errors), intent(inout), optional, target :: err
+
5139 end subroutine
+
5140
+
5141 module subroutine solve_least_squares_vec_svd_cmplx(a, b, s, arnk, work, &
+
5142 olwork, rwork, err)
+
5143 complex(real64), intent(inout), dimension(:,:) :: a
+
5144 complex(real64), intent(inout), dimension(:) :: b
+
5145 integer(int32), intent(out), optional :: arnk
+
5146 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5147 real(real64), intent(out), target, optional, dimension(:) :: rwork, s
+
5148 integer(int32), intent(out), optional :: olwork
+
5149 class(errors), intent(inout), optional, target :: err
+
5150 end subroutine
+
5151
+
5152 module subroutine mtx_inverse_dbl(a, iwork, work, olwork, err)
+
5153 real(real64), intent(inout), dimension(:,:) :: a
+
5154 integer(int32), intent(out), target, optional, dimension(:) :: iwork
+
5155 real(real64), intent(out), target, optional, dimension(:) :: work
+
5156 integer(int32), intent(out), optional :: olwork
+
5157 class(errors), intent(inout), optional, target :: err
+
5158 end subroutine
+
5159
+
5160 module subroutine mtx_inverse_cmplx(a, iwork, work, olwork, err)
+
5161 complex(real64), intent(inout), dimension(:,:) :: a
+
5162 integer(int32), intent(out), target, optional, dimension(:) :: iwork
+
5163 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5164 integer(int32), intent(out), optional :: olwork
+
5165 class(errors), intent(inout), optional, target :: err
+
5166 end subroutine
+
5167
+
5168 module subroutine mtx_pinverse_dbl(a, ainv, tol, work, olwork, err)
+
5169 real(real64), intent(inout), dimension(:,:) :: a
+
5170 real(real64), intent(out), dimension(:,:) :: ainv
+
5171 real(real64), intent(in), optional :: tol
+
5172 real(real64), intent(out), target, dimension(:), optional :: work
+
5173 integer(int32), intent(out), optional :: olwork
+
5174 class(errors), intent(inout), optional, target :: err
+
5175 end subroutine
+
5176
+
5177 module subroutine mtx_pinverse_cmplx(a, ainv, tol, work, olwork, rwork, err)
+
5178 complex(real64), intent(inout), dimension(:,:) :: a
+
5179 complex(real64), intent(out), dimension(:,:) :: ainv
+
5180 real(real64), intent(in), optional :: tol
+
5181 complex(real64), intent(out), target, dimension(:), optional :: work
+
5182 integer(int32), intent(out), optional :: olwork
+
5183 real(real64), intent(out), target, dimension(:), optional :: rwork
+
5184 class(errors), intent(inout), optional, target :: err
+
5185 end subroutine
+
5186
+
5187 module subroutine solve_lq_mtx(a, tau, b, work, olwork, err)
+
5188 real(real64), intent(in), dimension(:,:) :: a
+
5189 real(real64), intent(in), dimension(:) :: tau
+
5190 real(real64), intent(inout), dimension(:,:) :: b
+
5191 real(real64), intent(out), target, optional, dimension(:) :: work
+
5192 integer(int32), intent(out), optional :: olwork
+
5193 class(errors), intent(inout), optional, target :: err
+
5194 end subroutine
+
5195
+
5196 module subroutine solve_lq_mtx_cmplx(a, tau, b, work, olwork, err)
+
5197 complex(real64), intent(in), dimension(:,:) :: a
+
5198 complex(real64), intent(in), dimension(:) :: tau
+
5199 complex(real64), intent(inout), dimension(:,:) :: b
+
5200 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5201 integer(int32), intent(out), optional :: olwork
+
5202 class(errors), intent(inout), optional, target :: err
+
5203 end subroutine
+
5204
+
5205 module subroutine solve_lq_vec(a, tau, b, work, olwork, err)
+
5206 real(real64), intent(in), dimension(:,:) :: a
+
5207 real(real64), intent(in), dimension(:) :: tau
+
5208 real(real64), intent(inout), dimension(:) :: b
+
5209 real(real64), intent(out), target, optional, dimension(:) :: work
+
5210 integer(int32), intent(out), optional :: olwork
+
5211 class(errors), intent(inout), optional, target :: err
+
5212 end subroutine
+
5213
+
5214 module subroutine solve_lq_vec_cmplx(a, tau, b, work, olwork, err)
+
5215 complex(real64), intent(in), dimension(:,:) :: a
+
5216 complex(real64), intent(in), dimension(:) :: tau
+
5217 complex(real64), intent(inout), dimension(:) :: b
+
5218 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5219 integer(int32), intent(out), optional :: olwork
+
5220 class(errors), intent(inout), optional, target :: err
+
5221 end subroutine
+
5222end interface
+
5223
+
5224! ******************************************************************************
+
5225! LINALG_EIGEN.F90
+
5226! ------------------------------------------------------------------------------
+
5227interface
+
5228 module subroutine eigen_symm(vecs, a, vals, work, olwork, err)
+
5229 logical, intent(in) :: vecs
+
5230 real(real64), intent(inout), dimension(:,:) :: a
+
5231 real(real64), intent(out), dimension(:) :: vals
+
5232 real(real64), intent(out), pointer, optional, dimension(:) :: work
+
5233 integer(int32), intent(out), optional :: olwork
+
5234 class(errors), intent(inout), optional, target :: err
+
5235 end subroutine
+
5236
+
5237 module subroutine eigen_asymm(a, vals, vecs, work, olwork, err)
+
5238 real(real64), intent(inout), dimension(:,:) :: a
+
5239 complex(real64), intent(out), dimension(:) :: vals
+
5240 complex(real64), intent(out), optional, dimension(:,:) :: vecs
+
5241 real(real64), intent(out), pointer, optional, dimension(:) :: work
+
5242 integer(int32), intent(out), optional :: olwork
+
5243 class(errors), intent(inout), optional, target :: err
+
5244 end subroutine
+
5245
+
5246 module subroutine eigen_gen(a, b, alpha, beta, vecs, work, olwork, err)
+
5247 real(real64), intent(inout), dimension(:,:) :: a, b
+
5248 complex(real64), intent(out), dimension(:) :: alpha
+
5249 real(real64), intent(out), optional, dimension(:) :: beta
+
5250 complex(real64), intent(out), optional, dimension(:,:) :: vecs
+
5251 real(real64), intent(out), optional, pointer, dimension(:) :: work
+
5252 integer(int32), intent(out), optional :: olwork
+
5253 class(errors), intent(inout), optional, target :: err
+
5254 end subroutine
+
5255
+
5256 module subroutine eigen_cmplx(a, vals, vecs, work, olwork, rwork, err)
+
5257 complex(real64), intent(inout), dimension(:,:) :: a
+
5258 complex(real64), intent(out), dimension(:) :: vals
+
5259 complex(real64), intent(out), optional, dimension(:,:) :: vecs
+
5260 complex(real64), intent(out), target, optional, dimension(:) :: work
+
5261 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
5262 integer(int32), intent(out), optional :: olwork
+
5263 class(errors), intent(inout), optional, target :: err
+
5264 end subroutine
+
5265end interface
+
5266
+
5267! ******************************************************************************
+
5268! LINALG_SORTING.F90
+
5269! ------------------------------------------------------------------------------
+
5270interface
+
5271 module subroutine sort_dbl_array(x, ascend)
+
5272 real(real64), intent(inout), dimension(:) :: x
+
5273 logical, intent(in), optional :: ascend
+
5274 end subroutine
+
5275
+
5276 module subroutine sort_dbl_array_ind(x, ind, ascend, err)
+
5277 real(real64), intent(inout), dimension(:) :: x
+
5278 integer(int32), intent(inout), dimension(:) :: ind
+
5279 logical, intent(in), optional :: ascend
+
5280 class(errors), intent(inout), optional, target :: err
+
5281 end subroutine
+
5282
+
5283 module subroutine sort_cmplx_array(x, ascend)
+
5284 complex(real64), intent(inout), dimension(:) :: x
+
5285 logical, intent(in), optional :: ascend
+
5286 end subroutine
+
5287
+
5288 module subroutine sort_cmplx_array_ind(x, ind, ascend, err)
+
5289 complex(real64), intent(inout), dimension(:) :: x
+
5290 integer(int32), intent(inout), dimension(:) :: ind
+
5291 logical, intent(in), optional :: ascend
+
5292 class(errors), intent(inout), optional, target :: err
+
5293 end subroutine
+
5294
+
5295 module subroutine sort_eigen_cmplx(vals, vecs, ascend, err)
+
5296 complex(real64), intent(inout), dimension(:) :: vals
+
5297 complex(real64), intent(inout), dimension(:,:) :: vecs
+
5298 logical, intent(in), optional :: ascend
+
5299 class(errors), intent(inout), optional, target :: err
+
5300 end subroutine
+
5301
+
5302 module subroutine sort_eigen_dbl(vals, vecs, ascend, err)
+
5303 real(real64), intent(inout), dimension(:) :: vals
+
5304 real(real64), intent(inout), dimension(:,:) :: vecs
+
5305 logical, intent(in), optional :: ascend
+
5306 class(errors), intent(inout), optional, target :: err
+
5307 end subroutine
+
5308
+
5309end interface
+
5310
+
5311! ******************************************************************************
+
5312! LINALG_SPARSE.F90
+
5313! ------------------------------------------------------------------------------
+
+
5324 interface nonzero_count
+
5325 module procedure :: nonzero_count_csr
+
5326 module procedure :: nonzero_count_msr
+
+
5327 end interface
+
5328
+
+
5342 interface size
+
5343 module procedure :: csr_size
+
5344 module procedure :: msr_size
+
+
5345 end interface
+
5346
+
+
5368 interface matmul
+
5369 module procedure :: csr_mtx_mtx_mult
+
5370 module procedure :: csr_mtx_vec_mult
+
+
5371 end interface
+
5372
+
+
5384 interface operator(+)
+
5385 module procedure :: csr_mtx_add
+
+
5386 end interface
+
5387
+
+
5399 interface operator(-)
+
5400 module procedure :: csr_mtx_sub
+
+
5401 end interface
+
5402
+
+
5415 interface operator(*)
+
5416 module procedure :: csr_mtx_mult_scalar_1
+
5417 module procedure :: csr_mtx_mult_scalar_2
+
+
5418 end interface
+
5419
+
+
5431 interface operator(/)
+
5432 module procedure :: csr_mtx_divide_scalar_1
+
+
5433 end interface
+
5434
+
5436 interface assignment(=)
+
5437 module procedure :: csr_assign_to_dense
+
5438 module procedure :: dense_assign_to_csr
+
5439 module procedure :: msr_assign_to_dense
+
5440 module procedure :: dense_assign_to_msr
+
5441 module procedure :: csr_assign_to_msr
+
5442 module procedure :: msr_assign_to_csr
+
5443 end interface
+
5444
+
+
5454 interface transpose
+
5455 module procedure :: csr_transpose
+
+
5456 end interface
+
5457
+
+
5482 interface sparse_direct_solve
+
5483 module procedure :: csr_solve_sparse_direct
+
+
5484 end interface
+
5485
+
+
5532 interface pgmres_solver
+
5533 module procedure :: csr_pgmres_solver
+
+
5534 end interface
+
5535
+
5536 interface
+
5537 module function csr_get_element(this, i, j) result(rst)
+
5538 class(csr_matrix), intent(in) :: this
+
5539 integer(int32), intent(in) :: i, j
+
5540 real(real64) :: rst
+
5541 end function
+
5542 pure module function csr_size(x, dim) result(rst)
+
5543 class(csr_matrix), intent(in) :: x
+
5544 integer(int32), intent(in) :: dim
+
5545 integer(int32) :: rst
+
5546 end function
+
5547
+
5548 module function create_empty_csr_matrix(m, n, nnz, err) result(rst)
+
5549 integer(int32), intent(in) :: m, n, nnz
+
5550 class(errors), intent(inout), optional, target :: err
+
5551 type(csr_matrix) :: rst
+
5552 end function
+
5553
+
5554 pure module function nonzero_count_csr(x) result(rst)
+
5555 class(csr_matrix), intent(in) :: x
+
5556 integer(int32) :: rst
+
5557 end function
+
5558
+
5559 module function dense_to_csr(a, err) result(rst)
+
5560 real(real64), intent(in), dimension(:,:) :: a
+
5561 class(errors), intent(inout), optional, target :: err
+
5562 type(csr_matrix) :: rst
+
5563 end function
+
5564
+
5565 module subroutine csr_to_dense(a, x, err)
+
5566 class(csr_matrix), intent(in) :: a
+
5567 real(real64), intent(out), dimension(:,:) :: x
+
5568 class(errors), intent(inout), optional, target :: err
+
5569 end subroutine
+
5570
+
5571 module function csr_mtx_mtx_mult(a, b) result(rst)
+
5572 class(csr_matrix), intent(in) :: a, b
+
5573 type(csr_matrix) :: rst
+
5574 end function
+
5575
+
5576 module function csr_mtx_vec_mult(a, b) result(rst)
+
5577 class(csr_matrix), intent(in) :: a
+
5578 real(real64), intent(in), dimension(:) :: b
+
5579 real(real64), allocatable, dimension(:) :: rst
+
5580 end function
+
5581
+
5582 module function csr_mtx_add(a, b) result(rst)
+
5583 class(csr_matrix), intent(in) :: a, b
+
5584 type(csr_matrix) :: rst
+
5585 end function
+
5586
+
5587 module function csr_mtx_sub(a, b) result(rst)
+
5588 class(csr_matrix), intent(in) :: a, b
+
5589 type(csr_matrix) :: rst
+
5590 end function
+
5591
+
5592 module function csr_mtx_mult_scalar_1(a, b) result(rst)
+
5593 class(csr_matrix), intent(in) :: a
+
5594 real(real64), intent(in) :: b
+
5595 type(csr_matrix) :: rst
+
5596 end function
+
5597
+
5598 module function csr_mtx_mult_scalar_2(a, b) result(rst)
+
5599 real(real64), intent(in) :: a
+
5600 class(csr_matrix), intent(in) :: b
+
5601 type(csr_matrix) :: rst
+
5602 end function
+
5603
+
5604 module function csr_mtx_divide_scalar_1(a, b) result(rst)
+
5605 class(csr_matrix), intent(in) :: a
+
5606 real(real64), intent(in) :: b
+
5607 type(csr_matrix) :: rst
+
5608 end function
+
5609
+
5610 module function csr_transpose(a) result(rst)
+
5611 class(csr_matrix), intent(in) :: a
+
5612 type(csr_matrix) :: rst
+
5613 end function
+
5614
+
5615 module subroutine extract_diagonal_csr(a, diag, err)
+
5616 class(csr_matrix), intent(in) :: a
+
5617 real(real64), intent(out), dimension(:) :: diag
+
5618 class(errors), intent(inout), optional, target :: err
+
5619 end subroutine
+
5620
+
5621 module subroutine csr_solve_sparse_direct(a, b, x, droptol, err)
+
5622 class(csr_matrix), intent(in) :: a
+
5623 real(real64), intent(in), dimension(:) :: b
+
5624 real(real64), intent(out), dimension(:) :: x
+
5625 real(real64), intent(in), optional :: droptol
+
5626 class(errors), intent(inout), optional, target :: err
+
5627 end subroutine
+
5628
+
5629 module function diag_to_csr(a, err) result(rst)
+
5630 real(real64), intent(in), dimension(:) :: a
+
5631 class(errors), intent(inout), optional, target :: err
+
5632 type(csr_matrix) :: rst
+
5633 end function
+
5634
+
5635 module function banded_to_csr(m, ml, mu, a, err) result(rst)
+
5636 integer(int32), intent(in) :: m, ml, mu
+
5637 real(real64), intent(in), dimension(:,:) :: a
+
5638 class(errors), intent(inout), optional, target :: err
+
5639 type(csr_matrix) :: rst
+
5640 end function
+
5641
+
5642 module subroutine csr_assign_to_dense(dense, sparse)
+
5643 real(real64), intent(out), dimension(:,:) :: dense
+
5644 class(csr_matrix), intent(in) :: sparse
+
5645 end subroutine
+
5646
+
5647 module subroutine dense_assign_to_csr(sparse, dense)
+
5648 type(csr_matrix), intent(out) :: sparse
+
5649 real(real64), intent(in), dimension(:,:) :: dense
+
5650 end subroutine
+
5651
+
5652 pure module function msr_size(x, dim) result(rst)
+
5653 class(msr_matrix), intent(in) :: x
+
5654 integer(int32), intent(in) :: dim
+
5655 integer(int32) :: rst
+
5656 end function
+
5657
+
5658 pure module function nonzero_count_msr(x) result(rst)
+
5659 class(msr_matrix), intent(in) :: x
+
5660 integer(int32) :: rst
+
5661 end function
+
5662
+
5663 module function create_empty_msr_matrix(m, n, nnz, err) result(rst)
+
5664 integer(int32), intent(in) :: m, n, nnz
+
5665 class(errors), intent(inout), optional, target :: err
+
5666 type(msr_matrix) :: rst
+
5667 end function
+
5668
+
5669 module function csr_to_msr(a, err) result(rst)
+
5670 class(csr_matrix), intent(in) :: a
+
5671 class(errors), intent(inout), optional, target :: err
+
5672 type(msr_matrix) :: rst
+
5673 end function
+
5674
+
5675 module function msr_to_csr(a, err) result(rst)
+
5676 class(msr_matrix), intent(in) :: a
+
5677 class(errors), intent(inout), optional, target :: err
+
5678 type(csr_matrix) :: rst
+
5679 end function
+
5680
+
5681 module function dense_to_msr(a, err) result(rst)
+
5682 real(real64), intent(in), dimension(:,:) :: a
+
5683 class(errors), intent(inout), optional, target :: err
+
5684 type(msr_matrix) :: rst
+
5685 end function
+
5686
+
5687 module subroutine msr_to_dense(a, x, err)
+
5688 ! Arguments
+
5689 class(msr_matrix), intent(in) :: a
+
5690 real(real64), intent(out), dimension(:,:) :: x
+
5691 class(errors), intent(inout), optional, target :: err
+
5692 end subroutine
+
5693
+
5694 module subroutine msr_assign_to_dense(dense, msr)
+
5695 real(real64), intent(out), dimension(:,:) :: dense
+
5696 class(msr_matrix), intent(in) :: msr
+
5697 end subroutine
+
5698
+
5699 module subroutine dense_assign_to_msr(msr, dense)
+
5700 type(msr_matrix), intent(out) :: msr
+
5701 real(real64), intent(in), dimension(:,:) :: dense
+
5702 end subroutine
+
5703
+
5704 module subroutine csr_assign_to_msr(msr, csr)
+
5705 type(msr_matrix), intent(out) :: msr
+
5706 class(csr_matrix), intent(in) :: csr
+
5707 end subroutine
+
5708
+
5709 module subroutine msr_assign_to_csr(csr, msr)
+
5710 type(csr_matrix), intent(out) :: csr
+
5711 class(msr_matrix), intent(in) :: msr
+
5712 end subroutine
+
5713
+
5714 module subroutine csr_lu_factor(a, lu, ju, droptol, err)
+
5715 class(csr_matrix), intent(in) :: a
+
5716 type(msr_matrix), intent(out) :: lu
+
5717 integer(int32), intent(out), dimension(:) :: ju
+
5718 real(real64), intent(in), optional :: droptol
+
5719 class(errors), intent(inout), optional, target :: err
+
5720 end subroutine
+
5721
+
5722 module subroutine csr_lu_solve(lu, ju, b, x, err)
+
5723 class(msr_matrix), intent(in) :: lu
+
5724 integer(int32), intent(in), dimension(:) :: ju
+
5725 real(real64), intent(in), dimension(:) :: b
+
5726 real(real64), intent(out), dimension(:) :: x
+
5727 class(errors), intent(inout), optional, target :: err
+
5728 end subroutine
+
5729
+
5730 module subroutine csr_pgmres_solver(a, lu, ju, b, x, im, tol, maxits, &
+
5731 iout, err)
+
5732 class(csr_matrix), intent(in) :: a
+
5733 class(msr_matrix), intent(in) :: lu
+
5734 integer(int32), intent(in), dimension(:) :: ju
+
5735 real(real64), intent(inout), dimension(:) :: b
+
5736 real(real64), intent(out), dimension(:) :: x
+
5737 integer(int32), intent(in), optional :: im, maxits, iout
+
5738 real(real64), intent(in), optional :: tol
+
5739 class(errors), intent(inout), optional, target :: err
+
5740 end subroutine
+
5741 end interface
+
5742
+
5743! ------------------------------------------------------------------------------
+
5744end module
+
Multiplies a banded matrix, A, with a diagonal matrix, B, such that A = alpha * A * B,...
Definition linalg.f90:4132
+
Multiplies a banded matrix, A, by a vector x such that alpha * op(A) * x + beta * y = y.
Definition linalg.f90:4027
+
Converts a banded matrix stored in dense form to a full matrix.
Definition linalg.f90:4069
+
Converts a banded matrix to a dense matrix.
Definition linalg.f90:4160
+
Computes the Cholesky factorization of a symmetric, positive definite matrix.
Definition linalg.f90:1686
+
Computes the rank 1 downdate to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1892
+
Computes the rank 1 update to a Cholesky factored matrix (upper triangular).
Definition linalg.f90:1785
+
Converts a dense matrix to a banded matrix.
Definition linalg.f90:4185
+
Computes the determinant of a square matrix.
Definition linalg.f90:658
+
Multiplies a diagonal matrix with another matrix or array.
Definition linalg.f90:552
+
Computes the eigenvalues, and optionally the eigenvectors, of a matrix.
Definition linalg.f90:3370
+
Extracts the diagonal of a matrix.
Definition linalg.f90:4207
+
Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorit...
Definition linalg.f90:3681
+
Extracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor.
Definition linalg.f90:966
+
Forms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR fact...
Definition linalg.f90:1280
+
Computes the LQ factorization of an M-by-N matrix.
Definition linalg.f90:3567
+
Computes the LU factorization of an M-by-N matrix.
Definition linalg.f90:843
+
Performs sparse matrix multiplication C = A * B.
Definition linalg.f90:5368
+
Computes the inverse of a square matrix.
Definition linalg.f90:3050
+
Performs the matrix operation: .
Definition linalg.f90:360
+
Computes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition o...
Definition linalg.f90:3156
+
Computes the rank of a matrix.
Definition linalg.f90:625
+
Multiplies a general matrix by the orthogonal matrix Q from a LQ factorization.
Definition linalg.f90:3830
+
Multiplies a general matrix by the orthogonal matrix Q from a QR factorization.
Definition linalg.f90:1437
+
Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization.
Definition linalg.f90:2056
+
Determines the number of nonzero entries in a sparse matrix.
Definition linalg.f90:5324
+
A preconditioned GMRES solver.
Definition linalg.f90:5532
+
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1120
+
Computes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where , and such that ....
Definition linalg.f90:1587
+
Performs the rank-1 update to matrix A such that: , where is an M-by-N matrix, is a scalar,...
Definition linalg.f90:395
+
Multiplies a vector by the reciprocal of a real scalar.
Definition linalg.f90:699
+
Factors an upper trapezoidal matrix by means of orthogonal transformations such that ....
Definition linalg.f90:1965
+
Solves a system of Cholesky factored equations.
Definition linalg.f90:2662
+
Solves the overdetermined or underdetermined system of M equations of N unknowns,...
Definition linalg.f90:2853
+
Solves the overdetermined or underdetermined system of M equations of N unknowns using a singular va...
Definition linalg.f90:2955
+
Solves the overdetermined or underdetermined system of M equations of N unknowns....
Definition linalg.f90:2752
+
Solves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M.
Definition linalg.f90:3925
+
Solves a system of LU-factored equations.
Definition linalg.f90:2420
+
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2556
+
Solves a triangular system of equations.
Definition linalg.f90:2315
+
Sorts an array.
Definition linalg.f90:3453
+
Provides a direct solution to a square, sparse system.
Definition linalg.f90:5482
+
Computes the singular value decomposition of a matrix A. The SVD is defined as: , where is an M-by-M...
Definition linalg.f90:2181
+
Swaps the contents of two arrays.
Definition linalg.f90:680
+
Computes the trace of a matrix (the sum of the main diagonal elements).
Definition linalg.f90:577
+
Provides the transpose of a sparse matrix.
Definition linalg.f90:5454
+
Computes the triangular matrix operation: , or , where A is a triangular matrix.
Definition linalg.f90:733
Provides a set of common linear algebra routines.
Definition linalg.f90:145
+
A sparse matrix stored in compressed sparse row (CSR) format.
Definition linalg.f90:232
+
A sparse matrix stored in modified sparse row format. This format is convenient for situations where ...
Definition linalg.f90:252
diff --git a/docs/html/linalg_8h.html b/docs/html/linalg_8h.html index 9a71e207..7e979cff 100644 --- a/docs/html/linalg_8h.html +++ b/docs/html/linalg_8h.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg_8h_source.html b/docs/html/linalg_8h_source.html index 7d625457..a670b284 100644 --- a/docs/html/linalg_8h_source.html +++ b/docs/html/linalg_8h_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg__basic_8f90_source.html b/docs/html/linalg__basic_8f90_source.html index 83d26025..51a27d5f 100644 --- a/docs/html/linalg__basic_8f90_source.html +++ b/docs/html/linalg__basic_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -1496,928 +1496,928 @@
1387 end if
1388 end subroutine
1389
-
1390! ******************************************************************************
-
1391! BASIC OPERATION ROUTINES
-
1392! ------------------------------------------------------------------------------
-
1393 pure module function trace_dbl(x) result(y)
-
1394 ! Arguments
-
1395 real(real64), intent(in), dimension(:,:) :: x
-
1396 real(real64) :: y
-
1397
-
1398 ! Parameters
-
1399 real(real64), parameter :: zero = 0.0d0
-
1400
-
1401 ! Local Variables
-
1402 integer(int32) :: i, m, n, mn
-
1403
-
1404 ! Initialization
-
1405 y = zero
-
1406 m = size(x, 1)
-
1407 n = size(x, 2)
-
1408 mn = min(m, n)
-
1409
-
1410 ! Process
-
1411 do i = 1, mn
-
1412 y = y + x(i,i)
-
1413 end do
-
1414 end function
-
1415
-
1416! ------------------------------------------------------------------------------
-
1417 pure module function trace_cmplx(x) result(y)
-
1418 ! Arguments
-
1419 complex(real64), intent(in), dimension(:,:) :: x
-
1420 complex(real64) :: y
-
1421
-
1422 ! Parameters
-
1423 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
-
1424
-
1425 ! Local Variables
-
1426 integer(int32) :: i, m, n, mn
+
1390! ------------------------------------------------------------------------------
+
1391 module subroutine diag_mtx_sparse_mult(lside, alpha, a, b, err)
+
1392 ! Arguments
+
1393 logical, intent(in) :: lside
+
1394 real(real64), intent(in) :: alpha
+
1395 real(real64), intent(in), dimension(:) :: a
+
1396 type(csr_matrix), intent(inout) :: b
+
1397 class(errors), intent(inout), optional, target :: err
+
1398
+
1399 ! Local Variables
+
1400 integer(int32) :: ii, k, k1, k2, nrow
+
1401 real(real64) :: scal
+
1402 class(errors), pointer :: errmgr
+
1403 type(errors), target :: deferr
+
1404
+
1405 ! Initialization
+
1406 nrow = size(b, 1)
+
1407 if (present(err)) then
+
1408 errmgr => err
+
1409 else
+
1410 errmgr => deferr
+
1411 end if
+
1412
+
1413 ! Input Check
+
1414 if (lside) then
+
1415 if (size(a) /= nrow) then
+
1416 call errmgr%report_error("diag_mtx_sparse_mult", &
+
1417 "Inner matrix dimension error.", la_array_size_error)
+
1418 return
+
1419 end if
+
1420 else
+
1421 if (size(a) /= size(b, 2)) then
+
1422 call errmgr%report_error("diag_mtx_sparse_mult", &
+
1423 "Inner matrix dimension error.", la_array_size_error)
+
1424 return
+
1425 end if
+
1426 end if
1427
-
1428 ! Initialization
-
1429 y = zero
-
1430 m = size(x, 1)
-
1431 n = size(x, 2)
-
1432 mn = min(m, n)
-
1433
-
1434 ! Process
-
1435 do i = 1, mn
-
1436 y = y + x(i,i)
-
1437 end do
-
1438 end function
-
1439
-
1440! ------------------------------------------------------------------------------
-
1441 module function mtx_rank_dbl(a, tol, work, olwork, err) result(rnk)
-
1442 ! Arguments
-
1443 real(real64), intent(inout), dimension(:,:) :: a
-
1444 real(real64), intent(in), optional :: tol
-
1445 real(real64), intent(out), target, optional, dimension(:) :: work
-
1446 integer(int32), intent(out), optional :: olwork
-
1447 class(errors), intent(inout), optional, target :: err
-
1448 integer(int32) :: rnk
-
1449
-
1450 ! Local Variables
-
1451 integer(int32) :: i, m, n, mn, istat, lwork, flag
-
1452 real(real64), pointer, dimension(:) :: wptr, s, w
-
1453 real(real64), allocatable, target, dimension(:) :: wrk
-
1454 real(real64) :: t, tref, smlnum
-
1455 real(real64), dimension(1) :: dummy, temp
-
1456 class(errors), pointer :: errmgr
-
1457 type(errors), target :: deferr
-
1458 character(len = :), allocatable :: errmsg
-
1459
-
1460 ! Initialization
-
1461 m = size(a, 1)
-
1462 n = size(a, 2)
-
1463 mn = min(m, n)
-
1464 smlnum = dlamch('s')
-
1465 rnk = 0
-
1466 if (present(err)) then
-
1467 errmgr => err
-
1468 else
-
1469 errmgr => deferr
-
1470 end if
+
1428 ! Process
+
1429 if (lside) then
+
1430 ! Compute B = DIAG * B
+
1431 do ii = 1, nrow
+
1432 k1 = b%row_indices(ii)
+
1433 k2 = b%row_indices(ii+1) - 1
+
1434 if (alpha == 1.0d0) then
+
1435 scal = a(ii)
+
1436 else
+
1437 scal = alpha * a(ii)
+
1438 end if
+
1439 do k = k1, k2
+
1440 b%values(k) = b%values(k) * scal
+
1441 end do
+
1442 end do
+
1443 else
+
1444 ! Compute B = B * DIAG
+
1445 do ii = 1, nrow
+
1446 k1 = b%row_indices(ii)
+
1447 k2 = b%row_indices(ii+1) - 1
+
1448 if (alpha == 1.0d0) then
+
1449 do k = k1, k2
+
1450 b%values(k) = b%values(k) * a(b%column_indices(k))
+
1451 end do
+
1452 else
+
1453 do k = k1, k2
+
1454 b%values(k) = alpha * b%values(k) * a(b%column_indices(k))
+
1455 end do
+
1456 end if
+
1457 end do
+
1458 end if
+
1459 end subroutine
+
1460
+
1461! ******************************************************************************
+
1462! BASIC OPERATION ROUTINES
+
1463! ------------------------------------------------------------------------------
+
1464 pure module function trace_dbl(x) result(y)
+
1465 ! Arguments
+
1466 real(real64), intent(in), dimension(:,:) :: x
+
1467 real(real64) :: y
+
1468
+
1469 ! Parameters
+
1470 real(real64), parameter :: zero = 0.0d0
1471
-
1472 ! Workspace Query
-
1473 !call svd(a, a(1:mn,1), olwork = lwork)
-
1474 call dgesvd('N', 'N', m, n, a, m, dummy, dummy, m, dummy, n, temp, &
-
1475 -1, flag)
-
1476 lwork = int(temp(1), int32) + mn
-
1477 if (present(olwork)) then
-
1478 olwork = lwork
-
1479 return
-
1480 end if
-
1481
-
1482 ! Local Memory Allocation
-
1483 if (present(work)) then
-
1484 if (size(work) < lwork) then
-
1485 ! ERROR: WORK not sized correctly
-
1486 call errmgr%report_error("mtx_rank", &
-
1487 "Incorrectly sized input array WORK, argument 5.", &
-
1488 la_array_size_error)
-
1489 return
-
1490 end if
-
1491 wptr => work(1:lwork)
-
1492 else
-
1493 allocate(wrk(lwork), stat = istat)
-
1494 if (istat /= 0) then
-
1495 ! ERROR: Out of memory
-
1496 call errmgr%report_error("mtx_rank", &
-
1497 "Insufficient memory available.", &
-
1498 la_out_of_memory_error)
-
1499 return
-
1500 end if
-
1501 wptr => wrk
-
1502 end if
-
1503 s => wptr(1:mn)
-
1504 w => wptr(mn+1:lwork)
-
1505
-
1506 ! Compute the singular values of A
-
1507 call dgesvd('N', 'N', m, n, a, m, s, dummy, m, dummy, n, w, &
-
1508 lwork - mn, flag)
-
1509 if (flag > 0) then
-
1510 allocate(character(len = 256) :: errmsg)
-
1511 write(errmsg, 100) flag, " superdiagonals could not " // &
-
1512 "converge to zero as part of the QR iteration process."
-
1513 call errmgr%report_warning("mtx_rank", errmsg, la_convergence_error)
-
1514 end if
-
1515
-
1516 ! Determine the threshold tolerance for the singular values such that
-
1517 ! singular values less than the threshold result in zero when inverted.
-
1518 tref = max(m, n) * epsilon(t) * s(1)
-
1519 if (present(tol)) then
-
1520 t = tol
-
1521 else
-
1522 t = tref
-
1523 end if
-
1524 if (t < smlnum) then
-
1525 ! ! The supplied tolerance is too small, simply fall back to the
-
1526 ! ! default, but issue a warning to the user
-
1527 ! t = tref
-
1528 ! call report_warning("mtx_rank", "The supplied tolerance was " // &
-
1529 ! "smaller than a value that would result in an overflow " // &
-
1530 ! "condition, or is negative; therefore, the tolerance has " // &
-
1531 ! "been reset to its default value.")
-
1532 end if
-
1533
-
1534 ! Count the singular values that are larger than the tolerance value
-
1535 do i = 1, mn
-
1536 if (s(i) < t) exit
-
1537 rnk = rnk + 1
-
1538 end do
-
1539
-
1540 ! Formatting
-
1541100 format(i0, a)
-
1542 end function
-
1543
-
1544! ------------------------------------------------------------------------------
-
1545 module function mtx_rank_cmplx(a, tol, work, olwork, rwork, err) result(rnk)
-
1546 ! Arguments
-
1547 complex(real64), intent(inout), dimension(:,:) :: a
-
1548 real(real64), intent(in), optional :: tol
-
1549 complex(real64), intent(out), target, optional, dimension(:) :: work
-
1550 integer(int32), intent(out), optional :: olwork
-
1551 real(real64), intent(out), target, optional, dimension(:) :: rwork
-
1552 class(errors), intent(inout), optional, target :: err
-
1553 integer(int32) :: rnk
-
1554
-
1555 ! External Function Interfaces
-
1556 interface
-
1557 function dlamch(cmach) result(x)
-
1558 use, intrinsic :: iso_fortran_env, only : real64
-
1559 character, intent(in) :: cmach
-
1560 real(real64) :: x
-
1561 end function
-
1562 end interface
-
1563
-
1564 ! Local Variables
-
1565 integer(int32) :: i, m, n, mn, istat, lwork, flag, lrwork
-
1566 real(real64), pointer, dimension(:) :: s, rwptr, rw
-
1567 real(real64), allocatable, target, dimension(:) :: rwrk
-
1568 complex(real64), allocatable, target, dimension(:) :: wrk
-
1569 complex(real64), pointer, dimension(:) :: wptr
-
1570 real(real64) :: t, tref, smlnum
-
1571 real(real64), dimension(1) :: dummy
-
1572 complex(real64), dimension(1) :: cdummy, temp
-
1573 class(errors), pointer :: errmgr
-
1574 type(errors), target :: deferr
-
1575 character(len = :), allocatable :: errmsg
+
1472 ! Local Variables
+
1473 integer(int32) :: i, m, n, mn
+
1474
+
1475 ! Initialization
+
1476 y = zero
+
1477 m = size(x, 1)
+
1478 n = size(x, 2)
+
1479 mn = min(m, n)
+
1480
+
1481 ! Process
+
1482 do i = 1, mn
+
1483 y = y + x(i,i)
+
1484 end do
+
1485 end function
+
1486
+
1487! ------------------------------------------------------------------------------
+
1488 pure module function trace_cmplx(x) result(y)
+
1489 ! Arguments
+
1490 complex(real64), intent(in), dimension(:,:) :: x
+
1491 complex(real64) :: y
+
1492
+
1493 ! Parameters
+
1494 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
+
1495
+
1496 ! Local Variables
+
1497 integer(int32) :: i, m, n, mn
+
1498
+
1499 ! Initialization
+
1500 y = zero
+
1501 m = size(x, 1)
+
1502 n = size(x, 2)
+
1503 mn = min(m, n)
+
1504
+
1505 ! Process
+
1506 do i = 1, mn
+
1507 y = y + x(i,i)
+
1508 end do
+
1509 end function
+
1510
+
1511! ------------------------------------------------------------------------------
+
1512 module function mtx_rank_dbl(a, tol, work, olwork, err) result(rnk)
+
1513 ! Arguments
+
1514 real(real64), intent(inout), dimension(:,:) :: a
+
1515 real(real64), intent(in), optional :: tol
+
1516 real(real64), intent(out), target, optional, dimension(:) :: work
+
1517 integer(int32), intent(out), optional :: olwork
+
1518 class(errors), intent(inout), optional, target :: err
+
1519 integer(int32) :: rnk
+
1520
+
1521 ! Local Variables
+
1522 integer(int32) :: i, m, n, mn, istat, lwork, flag
+
1523 real(real64), pointer, dimension(:) :: wptr, s, w
+
1524 real(real64), allocatable, target, dimension(:) :: wrk
+
1525 real(real64) :: t, tref, smlnum
+
1526 real(real64), dimension(1) :: dummy, temp
+
1527 class(errors), pointer :: errmgr
+
1528 type(errors), target :: deferr
+
1529 character(len = :), allocatable :: errmsg
+
1530
+
1531 ! Initialization
+
1532 m = size(a, 1)
+
1533 n = size(a, 2)
+
1534 mn = min(m, n)
+
1535 smlnum = dlamch('s')
+
1536 rnk = 0
+
1537 if (present(err)) then
+
1538 errmgr => err
+
1539 else
+
1540 errmgr => deferr
+
1541 end if
+
1542
+
1543 ! Workspace Query
+
1544 !call svd(a, a(1:mn,1), olwork = lwork)
+
1545 call dgesvd('N', 'N', m, n, a, m, dummy, dummy, m, dummy, n, temp, &
+
1546 -1, flag)
+
1547 lwork = int(temp(1), int32) + mn
+
1548 if (present(olwork)) then
+
1549 olwork = lwork
+
1550 return
+
1551 end if
+
1552
+
1553 ! Local Memory Allocation
+
1554 if (present(work)) then
+
1555 if (size(work) < lwork) then
+
1556 ! ERROR: WORK not sized correctly
+
1557 call errmgr%report_error("mtx_rank", &
+
1558 "Incorrectly sized input array WORK, argument 5.", &
+
1559 la_array_size_error)
+
1560 return
+
1561 end if
+
1562 wptr => work(1:lwork)
+
1563 else
+
1564 allocate(wrk(lwork), stat = istat)
+
1565 if (istat /= 0) then
+
1566 ! ERROR: Out of memory
+
1567 call errmgr%report_error("mtx_rank", &
+
1568 "Insufficient memory available.", &
+
1569 la_out_of_memory_error)
+
1570 return
+
1571 end if
+
1572 wptr => wrk
+
1573 end if
+
1574 s => wptr(1:mn)
+
1575 w => wptr(mn+1:lwork)
1576
-
1577 ! Initialization
-
1578 m = size(a, 1)
-
1579 n = size(a, 2)
-
1580 mn = min(m, n)
-
1581 lrwork = 6 * mn
-
1582 smlnum = dlamch('s')
-
1583 rnk = 0
-
1584 if (present(err)) then
-
1585 errmgr => err
-
1586 else
-
1587 errmgr => deferr
-
1588 end if
-
1589
-
1590 ! Workspace Query
-
1591 call zgesvd('N', 'N', m, n, a, m, dummy, cdummy, m, cdummy, n, temp, &
-
1592 -1, dummy, flag)
-
1593 lwork = int(temp(1), int32)
-
1594 if (present(olwork)) then
-
1595 olwork = lwork
-
1596 return
-
1597 end if
-
1598
-
1599 ! Local Memory Allocation
-
1600 if (present(work)) then
-
1601 if (size(work) < lwork) then
-
1602 ! ERROR: WORK not sized correctly
-
1603 call errmgr%report_error("mtx_rank_cmplx", &
-
1604 "Incorrectly sized input array WORK, argument 5.", &
-
1605 la_array_size_error)
-
1606 return
-
1607 end if
-
1608 wptr => work(1:lwork)
-
1609 else
-
1610 allocate(wrk(lwork), stat = istat)
-
1611 if (istat /= 0) then
-
1612 ! ERROR: Out of memory
-
1613 call errmgr%report_error("mtx_rank_cmplx", &
-
1614 "Insufficient memory available.", &
-
1615 la_out_of_memory_error)
-
1616 return
-
1617 end if
-
1618 wptr => wrk
-
1619 end if
-
1620
-
1621 if (present(rwork)) then
-
1622 if (size(rwork) < lrwork) then
-
1623 ! ERROR: RWORK not sized correctly
-
1624 call errmgr%report_error("mtx_rank_cmplx", &
-
1625 "Incorrectly sized input array RWORK.", &
-
1626 la_array_size_error)
-
1627 return
-
1628 end if
-
1629 rwptr => rwork(1:lrwork)
-
1630 else
-
1631 allocate(rwrk(lrwork), stat = istat)
-
1632 if (istat /= 0) then
-
1633 end if
-
1634 rwptr => rwrk
-
1635 end if
-
1636 s => rwptr(1:mn)
-
1637 rw => rwptr(mn+1:lrwork)
-
1638
-
1639 ! Compute the singular values of A
-
1640 call zgesvd('N', 'N', m, n, a, m, s, cdummy, m, cdummy, n, wptr, &
-
1641 lwork - mn, rw, flag)
-
1642 if (flag > 0) then
-
1643 allocate(character(len = 256) :: errmsg)
-
1644 write(errmsg, 100) flag, " superdiagonals could not " // &
-
1645 "converge to zero as part of the QR iteration process."
-
1646 call errmgr%report_warning("mtx_rank_cmplx", errmsg, la_convergence_error)
-
1647 end if
-
1648
-
1649 ! Determine the threshold tolerance for the singular values such that
-
1650 ! singular values less than the threshold result in zero when inverted.
-
1651 tref = max(m, n) * epsilon(t) * s(1)
-
1652 if (present(tol)) then
-
1653 t = tol
-
1654 else
-
1655 t = tref
-
1656 end if
-
1657 if (t < smlnum) then
-
1658 ! ! The supplied tolerance is too small, simply fall back to the
-
1659 ! ! default, but issue a warning to the user
-
1660 ! t = tref
-
1661 ! call report_warning("mtx_rank", "The supplied tolerance was " // &
-
1662 ! "smaller than a value that would result in an overflow " // &
-
1663 ! "condition, or is negative; therefore, the tolerance has " // &
-
1664 ! "been reset to its default value.")
-
1665 end if
-
1666
-
1667 ! Count the singular values that are larger than the tolerance value
-
1668 do i = 1, mn
-
1669 if (s(i) < t) exit
-
1670 rnk = rnk + 1
-
1671 end do
-
1672
-
1673 ! Formatting
-
1674100 format(i0, a)
-
1675 end function
-
1676
-
1677! ------------------------------------------------------------------------------
-
1678 module function det_dbl(a, iwork, err) result(x)
-
1679 ! Arguments
-
1680 real(real64), intent(inout), dimension(:,:) :: a
-
1681 integer(int32), intent(out), target, optional, dimension(:) :: iwork
-
1682 class(errors), intent(inout), optional, target :: err
-
1683 real(real64) :: x
-
1684
-
1685 ! Parameters
-
1686 real(real64), parameter :: zero = 0.0d0
-
1687 real(real64), parameter :: one = 1.0d0
-
1688 real(real64), parameter :: ten = 1.0d1
-
1689 real(real64), parameter :: p1 = 1.0d-1
-
1690
-
1691 ! Local Variables
-
1692 integer(int32) :: i, ep, n, istat, flag
-
1693 integer(int32), pointer, dimension(:) :: ipvt
-
1694 integer(int32), allocatable, target, dimension(:) :: iwrk
-
1695 real(real64) :: temp
-
1696 class(errors), pointer :: errmgr
-
1697 type(errors), target :: deferr
-
1698
-
1699 ! Initialization
-
1700 n = size(a, 1)
-
1701 x = zero
-
1702 if (present(err)) then
-
1703 errmgr => err
-
1704 else
-
1705 errmgr => deferr
+
1577 ! Compute the singular values of A
+
1578 call dgesvd('N', 'N', m, n, a, m, s, dummy, m, dummy, n, w, &
+
1579 lwork - mn, flag)
+
1580 if (flag > 0) then
+
1581 allocate(character(len = 256) :: errmsg)
+
1582 write(errmsg, 100) flag, " superdiagonals could not " // &
+
1583 "converge to zero as part of the QR iteration process."
+
1584 call errmgr%report_warning("mtx_rank", errmsg, la_convergence_error)
+
1585 end if
+
1586
+
1587 ! Determine the threshold tolerance for the singular values such that
+
1588 ! singular values less than the threshold result in zero when inverted.
+
1589 tref = max(m, n) * epsilon(t) * s(1)
+
1590 if (present(tol)) then
+
1591 t = tol
+
1592 else
+
1593 t = tref
+
1594 end if
+
1595 if (t < smlnum) then
+
1596 ! ! The supplied tolerance is too small, simply fall back to the
+
1597 ! ! default, but issue a warning to the user
+
1598 ! t = tref
+
1599 ! call report_warning("mtx_rank", "The supplied tolerance was " // &
+
1600 ! "smaller than a value that would result in an overflow " // &
+
1601 ! "condition, or is negative; therefore, the tolerance has " // &
+
1602 ! "been reset to its default value.")
+
1603 end if
+
1604
+
1605 ! Count the singular values that are larger than the tolerance value
+
1606 do i = 1, mn
+
1607 if (s(i) < t) exit
+
1608 rnk = rnk + 1
+
1609 end do
+
1610
+
1611 ! Formatting
+
1612100 format(i0, a)
+
1613 end function
+
1614
+
1615! ------------------------------------------------------------------------------
+
1616 module function mtx_rank_cmplx(a, tol, work, olwork, rwork, err) result(rnk)
+
1617 ! Arguments
+
1618 complex(real64), intent(inout), dimension(:,:) :: a
+
1619 real(real64), intent(in), optional :: tol
+
1620 complex(real64), intent(out), target, optional, dimension(:) :: work
+
1621 integer(int32), intent(out), optional :: olwork
+
1622 real(real64), intent(out), target, optional, dimension(:) :: rwork
+
1623 class(errors), intent(inout), optional, target :: err
+
1624 integer(int32) :: rnk
+
1625
+
1626 ! External Function Interfaces
+
1627 interface
+
1628 function dlamch(cmach) result(x)
+
1629 use, intrinsic :: iso_fortran_env, only : real64
+
1630 character, intent(in) :: cmach
+
1631 real(real64) :: x
+
1632 end function
+
1633 end interface
+
1634
+
1635 ! Local Variables
+
1636 integer(int32) :: i, m, n, mn, istat, lwork, flag, lrwork
+
1637 real(real64), pointer, dimension(:) :: s, rwptr, rw
+
1638 real(real64), allocatable, target, dimension(:) :: rwrk
+
1639 complex(real64), allocatable, target, dimension(:) :: wrk
+
1640 complex(real64), pointer, dimension(:) :: wptr
+
1641 real(real64) :: t, tref, smlnum
+
1642 real(real64), dimension(1) :: dummy
+
1643 complex(real64), dimension(1) :: cdummy, temp
+
1644 class(errors), pointer :: errmgr
+
1645 type(errors), target :: deferr
+
1646 character(len = :), allocatable :: errmsg
+
1647
+
1648 ! Initialization
+
1649 m = size(a, 1)
+
1650 n = size(a, 2)
+
1651 mn = min(m, n)
+
1652 lrwork = 6 * mn
+
1653 smlnum = dlamch('s')
+
1654 rnk = 0
+
1655 if (present(err)) then
+
1656 errmgr => err
+
1657 else
+
1658 errmgr => deferr
+
1659 end if
+
1660
+
1661 ! Workspace Query
+
1662 call zgesvd('N', 'N', m, n, a, m, dummy, cdummy, m, cdummy, n, temp, &
+
1663 -1, dummy, flag)
+
1664 lwork = int(temp(1), int32)
+
1665 if (present(olwork)) then
+
1666 olwork = lwork
+
1667 return
+
1668 end if
+
1669
+
1670 ! Local Memory Allocation
+
1671 if (present(work)) then
+
1672 if (size(work) < lwork) then
+
1673 ! ERROR: WORK not sized correctly
+
1674 call errmgr%report_error("mtx_rank_cmplx", &
+
1675 "Incorrectly sized input array WORK, argument 5.", &
+
1676 la_array_size_error)
+
1677 return
+
1678 end if
+
1679 wptr => work(1:lwork)
+
1680 else
+
1681 allocate(wrk(lwork), stat = istat)
+
1682 if (istat /= 0) then
+
1683 ! ERROR: Out of memory
+
1684 call errmgr%report_error("mtx_rank_cmplx", &
+
1685 "Insufficient memory available.", &
+
1686 la_out_of_memory_error)
+
1687 return
+
1688 end if
+
1689 wptr => wrk
+
1690 end if
+
1691
+
1692 if (present(rwork)) then
+
1693 if (size(rwork) < lrwork) then
+
1694 ! ERROR: RWORK not sized correctly
+
1695 call errmgr%report_error("mtx_rank_cmplx", &
+
1696 "Incorrectly sized input array RWORK.", &
+
1697 la_array_size_error)
+
1698 return
+
1699 end if
+
1700 rwptr => rwork(1:lrwork)
+
1701 else
+
1702 allocate(rwrk(lrwork), stat = istat)
+
1703 if (istat /= 0) then
+
1704 end if
+
1705 rwptr => rwrk
1706 end if
-
1707
-
1708 ! Input Check
-
1709 if (size(a, 2) /= n) then
-
1710 call errmgr%report_error("det", &
-
1711 "The supplied matrix must be square.", la_array_size_error)
-
1712 return
-
1713 end if
-
1714
-
1715 ! Local Memory Allocation
-
1716 if (present(iwork)) then
-
1717 if (size(iwork) < n) then
-
1718 ! ERROR: WORK not sized correctly
-
1719 call errmgr%report_error("det", &
-
1720 "Incorrectly sized input array IWORK, argument 2.", &
-
1721 la_array_size_error)
-
1722 return
-
1723 end if
-
1724 ipvt => iwork(1:n)
+
1707 s => rwptr(1:mn)
+
1708 rw => rwptr(mn+1:lrwork)
+
1709
+
1710 ! Compute the singular values of A
+
1711 call zgesvd('N', 'N', m, n, a, m, s, cdummy, m, cdummy, n, wptr, &
+
1712 lwork - mn, rw, flag)
+
1713 if (flag > 0) then
+
1714 allocate(character(len = 256) :: errmsg)
+
1715 write(errmsg, 100) flag, " superdiagonals could not " // &
+
1716 "converge to zero as part of the QR iteration process."
+
1717 call errmgr%report_warning("mtx_rank_cmplx", errmsg, la_convergence_error)
+
1718 end if
+
1719
+
1720 ! Determine the threshold tolerance for the singular values such that
+
1721 ! singular values less than the threshold result in zero when inverted.
+
1722 tref = max(m, n) * epsilon(t) * s(1)
+
1723 if (present(tol)) then
+
1724 t = tol
1725 else
-
1726 allocate(iwrk(n), stat = istat)
-
1727 if (istat /= 0) then
-
1728 ! ERROR: Out of memory
-
1729 call errmgr%report_error("det", &
-
1730 "Insufficient memory available.", &
-
1731 la_out_of_memory_error)
-
1732 return
-
1733 end if
-
1734 ipvt => iwrk
-
1735 end if
-
1736
-
1737 ! Compute the LU factorization of A
-
1738 call dgetrf(n, n, a, n, ipvt, flag)
-
1739 if (flag > 0) then
-
1740 ! A singular matrix has a determinant of zero
-
1741 x = zero
-
1742 return
-
1743 end if
-
1744
-
1745 ! Compute the product of the diagonal of A
-
1746 temp = one
-
1747 ep = 0
-
1748 do i = 1, n
-
1749 if (ipvt(i) /= i) temp = -temp
-
1750
-
1751 temp = a(i,i) * temp
-
1752 if (temp == zero) then
-
1753 x = zero
-
1754 exit
-
1755 end if
-
1756
-
1757 do while (abs(temp) < one)
-
1758 temp = ten * temp
-
1759 ep = ep - 1
-
1760 end do
+
1726 t = tref
+
1727 end if
+
1728 if (t < smlnum) then
+
1729 ! ! The supplied tolerance is too small, simply fall back to the
+
1730 ! ! default, but issue a warning to the user
+
1731 ! t = tref
+
1732 ! call report_warning("mtx_rank", "The supplied tolerance was " // &
+
1733 ! "smaller than a value that would result in an overflow " // &
+
1734 ! "condition, or is negative; therefore, the tolerance has " // &
+
1735 ! "been reset to its default value.")
+
1736 end if
+
1737
+
1738 ! Count the singular values that are larger than the tolerance value
+
1739 do i = 1, mn
+
1740 if (s(i) < t) exit
+
1741 rnk = rnk + 1
+
1742 end do
+
1743
+
1744 ! Formatting
+
1745100 format(i0, a)
+
1746 end function
+
1747
+
1748! ------------------------------------------------------------------------------
+
1749 module function det_dbl(a, iwork, err) result(x)
+
1750 ! Arguments
+
1751 real(real64), intent(inout), dimension(:,:) :: a
+
1752 integer(int32), intent(out), target, optional, dimension(:) :: iwork
+
1753 class(errors), intent(inout), optional, target :: err
+
1754 real(real64) :: x
+
1755
+
1756 ! Parameters
+
1757 real(real64), parameter :: zero = 0.0d0
+
1758 real(real64), parameter :: one = 1.0d0
+
1759 real(real64), parameter :: ten = 1.0d1
+
1760 real(real64), parameter :: p1 = 1.0d-1
1761
-
1762 do while (abs(temp) > ten)
-
1763 temp = p1 * temp
-
1764 ep = ep + 1
-
1765 end do
-
1766 end do
-
1767 x = temp * ten**ep
-
1768 end function
+
1762 ! Local Variables
+
1763 integer(int32) :: i, ep, n, istat, flag
+
1764 integer(int32), pointer, dimension(:) :: ipvt
+
1765 integer(int32), allocatable, target, dimension(:) :: iwrk
+
1766 real(real64) :: temp
+
1767 class(errors), pointer :: errmgr
+
1768 type(errors), target :: deferr
1769
-
1770! ------------------------------------------------------------------------------
-
1771 module function det_cmplx(a, iwork, err) result(x)
-
1772 ! Arguments
-
1773 complex(real64), intent(inout), dimension(:,:) :: a
-
1774 integer(int32), intent(out), target, optional, dimension(:) :: iwork
-
1775 class(errors), intent(inout), optional, target :: err
-
1776 complex(real64) :: x
-
1777
-
1778 ! Parameters
-
1779 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
-
1780 complex(real64), parameter :: one = (1.0d0, 0.0d0)
-
1781 complex(real64), parameter :: ten = (1.0d1, 0.0d0)
-
1782 complex(real64), parameter :: p1 = (1.0d-1, 0.0d0)
-
1783 real(real64), parameter :: real_one = 1.0d0
-
1784 real(real64), parameter :: real_ten = 1.0d1
+
1770 ! Initialization
+
1771 n = size(a, 1)
+
1772 x = zero
+
1773 if (present(err)) then
+
1774 errmgr => err
+
1775 else
+
1776 errmgr => deferr
+
1777 end if
+
1778
+
1779 ! Input Check
+
1780 if (size(a, 2) /= n) then
+
1781 call errmgr%report_error("det", &
+
1782 "The supplied matrix must be square.", la_array_size_error)
+
1783 return
+
1784 end if
1785
-
1786 ! Local Variables
-
1787 integer(int32) :: i, ep, n, istat, flag
-
1788 integer(int32), pointer, dimension(:) :: ipvt
-
1789 integer(int32), allocatable, target, dimension(:) :: iwrk
-
1790 complex(real64) :: temp
-
1791 class(errors), pointer :: errmgr
-
1792 type(errors), target :: deferr
-
1793
-
1794 ! Initialization
-
1795 n = size(a, 1)
-
1796 x = zero
-
1797 if (present(err)) then
-
1798 errmgr => err
-
1799 else
-
1800 errmgr => deferr
-
1801 end if
-
1802
-
1803 ! Input Check
-
1804 if (size(a, 2) /= n) then
-
1805 call errmgr%report_error("det_cmplx", &
-
1806 "The supplied matrix must be square.", la_array_size_error)
-
1807 return
-
1808 end if
-
1809
-
1810 ! Local Memory Allocation
-
1811 if (present(iwork)) then
-
1812 if (size(iwork) < n) then
-
1813 ! ERROR: WORK not sized correctly
-
1814 call errmgr%report_error("det_cmplx", &
-
1815 "Incorrectly sized input array IWORK, argument 2.", &
-
1816 la_array_size_error)
-
1817 return
-
1818 end if
-
1819 ipvt => iwork(1:n)
-
1820 else
-
1821 allocate(iwrk(n), stat = istat)
-
1822 if (istat /= 0) then
-
1823 ! ERROR: Out of memory
-
1824 call errmgr%report_error("det_cmplx", &
-
1825 "Insufficient memory available.", &
-
1826 la_out_of_memory_error)
-
1827 return
-
1828 end if
-
1829 ipvt => iwrk
-
1830 end if
-
1831
-
1832 ! Compute the LU factorization of A
-
1833 call zgetrf(n, n, a, n, ipvt, flag)
-
1834 if (flag > 0) then
-
1835 ! A singular matrix has a determinant of zero
-
1836 x = zero
-
1837 return
-
1838 end if
-
1839
-
1840 ! Compute the product of the diagonal of A
-
1841 temp = one
-
1842 ep = 0
-
1843 do i = 1, n
-
1844 if (ipvt(i) /= i) temp = -temp
-
1845
-
1846 temp = a(i,i) * temp
-
1847 if (temp == zero) then
-
1848 x = zero
-
1849 exit
-
1850 end if
-
1851
-
1852 do while (abs(temp) < real_one)
-
1853 temp = ten * temp
-
1854 ep = ep - 1
-
1855 end do
+
1786 ! Local Memory Allocation
+
1787 if (present(iwork)) then
+
1788 if (size(iwork) < n) then
+
1789 ! ERROR: WORK not sized correctly
+
1790 call errmgr%report_error("det", &
+
1791 "Incorrectly sized input array IWORK, argument 2.", &
+
1792 la_array_size_error)
+
1793 return
+
1794 end if
+
1795 ipvt => iwork(1:n)
+
1796 else
+
1797 allocate(iwrk(n), stat = istat)
+
1798 if (istat /= 0) then
+
1799 ! ERROR: Out of memory
+
1800 call errmgr%report_error("det", &
+
1801 "Insufficient memory available.", &
+
1802 la_out_of_memory_error)
+
1803 return
+
1804 end if
+
1805 ipvt => iwrk
+
1806 end if
+
1807
+
1808 ! Compute the LU factorization of A
+
1809 call dgetrf(n, n, a, n, ipvt, flag)
+
1810 if (flag > 0) then
+
1811 ! A singular matrix has a determinant of zero
+
1812 x = zero
+
1813 return
+
1814 end if
+
1815
+
1816 ! Compute the product of the diagonal of A
+
1817 temp = one
+
1818 ep = 0
+
1819 do i = 1, n
+
1820 if (ipvt(i) /= i) temp = -temp
+
1821
+
1822 temp = a(i,i) * temp
+
1823 if (temp == zero) then
+
1824 x = zero
+
1825 exit
+
1826 end if
+
1827
+
1828 do while (abs(temp) < one)
+
1829 temp = ten * temp
+
1830 ep = ep - 1
+
1831 end do
+
1832
+
1833 do while (abs(temp) > ten)
+
1834 temp = p1 * temp
+
1835 ep = ep + 1
+
1836 end do
+
1837 end do
+
1838 x = temp * ten**ep
+
1839 end function
+
1840
+
1841! ------------------------------------------------------------------------------
+
1842 module function det_cmplx(a, iwork, err) result(x)
+
1843 ! Arguments
+
1844 complex(real64), intent(inout), dimension(:,:) :: a
+
1845 integer(int32), intent(out), target, optional, dimension(:) :: iwork
+
1846 class(errors), intent(inout), optional, target :: err
+
1847 complex(real64) :: x
+
1848
+
1849 ! Parameters
+
1850 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
+
1851 complex(real64), parameter :: one = (1.0d0, 0.0d0)
+
1852 complex(real64), parameter :: ten = (1.0d1, 0.0d0)
+
1853 complex(real64), parameter :: p1 = (1.0d-1, 0.0d0)
+
1854 real(real64), parameter :: real_one = 1.0d0
+
1855 real(real64), parameter :: real_ten = 1.0d1
1856
-
1857 do while (abs(temp) > real_ten)
-
1858 temp = p1 * temp
-
1859 ep = ep + 1
-
1860 end do
-
1861 end do
-
1862 x = temp * ten**ep
-
1863 end function
+
1857 ! Local Variables
+
1858 integer(int32) :: i, ep, n, istat, flag
+
1859 integer(int32), pointer, dimension(:) :: ipvt
+
1860 integer(int32), allocatable, target, dimension(:) :: iwrk
+
1861 complex(real64) :: temp
+
1862 class(errors), pointer :: errmgr
+
1863 type(errors), target :: deferr
1864
-
1865! ******************************************************************************
-
1866! ARRAY SWAPPING ROUTINE
-
1867! ------------------------------------------------------------------------------
-
1868 module subroutine swap_dbl(x, y, err)
-
1869 ! Arguments
-
1870 real(real64), intent(inout), dimension(:) :: x, y
-
1871 class(errors), intent(inout), optional, target :: err
-
1872
-
1873 ! Local Variables
-
1874 integer(int32) :: i, n
-
1875 real(real64) :: temp
-
1876 class(errors), pointer :: errmgr
-
1877 type(errors), target :: deferr
-
1878
-
1879 ! Initialization
-
1880 n = size(x)
-
1881 if (present(err)) then
-
1882 errmgr => err
-
1883 else
-
1884 errmgr => deferr
-
1885 end if
-
1886
-
1887 ! Input Check
-
1888 if (size(y) /= n) then
-
1889 call errmgr%report_error("swap", &
-
1890 "The input arrays are not the same size.", &
-
1891 la_array_size_error)
-
1892 return
-
1893 end if
-
1894
-
1895 ! Process
-
1896 do i = 1, n
-
1897 temp = x(i)
-
1898 x(i) = y(i)
-
1899 y(i) = temp
-
1900 end do
-
1901 end subroutine
+
1865 ! Initialization
+
1866 n = size(a, 1)
+
1867 x = zero
+
1868 if (present(err)) then
+
1869 errmgr => err
+
1870 else
+
1871 errmgr => deferr
+
1872 end if
+
1873
+
1874 ! Input Check
+
1875 if (size(a, 2) /= n) then
+
1876 call errmgr%report_error("det_cmplx", &
+
1877 "The supplied matrix must be square.", la_array_size_error)
+
1878 return
+
1879 end if
+
1880
+
1881 ! Local Memory Allocation
+
1882 if (present(iwork)) then
+
1883 if (size(iwork) < n) then
+
1884 ! ERROR: WORK not sized correctly
+
1885 call errmgr%report_error("det_cmplx", &
+
1886 "Incorrectly sized input array IWORK, argument 2.", &
+
1887 la_array_size_error)
+
1888 return
+
1889 end if
+
1890 ipvt => iwork(1:n)
+
1891 else
+
1892 allocate(iwrk(n), stat = istat)
+
1893 if (istat /= 0) then
+
1894 ! ERROR: Out of memory
+
1895 call errmgr%report_error("det_cmplx", &
+
1896 "Insufficient memory available.", &
+
1897 la_out_of_memory_error)
+
1898 return
+
1899 end if
+
1900 ipvt => iwrk
+
1901 end if
1902
-
1903! ------------------------------------------------------------------------------
-
1904 module subroutine swap_cmplx(x, y, err)
-
1905 ! Arguments
-
1906 complex(real64), intent(inout), dimension(:) :: x, y
-
1907 class(errors), intent(inout), optional, target :: err
-
1908
-
1909 ! Local Variables
-
1910 integer(int32) :: i, n
-
1911 complex(real64) :: temp
-
1912 class(errors), pointer :: errmgr
-
1913 type(errors), target :: deferr
-
1914
-
1915 ! Initialization
-
1916 n = size(x)
-
1917 if (present(err)) then
-
1918 errmgr => err
-
1919 else
-
1920 errmgr => deferr
-
1921 end if
+
1903 ! Compute the LU factorization of A
+
1904 call zgetrf(n, n, a, n, ipvt, flag)
+
1905 if (flag > 0) then
+
1906 ! A singular matrix has a determinant of zero
+
1907 x = zero
+
1908 return
+
1909 end if
+
1910
+
1911 ! Compute the product of the diagonal of A
+
1912 temp = one
+
1913 ep = 0
+
1914 do i = 1, n
+
1915 if (ipvt(i) /= i) temp = -temp
+
1916
+
1917 temp = a(i,i) * temp
+
1918 if (temp == zero) then
+
1919 x = zero
+
1920 exit
+
1921 end if
1922
-
1923 ! Input Check
-
1924 if (size(y) /= n) then
-
1925 call errmgr%report_error("swap_cmplx", &
-
1926 "The input arrays are not the same size.", &
-
1927 la_array_size_error)
-
1928 return
-
1929 end if
-
1930
-
1931 ! Process
-
1932 do i = 1, n
-
1933 temp = x(i)
-
1934 x(i) = y(i)
-
1935 y(i) = temp
-
1936 end do
-
1937 end subroutine
-
1938
-
1939! ******************************************************************************
-
1940! ARRAY MULTIPLICIATION ROUTINES
-
1941! ------------------------------------------------------------------------------
-
1942 module subroutine recip_mult_array_dbl(a, x)
-
1943 ! Arguments
-
1944 real(real64), intent(in) :: a
-
1945 real(real64), intent(inout), dimension(:) :: x
-
1946
-
1947 ! External Function Interfaces
-
1948 interface
-
1949 function dlamch(cmach) result(x)
-
1950 use, intrinsic :: iso_fortran_env, only : real64
-
1951 character, intent(in) :: cmach
-
1952 real(real64) :: x
-
1953 end function
-
1954 end interface
-
1955
-
1956 ! Parameters
-
1957 real(real64), parameter :: zero = 0.0d0
-
1958 real(real64), parameter :: one = 1.0d0
-
1959 real(real64), parameter :: twotho = 2.0d3
-
1960
-
1961 ! Local Variables
-
1962 logical :: done
-
1963 real(real64) :: bignum, cden, cden1, cnum, cnum1, mul, smlnum
-
1964
-
1965 ! Initialization
-
1966 smlnum = dlamch('s')
-
1967 bignum = one / smlnum
-
1968 if (log10(bignum) > twotho) then
-
1969 smlnum = sqrt(smlnum)
-
1970 bignum = sqrt(bignum)
-
1971 end if
-
1972
-
1973 ! Initialize the denominator to A, and the numerator to ONE
-
1974 cden = a
-
1975 cnum = one
-
1976
-
1977 ! Process
-
1978 do
-
1979 cden1 = cden * smlnum
-
1980 cnum1 = cnum / bignum
-
1981 if (abs(cden1) > abs(cnum) .and. cnum /= zero) then
-
1982 mul = smlnum
-
1983 done = .false.
-
1984 cden = cden1
-
1985 else if (abs(cnum1) > abs(cden)) then
-
1986 mul = bignum
-
1987 done = .false.
-
1988 cnum = cnum1
-
1989 else
-
1990 mul = cnum / cden
-
1991 done = .true.
-
1992 end if
+
1923 do while (abs(temp) < real_one)
+
1924 temp = ten * temp
+
1925 ep = ep - 1
+
1926 end do
+
1927
+
1928 do while (abs(temp) > real_ten)
+
1929 temp = p1 * temp
+
1930 ep = ep + 1
+
1931 end do
+
1932 end do
+
1933 x = temp * ten**ep
+
1934 end function
+
1935
+
1936! ******************************************************************************
+
1937! ARRAY SWAPPING ROUTINE
+
1938! ------------------------------------------------------------------------------
+
1939 module subroutine swap_dbl(x, y, err)
+
1940 ! Arguments
+
1941 real(real64), intent(inout), dimension(:) :: x, y
+
1942 class(errors), intent(inout), optional, target :: err
+
1943
+
1944 ! Local Variables
+
1945 integer(int32) :: i, n
+
1946 real(real64) :: temp
+
1947 class(errors), pointer :: errmgr
+
1948 type(errors), target :: deferr
+
1949
+
1950 ! Initialization
+
1951 n = size(x)
+
1952 if (present(err)) then
+
1953 errmgr => err
+
1954 else
+
1955 errmgr => deferr
+
1956 end if
+
1957
+
1958 ! Input Check
+
1959 if (size(y) /= n) then
+
1960 call errmgr%report_error("swap", &
+
1961 "The input arrays are not the same size.", &
+
1962 la_array_size_error)
+
1963 return
+
1964 end if
+
1965
+
1966 ! Process
+
1967 do i = 1, n
+
1968 temp = x(i)
+
1969 x(i) = y(i)
+
1970 y(i) = temp
+
1971 end do
+
1972 end subroutine
+
1973
+
1974! ------------------------------------------------------------------------------
+
1975 module subroutine swap_cmplx(x, y, err)
+
1976 ! Arguments
+
1977 complex(real64), intent(inout), dimension(:) :: x, y
+
1978 class(errors), intent(inout), optional, target :: err
+
1979
+
1980 ! Local Variables
+
1981 integer(int32) :: i, n
+
1982 complex(real64) :: temp
+
1983 class(errors), pointer :: errmgr
+
1984 type(errors), target :: deferr
+
1985
+
1986 ! Initialization
+
1987 n = size(x)
+
1988 if (present(err)) then
+
1989 errmgr => err
+
1990 else
+
1991 errmgr => deferr
+
1992 end if
1993
-
1994 ! Scale the vector X by MUL
-
1995 x = mul * x
-
1996
-
1997 ! Exit if done
-
1998 if (done) exit
-
1999 end do
-
2000 end subroutine
+
1994 ! Input Check
+
1995 if (size(y) /= n) then
+
1996 call errmgr%report_error("swap_cmplx", &
+
1997 "The input arrays are not the same size.", &
+
1998 la_array_size_error)
+
1999 return
+
2000 end if
2001
-
2002! ******************************************************************************
-
2003! TRIANGULAR MATRIX MULTIPLICATION ROUTINES
-
2004! ------------------------------------------------------------------------------
-
2005 module subroutine tri_mtx_mult_dbl(upper, alpha, a, beta, b, err)
-
2006 ! Arguments
-
2007 logical, intent(in) :: upper
-
2008 real(real64), intent(in) :: alpha, beta
-
2009 real(real64), intent(in), dimension(:,:) :: a
-
2010 real(real64), intent(inout), dimension(:,:) :: b
-
2011 class(errors), intent(inout), optional, target :: err
-
2012
-
2013 ! Parameters
-
2014 real(real64), parameter :: zero = 0.0d0
-
2015
-
2016 ! Local Variables
-
2017 integer(int32) :: i, j, k, n, d1, d2, flag
-
2018 real(real64) :: temp
-
2019 class(errors), pointer :: errmgr
-
2020 type(errors), target :: deferr
-
2021 character(len = :), allocatable :: errmsg
-
2022
-
2023 ! Initialization
-
2024 n = size(a, 1)
-
2025 d1 = n
-
2026 d2 = n
-
2027 if (present(err)) then
-
2028 errmgr => err
-
2029 else
-
2030 errmgr => deferr
-
2031 end if
-
2032
-
2033 ! Input Check
-
2034 flag = 0
-
2035 if (size(a, 2) /= n) then
-
2036 flag = 3
-
2037 d2 = size(a, 2)
-
2038 else if (size(b, 1) /= n .or. size(b, 2) /= n) then
-
2039 flag = 5
-
2040 d1 = size(b, 1)
-
2041 d2 = size(b, 2)
+
2002 ! Process
+
2003 do i = 1, n
+
2004 temp = x(i)
+
2005 x(i) = y(i)
+
2006 y(i) = temp
+
2007 end do
+
2008 end subroutine
+
2009
+
2010! ******************************************************************************
+
2011! ARRAY MULTIPLICIATION ROUTINES
+
2012! ------------------------------------------------------------------------------
+
2013 module subroutine recip_mult_array_dbl(a, x)
+
2014 ! Arguments
+
2015 real(real64), intent(in) :: a
+
2016 real(real64), intent(inout), dimension(:) :: x
+
2017
+
2018 ! External Function Interfaces
+
2019 interface
+
2020 function dlamch(cmach) result(x)
+
2021 use, intrinsic :: iso_fortran_env, only : real64
+
2022 character, intent(in) :: cmach
+
2023 real(real64) :: x
+
2024 end function
+
2025 end interface
+
2026
+
2027 ! Parameters
+
2028 real(real64), parameter :: zero = 0.0d0
+
2029 real(real64), parameter :: one = 1.0d0
+
2030 real(real64), parameter :: twotho = 2.0d3
+
2031
+
2032 ! Local Variables
+
2033 logical :: done
+
2034 real(real64) :: bignum, cden, cden1, cnum, cnum1, mul, smlnum
+
2035
+
2036 ! Initialization
+
2037 smlnum = dlamch('s')
+
2038 bignum = one / smlnum
+
2039 if (log10(bignum) > twotho) then
+
2040 smlnum = sqrt(smlnum)
+
2041 bignum = sqrt(bignum)
2042 end if
-
2043 if (flag /= 0) then
-
2044 ! ERROR: Incorrectly sized matrix
-
2045 allocate(character(len = 256) :: errmsg)
-
2046 write(errmsg, 100) "The matrix at input ", flag, &
-
2047 " was not sized appropriately. A matrix of ", n, "-by-", n, &
-
2048 "was expected, but a matrix of ", d1, "-by-", d2, " was found."
-
2049 call errmgr%report_error("tri_mtx_mult_dbl", trim(errmsg), &
-
2050 la_array_size_error)
-
2051 return
-
2052 end if
-
2053
-
2054 ! Process
-
2055 if (upper) then
-
2056 ! Form: B = alpha * A**T * A + beta * B
-
2057 if (beta == zero) then
-
2058 do j = 1, n
-
2059 do i = 1, j
-
2060 temp = zero
-
2061 do k = 1, j
-
2062 temp = temp + a(k,i) * a(k,j)
-
2063 end do
-
2064 temp = alpha * temp
-
2065 b(i,j) = temp
-
2066 if (i /= j) b(j,i) = temp
-
2067 end do
-
2068 end do
-
2069 else
-
2070 do j = 1, n
-
2071 do i = 1, j
-
2072 temp = zero
-
2073 do k = 1, j
-
2074 temp = temp + a(k,i) * a(k,j)
-
2075 end do
-
2076 temp = alpha * temp
-
2077 b(i,j) = temp + beta * b(i,j)
-
2078 if (i /= j) b(j,i) = temp + beta * b(j,i)
-
2079 end do
-
2080 end do
-
2081 end if
-
2082 else
-
2083 ! Form: B = alpha * A * A**T + beta * B
-
2084 if (beta == zero) then
-
2085 do j = 1, n
-
2086 do i = j, n
-
2087 temp = zero
-
2088 do k = 1, j
-
2089 temp = temp + a(i,k) * a(j,k)
-
2090 end do
-
2091 temp = alpha * temp
-
2092 b(i,j) = temp
-
2093 if (i /= j) b(j,i) = temp
-
2094 end do
-
2095 end do
-
2096 else
-
2097 do j = 1, n
-
2098 do i = j, n
-
2099 temp = zero
-
2100 do k = 1, j
-
2101 temp = temp + a(i,k) * a(j,k)
-
2102 end do
-
2103 temp = alpha * temp
-
2104 b(i,j) = temp + beta * b(i,j)
-
2105 if (i /= j) b(j,i) = temp + beta * b(j,i)
-
2106 end do
-
2107 end do
-
2108 end if
-
2109 end if
-
2110
-
2111 ! Formatting
-
2112100 format(a, i0, a, i0, a, i0, a, i0, a, i0, a)
-
2113 end subroutine
-
2114
-
2115! ------------------------------------------------------------------------------
-
2116 module subroutine tri_mtx_mult_cmplx(upper, alpha, a, beta, b, err)
-
2117 ! Arguments
-
2118 logical, intent(in) :: upper
-
2119 complex(real64), intent(in) :: alpha, beta
-
2120 complex(real64), intent(in), dimension(:,:) :: a
-
2121 complex(real64), intent(inout), dimension(:,:) :: b
-
2122 class(errors), intent(inout), optional, target :: err
-
2123
-
2124 ! Parameters
-
2125 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
-
2126
-
2127 ! Local Variables
-
2128 integer(int32) :: i, j, k, n, d1, d2, flag
-
2129 complex(real64) :: temp
-
2130 class(errors), pointer :: errmgr
-
2131 type(errors), target :: deferr
-
2132 character(len = :), allocatable :: errmsg
-
2133
-
2134 ! Initialization
-
2135 n = size(a, 1)
-
2136 d1 = n
-
2137 d2 = n
-
2138 if (present(err)) then
-
2139 errmgr => err
-
2140 else
-
2141 errmgr => deferr
-
2142 end if
-
2143
-
2144 ! Input Check
-
2145 flag = 0
-
2146 if (size(a, 2) /= n) then
-
2147 flag = 3
-
2148 d2 = size(a, 2)
-
2149 else if (size(b, 1) /= n .or. size(b, 2) /= n) then
-
2150 flag = 5
-
2151 d1 = size(b, 1)
-
2152 d2 = size(b, 2)
-
2153 end if
-
2154 if (flag /= 0) then
-
2155 ! ERROR: Incorrectly sized matrix
-
2156 allocate(character(len = 256) :: errmsg)
-
2157 write(errmsg, 100) "The matrix at input ", flag, &
-
2158 " was not sized appropriately. A matrix of ", n, "-by-", n, &
-
2159 "was expected, but a matrix of ", d1, "-by-", d2, " was found."
-
2160 call errmgr%report_error("tri_mtx_mult_cmplx", trim(errmsg), &
-
2161 la_array_size_error)
-
2162 return
-
2163 end if
-
2164
-
2165 ! Process
-
2166 if (upper) then
-
2167 ! Form: B = alpha * A**T * A + beta * B
-
2168 if (beta == zero) then
-
2169 do j = 1, n
-
2170 do i = 1, j
-
2171 temp = zero
-
2172 do k = 1, j
-
2173 temp = temp + a(k,i) * a(k,j)
-
2174 end do
-
2175 temp = alpha * temp
-
2176 b(i,j) = temp
-
2177 if (i /= j) b(j,i) = temp
-
2178 end do
-
2179 end do
-
2180 else
-
2181 do j = 1, n
-
2182 do i = 1, j
-
2183 temp = zero
-
2184 do k = 1, j
-
2185 temp = temp + a(k,i) * a(k,j)
-
2186 end do
-
2187 temp = alpha * temp
-
2188 b(i,j) = temp + beta * b(i,j)
-
2189 if (i /= j) b(j,i) = temp + beta * b(j,i)
-
2190 end do
-
2191 end do
-
2192 end if
-
2193 else
-
2194 ! Form: B = alpha * A * A**T + beta * B
-
2195 if (beta == zero) then
-
2196 do j = 1, n
-
2197 do i = j, n
-
2198 temp = zero
-
2199 do k = 1, j
-
2200 temp = temp + a(i,k) * a(j,k)
-
2201 end do
-
2202 temp = alpha * temp
-
2203 b(i,j) = temp
-
2204 if (i /= j) b(j,i) = temp
-
2205 end do
-
2206 end do
-
2207 else
-
2208 do j = 1, n
-
2209 do i = j, n
-
2210 temp = zero
-
2211 do k = 1, j
-
2212 temp = temp + a(i,k) * a(j,k)
-
2213 end do
-
2214 temp = alpha * temp
-
2215 b(i,j) = temp + beta * b(i,j)
-
2216 if (i /= j) b(j,i) = temp + beta * b(j,i)
-
2217 end do
-
2218 end do
-
2219 end if
-
2220 end if
-
2221
-
2222 ! Formatting
-
2223100 format(a, i0, a, i0, a, i0, a, i0, a, i0, a)
-
2224 end subroutine
-
2225
-
2226! ******************************************************************************
-
2227! BANDED MATRIX MULTIPLICATION ROUTINES
-
2228! ------------------------------------------------------------------------------
-
2229 module subroutine band_mtx_vec_mult_dbl(trans, kl, ku, alpha, a, x, beta, &
-
2230 y, err)
-
2231 ! Arguments
-
2232 logical, intent(in) :: trans
-
2233 integer(int32), intent(in) :: kl, ku
-
2234 real(real64), intent(in) :: alpha, beta
-
2235 real(real64), intent(in), dimension(:,:) :: a
-
2236 real(real64), intent(in), dimension(:) :: x
-
2237 real(real64), intent(inout), dimension(:) :: y
-
2238 class(errors), intent(inout), optional, target :: err
-
2239
-
2240 ! Local Variables
-
2241 integer(int32) :: m, n
-
2242 class(errors), pointer :: errmgr
-
2243 type(errors), target :: deferr
-
2244
-
2245 ! Initialization
-
2246 if (present(err)) then
-
2247 errmgr => err
-
2248 else
-
2249 errmgr => deferr
-
2250 end if
-
2251 if (trans) then
-
2252 m = size(x)
-
2253 n = size(y)
-
2254 else
-
2255 m = size(y)
-
2256 n = size(x)
-
2257 end if
-
2258
-
2259 ! Input Checking
-
2260 if (kl < 0) go to 10
-
2261 if (ku < 0) go to 20
-
2262 if (size(a, 1) /= kl + ku + 1) go to 30
-
2263 if (size(a, 2) /= n) go to 30
-
2264
-
2265 ! Process
-
2266 if (trans) then
-
2267 call dgbmv("T", m, n, kl, ku, alpha, a, size(a, 1), x, 1, beta, y, 1)
-
2268 else
-
2269 call dgbmv("N", m, n, kl, ku, alpha, a, size(a, 1), x, 1, beta, y, 1)
-
2270 end if
-
2271
-
2272 ! End
-
2273 return
-
2274
-
2275 ! KL < 0
-
227610 continue
-
2277 call errmgr%report_error("band_mtx_vec_mult_dbl", &
-
2278 "The number of subdiagonals must be at least 0.", &
-
2279 la_invalid_input_error)
-
2280 return
-
2281
-
2282 ! KU < 0
-
228320 continue
-
2284 call errmgr%report_error("band_mtx_vec_mult_dbl", &
-
2285 "The number of superdiagonals must be at least 0.", &
-
2286 la_invalid_input_error)
-
2287 return
-
2288
-
2289 ! A is incorrectly sized
-
229030 continue
-
2291 call errmgr%report_error("band_mtx_vec_mult_dbl", &
-
2292 "The size of matrix A is not compatible with the other vectors.", &
-
2293 la_array_size_error)
-
2294 return
+
2043
+
2044 ! Initialize the denominator to A, and the numerator to ONE
+
2045 cden = a
+
2046 cnum = one
+
2047
+
2048 ! Process
+
2049 do
+
2050 cden1 = cden * smlnum
+
2051 cnum1 = cnum / bignum
+
2052 if (abs(cden1) > abs(cnum) .and. cnum /= zero) then
+
2053 mul = smlnum
+
2054 done = .false.
+
2055 cden = cden1
+
2056 else if (abs(cnum1) > abs(cden)) then
+
2057 mul = bignum
+
2058 done = .false.
+
2059 cnum = cnum1
+
2060 else
+
2061 mul = cnum / cden
+
2062 done = .true.
+
2063 end if
+
2064
+
2065 ! Scale the vector X by MUL
+
2066 x = mul * x
+
2067
+
2068 ! Exit if done
+
2069 if (done) exit
+
2070 end do
+
2071 end subroutine
+
2072
+
2073! ******************************************************************************
+
2074! TRIANGULAR MATRIX MULTIPLICATION ROUTINES
+
2075! ------------------------------------------------------------------------------
+
2076 module subroutine tri_mtx_mult_dbl(upper, alpha, a, beta, b, err)
+
2077 ! Arguments
+
2078 logical, intent(in) :: upper
+
2079 real(real64), intent(in) :: alpha, beta
+
2080 real(real64), intent(in), dimension(:,:) :: a
+
2081 real(real64), intent(inout), dimension(:,:) :: b
+
2082 class(errors), intent(inout), optional, target :: err
+
2083
+
2084 ! Parameters
+
2085 real(real64), parameter :: zero = 0.0d0
+
2086
+
2087 ! Local Variables
+
2088 integer(int32) :: i, j, k, n, d1, d2, flag
+
2089 real(real64) :: temp
+
2090 class(errors), pointer :: errmgr
+
2091 type(errors), target :: deferr
+
2092 character(len = :), allocatable :: errmsg
+
2093
+
2094 ! Initialization
+
2095 n = size(a, 1)
+
2096 d1 = n
+
2097 d2 = n
+
2098 if (present(err)) then
+
2099 errmgr => err
+
2100 else
+
2101 errmgr => deferr
+
2102 end if
+
2103
+
2104 ! Input Check
+
2105 flag = 0
+
2106 if (size(a, 2) /= n) then
+
2107 flag = 3
+
2108 d2 = size(a, 2)
+
2109 else if (size(b, 1) /= n .or. size(b, 2) /= n) then
+
2110 flag = 5
+
2111 d1 = size(b, 1)
+
2112 d2 = size(b, 2)
+
2113 end if
+
2114 if (flag /= 0) then
+
2115 ! ERROR: Incorrectly sized matrix
+
2116 allocate(character(len = 256) :: errmsg)
+
2117 write(errmsg, 100) "The matrix at input ", flag, &
+
2118 " was not sized appropriately. A matrix of ", n, "-by-", n, &
+
2119 "was expected, but a matrix of ", d1, "-by-", d2, " was found."
+
2120 call errmgr%report_error("tri_mtx_mult_dbl", trim(errmsg), &
+
2121 la_array_size_error)
+
2122 return
+
2123 end if
+
2124
+
2125 ! Process
+
2126 if (upper) then
+
2127 ! Form: B = alpha * A**T * A + beta * B
+
2128 if (beta == zero) then
+
2129 do j = 1, n
+
2130 do i = 1, j
+
2131 temp = zero
+
2132 do k = 1, j
+
2133 temp = temp + a(k,i) * a(k,j)
+
2134 end do
+
2135 temp = alpha * temp
+
2136 b(i,j) = temp
+
2137 if (i /= j) b(j,i) = temp
+
2138 end do
+
2139 end do
+
2140 else
+
2141 do j = 1, n
+
2142 do i = 1, j
+
2143 temp = zero
+
2144 do k = 1, j
+
2145 temp = temp + a(k,i) * a(k,j)
+
2146 end do
+
2147 temp = alpha * temp
+
2148 b(i,j) = temp + beta * b(i,j)
+
2149 if (i /= j) b(j,i) = temp + beta * b(j,i)
+
2150 end do
+
2151 end do
+
2152 end if
+
2153 else
+
2154 ! Form: B = alpha * A * A**T + beta * B
+
2155 if (beta == zero) then
+
2156 do j = 1, n
+
2157 do i = j, n
+
2158 temp = zero
+
2159 do k = 1, j
+
2160 temp = temp + a(i,k) * a(j,k)
+
2161 end do
+
2162 temp = alpha * temp
+
2163 b(i,j) = temp
+
2164 if (i /= j) b(j,i) = temp
+
2165 end do
+
2166 end do
+
2167 else
+
2168 do j = 1, n
+
2169 do i = j, n
+
2170 temp = zero
+
2171 do k = 1, j
+
2172 temp = temp + a(i,k) * a(j,k)
+
2173 end do
+
2174 temp = alpha * temp
+
2175 b(i,j) = temp + beta * b(i,j)
+
2176 if (i /= j) b(j,i) = temp + beta * b(j,i)
+
2177 end do
+
2178 end do
+
2179 end if
+
2180 end if
+
2181
+
2182 ! Formatting
+
2183100 format(a, i0, a, i0, a, i0, a, i0, a, i0, a)
+
2184 end subroutine
+
2185
+
2186! ------------------------------------------------------------------------------
+
2187 module subroutine tri_mtx_mult_cmplx(upper, alpha, a, beta, b, err)
+
2188 ! Arguments
+
2189 logical, intent(in) :: upper
+
2190 complex(real64), intent(in) :: alpha, beta
+
2191 complex(real64), intent(in), dimension(:,:) :: a
+
2192 complex(real64), intent(inout), dimension(:,:) :: b
+
2193 class(errors), intent(inout), optional, target :: err
+
2194
+
2195 ! Parameters
+
2196 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
+
2197
+
2198 ! Local Variables
+
2199 integer(int32) :: i, j, k, n, d1, d2, flag
+
2200 complex(real64) :: temp
+
2201 class(errors), pointer :: errmgr
+
2202 type(errors), target :: deferr
+
2203 character(len = :), allocatable :: errmsg
+
2204
+
2205 ! Initialization
+
2206 n = size(a, 1)
+
2207 d1 = n
+
2208 d2 = n
+
2209 if (present(err)) then
+
2210 errmgr => err
+
2211 else
+
2212 errmgr => deferr
+
2213 end if
+
2214
+
2215 ! Input Check
+
2216 flag = 0
+
2217 if (size(a, 2) /= n) then
+
2218 flag = 3
+
2219 d2 = size(a, 2)
+
2220 else if (size(b, 1) /= n .or. size(b, 2) /= n) then
+
2221 flag = 5
+
2222 d1 = size(b, 1)
+
2223 d2 = size(b, 2)
+
2224 end if
+
2225 if (flag /= 0) then
+
2226 ! ERROR: Incorrectly sized matrix
+
2227 allocate(character(len = 256) :: errmsg)
+
2228 write(errmsg, 100) "The matrix at input ", flag, &
+
2229 " was not sized appropriately. A matrix of ", n, "-by-", n, &
+
2230 "was expected, but a matrix of ", d1, "-by-", d2, " was found."
+
2231 call errmgr%report_error("tri_mtx_mult_cmplx", trim(errmsg), &
+
2232 la_array_size_error)
+
2233 return
+
2234 end if
+
2235
+
2236 ! Process
+
2237 if (upper) then
+
2238 ! Form: B = alpha * A**T * A + beta * B
+
2239 if (beta == zero) then
+
2240 do j = 1, n
+
2241 do i = 1, j
+
2242 temp = zero
+
2243 do k = 1, j
+
2244 temp = temp + a(k,i) * a(k,j)
+
2245 end do
+
2246 temp = alpha * temp
+
2247 b(i,j) = temp
+
2248 if (i /= j) b(j,i) = temp
+
2249 end do
+
2250 end do
+
2251 else
+
2252 do j = 1, n
+
2253 do i = 1, j
+
2254 temp = zero
+
2255 do k = 1, j
+
2256 temp = temp + a(k,i) * a(k,j)
+
2257 end do
+
2258 temp = alpha * temp
+
2259 b(i,j) = temp + beta * b(i,j)
+
2260 if (i /= j) b(j,i) = temp + beta * b(j,i)
+
2261 end do
+
2262 end do
+
2263 end if
+
2264 else
+
2265 ! Form: B = alpha * A * A**T + beta * B
+
2266 if (beta == zero) then
+
2267 do j = 1, n
+
2268 do i = j, n
+
2269 temp = zero
+
2270 do k = 1, j
+
2271 temp = temp + a(i,k) * a(j,k)
+
2272 end do
+
2273 temp = alpha * temp
+
2274 b(i,j) = temp
+
2275 if (i /= j) b(j,i) = temp
+
2276 end do
+
2277 end do
+
2278 else
+
2279 do j = 1, n
+
2280 do i = j, n
+
2281 temp = zero
+
2282 do k = 1, j
+
2283 temp = temp + a(i,k) * a(j,k)
+
2284 end do
+
2285 temp = alpha * temp
+
2286 b(i,j) = temp + beta * b(i,j)
+
2287 if (i /= j) b(j,i) = temp + beta * b(j,i)
+
2288 end do
+
2289 end do
+
2290 end if
+
2291 end if
+
2292
+
2293 ! Formatting
+
2294100 format(a, i0, a, i0, a, i0, a, i0, a, i0, a)
2295 end subroutine
2296
-
2297! ------------------------------------------------------------------------------
-
2298 module subroutine band_mtx_vec_mult_cmplx(trans, kl, ku, alpha, a, x, &
-
2299 beta, y, err)
-
2300 ! Arguments
-
2301 integer(int32), intent(in) :: trans
-
2302 integer(int32), intent(in) :: kl, ku
-
2303 complex(real64), intent(in) :: alpha, beta
-
2304 complex(real64), intent(in), dimension(:,:) :: a
-
2305 complex(real64), intent(in), dimension(:) :: x
-
2306 complex(real64), intent(inout), dimension(:) :: y
-
2307 class(errors), intent(inout), optional, target :: err
-
2308
-
2309 ! Local Variables
-
2310 character :: op
-
2311 logical :: trns
+
2297! ******************************************************************************
+
2298! BANDED MATRIX MULTIPLICATION ROUTINES
+
2299! ------------------------------------------------------------------------------
+
2300 module subroutine band_mtx_vec_mult_dbl(trans, kl, ku, alpha, a, x, beta, &
+
2301 y, err)
+
2302 ! Arguments
+
2303 logical, intent(in) :: trans
+
2304 integer(int32), intent(in) :: kl, ku
+
2305 real(real64), intent(in) :: alpha, beta
+
2306 real(real64), intent(in), dimension(:,:) :: a
+
2307 real(real64), intent(in), dimension(:) :: x
+
2308 real(real64), intent(inout), dimension(:) :: y
+
2309 class(errors), intent(inout), optional, target :: err
+
2310
+
2311 ! Local Variables
2312 integer(int32) :: m, n
2313 class(errors), pointer :: errmgr
2314 type(errors), target :: deferr
@@ -2428,412 +2428,761 @@
2319 else
2320 errmgr => deferr
2321 end if
-
2322 if (trans == la_transpose) then
-
2323 op = "T"
-
2324 trns = .true.
-
2325 else if (trans == la_hermitian_transpose) then
-
2326 op = "C"
-
2327 trns = .true.
-
2328 else
-
2329 op = "N"
-
2330 trns = .false.
-
2331 end if
-
2332 if (trns) then
-
2333 m = size(x)
-
2334 n = size(y)
-
2335 else
-
2336 m = size(y)
-
2337 n = size(x)
-
2338 end if
-
2339
-
2340 ! Input Checking
-
2341 if (kl < 0) go to 10
-
2342 if (ku < 0) go to 20
-
2343 if (size(a, 1) /= kl + ku + 1) go to 30
-
2344 if (size(a, 2) /= n) go to 30
+
2322 if (trans) then
+
2323 m = size(x)
+
2324 n = size(y)
+
2325 else
+
2326 m = size(y)
+
2327 n = size(x)
+
2328 end if
+
2329
+
2330 ! Input Checking
+
2331 if (kl < 0) go to 10
+
2332 if (ku < 0) go to 20
+
2333 if (size(a, 1) /= kl + ku + 1) go to 30
+
2334 if (size(a, 2) /= n) go to 30
+
2335
+
2336 ! Process
+
2337 if (trans) then
+
2338 call dgbmv("T", m, n, kl, ku, alpha, a, size(a, 1), x, 1, beta, y, 1)
+
2339 else
+
2340 call dgbmv("N", m, n, kl, ku, alpha, a, size(a, 1), x, 1, beta, y, 1)
+
2341 end if
+
2342
+
2343 ! End
+
2344 return
2345
-
2346 ! Process
-
2347 call zgbmv(op, m, n, kl, ku, alpha, a, size(a, 1), x, 1, beta, y, 1)
-
2348
-
2349 ! End
-
2350 return
-
2351
-
2352 ! KL < 0
-
235310 continue
-
2354 call errmgr%report_error("band_mtx_vec_mult_cmplx", &
-
2355 "The number of subdiagonals must be at least 0.", &
-
2356 la_invalid_input_error)
-
2357 return
-
2358
-
2359 ! KU < 0
-
236020 continue
-
2361 call errmgr%report_error("band_mtx_vec_mult_cmplx", &
-
2362 "The number of superdiagonals must be at least 0.", &
-
2363 la_invalid_input_error)
-
2364 return
-
2365
-
2366 ! A is incorrectly sized
-
236730 continue
-
2368 call errmgr%report_error("band_mtx_vec_mult_cmplx", &
-
2369 "The size of matrix A is not compatible with the other vectors.", &
-
2370 la_array_size_error)
-
2371 return
-
2372 end subroutine
-
2373
-
2374! ------------------------------------------------------------------------------
-
2375 module subroutine band_to_full_mtx_dbl(kl, ku, b, f, err)
-
2376 ! Arguments
-
2377 integer(int32), intent(in) :: kl, ku
-
2378 real(real64), intent(in), dimension(:,:) :: b
-
2379 real(real64), intent(out), dimension(:,:) :: f
-
2380 class(errors), intent(inout), optional, target :: err
-
2381
-
2382 ! Parameters
-
2383 real(real64), parameter :: zero = 0.0d0
-
2384
-
2385 ! Local Variables
-
2386 class(errors), pointer :: errmgr
-
2387 type(errors), target :: deferr
-
2388 integer(int32) :: i, j, k, m, n, i1, i2
-
2389
-
2390 ! Initialization
-
2391 if (present(err)) then
-
2392 errmgr => err
-
2393 else
-
2394 errmgr => deferr
-
2395 end if
-
2396 m = size(f, 1)
-
2397 n = size(f, 2)
-
2398
-
2399 ! Input Check
-
2400 if (kl < 0) go to 10
-
2401 if (ku < 0) go to 20
-
2402 if (size(b, 2) /= n) go to 30
-
2403 if (size(b, 1) /= kl + ku + 1) go to 40
-
2404
-
2405 ! Process
-
2406 do j = 1, n
-
2407 k = ku + 1 - j
-
2408 i1 = max(1, j - ku)
-
2409 i2 = min(m, j + kl)
-
2410 do i = 1, i1 - 1
-
2411 f(i,j) = zero
-
2412 end do
-
2413 do i = i1, i2
-
2414 f(i,j) = b(k+i,j)
-
2415 end do
-
2416 do i = i2 + 1, m
-
2417 f(i,j) = zero
-
2418 end do
-
2419 end do
-
2420
-
2421 ! End
-
2422 return
-
2423
-
2424 ! KL < 0
-
242510 continue
-
2426 call errmgr%report_error("band_to_full_mtx_dbl", &
-
2427 "The number of subdiagonals must be at least 0.", &
-
2428 la_invalid_input_error)
-
2429 return
-
2430
-
2431 ! KU < 0
-
243220 continue
-
2433 call errmgr%report_error("band_to_full_mtx_dbl", &
-
2434 "The number of superdiagonals must be at least 0.", &
-
2435 la_invalid_input_error)
-
2436 return
-
2437
-
2438 ! A is incorrectly sized
-
243930 continue
-
2440 call errmgr%report_error("band_to_full_mtx_dbl", &
-
2441 "The number of columns in the banded matrix does not match " // &
-
2442 "the number of columns in the full matrix.", &
-
2443 la_array_size_error)
-
2444 return
-
2445
-
244640 continue
-
2447 call errmgr%report_error("band_to_full_mtx_dbl", &
-
2448 "The number of rows in the banded matrix does not align with " // &
-
2449 "the number of sub and super-diagonals specified.", &
-
2450 la_array_size_error)
-
2451 return
-
2452 end subroutine
-
2453
-
2454! ------------------------------------------------------------------------------
-
2455 module subroutine band_to_full_mtx_cmplx(kl, ku, b, f, err)
-
2456 ! Arguments
-
2457 integer(int32), intent(in) :: kl, ku
-
2458 complex(real64), intent(in), dimension(:,:) :: b
-
2459 complex(real64), intent(out), dimension(:,:) :: f
-
2460 class(errors), intent(inout), optional, target :: err
-
2461
-
2462 ! Parameters
-
2463 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
-
2464
-
2465 ! Local Variables
-
2466 class(errors), pointer :: errmgr
-
2467 type(errors), target :: deferr
-
2468 integer(int32) :: i, j, k, m, n, i1, i2
-
2469
-
2470 ! Initialization
-
2471 if (present(err)) then
-
2472 errmgr => err
-
2473 else
-
2474 errmgr => deferr
-
2475 end if
-
2476 m = size(f, 1)
-
2477 n = size(f, 2)
-
2478
-
2479 ! Input Check
-
2480 if (kl < 0) go to 10
-
2481 if (ku < 0) go to 20
-
2482 if (size(b, 2) /= n) go to 30
-
2483 if (size(b, 1) /= kl + ku + 1) go to 40
-
2484
-
2485 ! Process
-
2486 do j = 1, n
-
2487 k = ku + 1 - j
-
2488 i1 = max(1, j - ku)
-
2489 i2 = min(m, j + kl)
-
2490 do i = 1, i1 - 1
-
2491 f(i,j) = zero
-
2492 end do
-
2493 do i = i1, i2
-
2494 f(i,j) = b(k+i,j)
-
2495 end do
-
2496 do i = i2 + 1, m
-
2497 f(i,j) = zero
-
2498 end do
-
2499 end do
-
2500
-
2501 ! End
-
2502 return
-
2503
-
2504 ! KL < 0
-
250510 continue
-
2506 call errmgr%report_error("band_to_full_mtx_cmplx", &
-
2507 "The number of subdiagonals must be at least 0.", &
-
2508 la_invalid_input_error)
-
2509 return
-
2510
-
2511 ! KU < 0
-
251220 continue
-
2513 call errmgr%report_error("band_to_full_mtx_cmplx", &
-
2514 "The number of superdiagonals must be at least 0.", &
-
2515 la_invalid_input_error)
-
2516 return
-
2517
-
2518 ! A is incorrectly sized
-
251930 continue
-
2520 call errmgr%report_error("band_to_full_mtx_cmplx", &
-
2521 "The number of columns in the banded matrix does not match " // &
-
2522 "the number of columns in the full matrix.", &
-
2523 la_array_size_error)
-
2524 return
-
2525
-
252640 continue
-
2527 call errmgr%report_error("band_to_full_mtx_cmplx", &
-
2528 "The number of rows in the banded matrix does not align with " // &
-
2529 "the number of sub and super-diagonals specified.", &
-
2530 la_array_size_error)
-
2531 return
-
2532 end subroutine
-
2533
-
2534! ------------------------------------------------------------------------------
-
2535 module subroutine band_diag_mtx_mult_dbl(left, m, kl, ku, alpha, a, b, err)
-
2536 ! Arguments
-
2537 logical, intent(in) :: left
-
2538 integer(int32), intent(in) :: m, kl, ku
-
2539 real(real64), intent(in) :: alpha
-
2540 real(real64), intent(inout), dimension(:,:) :: a
-
2541 real(real64), intent(in), dimension(:) :: b
-
2542 class(errors), intent(inout), optional, target :: err
-
2543
-
2544 ! Parameters
-
2545 real(real64), parameter :: one = 1.0d0
-
2546
-
2547 ! Local Variables
-
2548 class(errors), pointer :: errmgr
-
2549 type(errors), target :: deferr
-
2550 integer(int32) :: i, i1, i2, j, k, n
-
2551 real(real64) :: temp
-
2552
-
2553 ! Initialization
-
2554 if (present(err)) then
-
2555 errmgr => err
-
2556 else
-
2557 errmgr => deferr
-
2558 end if
-
2559 n = size(a, 2)
-
2560
-
2561 ! Input Checking
-
2562 if (kl < 0) go to 10
-
2563 if (ku < 0) go to 20
-
2564 if (left) then
-
2565 if (size(b) /= n) go to 30
-
2566 else
-
2567 if (size(b) < m) go to 30
-
2568 end if
-
2569
-
2570 ! Process
-
2571 if (left) then
-
2572 ! Compute A = A * B
-
2573 do j = 1, n
-
2574 k = ku + 1 - j
-
2575 i1 = max(1, j - ku) + k
-
2576 i2 = min(m, j + kl) + k
-
2577 if (alpha == one) then
-
2578 temp = b(j)
-
2579 else
-
2580 temp = alpha * b(j)
-
2581 end if
-
2582 do i = i1, i2
-
2583 a(i,j) = a(i,j) * temp
-
2584 end do
-
2585 end do
-
2586 else
-
2587 ! Compute A = B * A
-
2588 do j = 1, n
-
2589 k = ku + 1 - j
-
2590 i1 = max(1, j - ku)
-
2591 i2 = min(m, j + kl)
-
2592 if (alpha == 1.0d0) then
-
2593 do i = i1, i2
-
2594 a(i+k,j) = a(i+k,j) * b(i)
-
2595 end do
-
2596 else
-
2597 do i = i1, i2
-
2598 a(i+k,j) = alpha * a(i+k,j) * b(i)
-
2599 end do
-
2600 end if
-
2601 end do
-
2602 end if
-
2603
+
2346 ! KL < 0
+
234710 continue
+
2348 call errmgr%report_error("band_mtx_vec_mult_dbl", &
+
2349 "The number of subdiagonals must be at least 0.", &
+
2350 la_invalid_input_error)
+
2351 return
+
2352
+
2353 ! KU < 0
+
235420 continue
+
2355 call errmgr%report_error("band_mtx_vec_mult_dbl", &
+
2356 "The number of superdiagonals must be at least 0.", &
+
2357 la_invalid_input_error)
+
2358 return
+
2359
+
2360 ! A is incorrectly sized
+
236130 continue
+
2362 call errmgr%report_error("band_mtx_vec_mult_dbl", &
+
2363 "The size of matrix A is not compatible with the other vectors.", &
+
2364 la_array_size_error)
+
2365 return
+
2366 end subroutine
+
2367
+
2368! ------------------------------------------------------------------------------
+
2369 module subroutine band_mtx_vec_mult_cmplx(trans, kl, ku, alpha, a, x, &
+
2370 beta, y, err)
+
2371 ! Arguments
+
2372 integer(int32), intent(in) :: trans
+
2373 integer(int32), intent(in) :: kl, ku
+
2374 complex(real64), intent(in) :: alpha, beta
+
2375 complex(real64), intent(in), dimension(:,:) :: a
+
2376 complex(real64), intent(in), dimension(:) :: x
+
2377 complex(real64), intent(inout), dimension(:) :: y
+
2378 class(errors), intent(inout), optional, target :: err
+
2379
+
2380 ! Local Variables
+
2381 character :: op
+
2382 logical :: trns
+
2383 integer(int32) :: m, n
+
2384 class(errors), pointer :: errmgr
+
2385 type(errors), target :: deferr
+
2386
+
2387 ! Initialization
+
2388 if (present(err)) then
+
2389 errmgr => err
+
2390 else
+
2391 errmgr => deferr
+
2392 end if
+
2393 if (trans == la_transpose) then
+
2394 op = "T"
+
2395 trns = .true.
+
2396 else if (trans == la_hermitian_transpose) then
+
2397 op = "C"
+
2398 trns = .true.
+
2399 else
+
2400 op = "N"
+
2401 trns = .false.
+
2402 end if
+
2403 if (trns) then
+
2404 m = size(x)
+
2405 n = size(y)
+
2406 else
+
2407 m = size(y)
+
2408 n = size(x)
+
2409 end if
+
2410
+
2411 ! Input Checking
+
2412 if (kl < 0) go to 10
+
2413 if (ku < 0) go to 20
+
2414 if (size(a, 1) /= kl + ku + 1) go to 30
+
2415 if (size(a, 2) /= n) go to 30
+
2416
+
2417 ! Process
+
2418 call zgbmv(op, m, n, kl, ku, alpha, a, size(a, 1), x, 1, beta, y, 1)
+
2419
+
2420 ! End
+
2421 return
+
2422
+
2423 ! KL < 0
+
242410 continue
+
2425 call errmgr%report_error("band_mtx_vec_mult_cmplx", &
+
2426 "The number of subdiagonals must be at least 0.", &
+
2427 la_invalid_input_error)
+
2428 return
+
2429
+
2430 ! KU < 0
+
243120 continue
+
2432 call errmgr%report_error("band_mtx_vec_mult_cmplx", &
+
2433 "The number of superdiagonals must be at least 0.", &
+
2434 la_invalid_input_error)
+
2435 return
+
2436
+
2437 ! A is incorrectly sized
+
243830 continue
+
2439 call errmgr%report_error("band_mtx_vec_mult_cmplx", &
+
2440 "The size of matrix A is not compatible with the other vectors.", &
+
2441 la_array_size_error)
+
2442 return
+
2443 end subroutine
+
2444
+
2445! ------------------------------------------------------------------------------
+
2446 module subroutine band_to_full_mtx_dbl(kl, ku, b, f, err)
+
2447 ! Arguments
+
2448 integer(int32), intent(in) :: kl, ku
+
2449 real(real64), intent(in), dimension(:,:) :: b
+
2450 real(real64), intent(out), dimension(:,:) :: f
+
2451 class(errors), intent(inout), optional, target :: err
+
2452
+
2453 ! Parameters
+
2454 real(real64), parameter :: zero = 0.0d0
+
2455
+
2456 ! Local Variables
+
2457 class(errors), pointer :: errmgr
+
2458 type(errors), target :: deferr
+
2459 integer(int32) :: i, j, k, m, n, i1, i2
+
2460
+
2461 ! Initialization
+
2462 if (present(err)) then
+
2463 errmgr => err
+
2464 else
+
2465 errmgr => deferr
+
2466 end if
+
2467 m = size(f, 1)
+
2468 n = size(f, 2)
+
2469
+
2470 ! Input Check
+
2471 if (kl < 0) go to 10
+
2472 if (ku < 0) go to 20
+
2473 if (size(b, 2) /= n) go to 30
+
2474 if (size(b, 1) /= kl + ku + 1) go to 40
+
2475
+
2476 ! Process
+
2477 do j = 1, n
+
2478 k = ku + 1 - j
+
2479 i1 = max(1, j - ku)
+
2480 i2 = min(m, j + kl)
+
2481 do i = 1, i1 - 1
+
2482 f(i,j) = zero
+
2483 end do
+
2484 do i = i1, i2
+
2485 f(i,j) = b(k+i,j)
+
2486 end do
+
2487 do i = i2 + 1, m
+
2488 f(i,j) = zero
+
2489 end do
+
2490 end do
+
2491
+
2492 ! End
+
2493 return
+
2494
+
2495 ! KL < 0
+
249610 continue
+
2497 call errmgr%report_error("band_to_full_mtx_dbl", &
+
2498 "The number of subdiagonals must be at least 0.", &
+
2499 la_invalid_input_error)
+
2500 return
+
2501
+
2502 ! KU < 0
+
250320 continue
+
2504 call errmgr%report_error("band_to_full_mtx_dbl", &
+
2505 "The number of superdiagonals must be at least 0.", &
+
2506 la_invalid_input_error)
+
2507 return
+
2508
+
2509 ! A is incorrectly sized
+
251030 continue
+
2511 call errmgr%report_error("band_to_full_mtx_dbl", &
+
2512 "The number of columns in the banded matrix does not match " // &
+
2513 "the number of columns in the full matrix.", &
+
2514 la_array_size_error)
+
2515 return
+
2516
+
251740 continue
+
2518 call errmgr%report_error("band_to_full_mtx_dbl", &
+
2519 "The number of rows in the banded matrix does not align with " // &
+
2520 "the number of sub and super-diagonals specified.", &
+
2521 la_array_size_error)
+
2522 return
+
2523 end subroutine
+
2524
+
2525! ------------------------------------------------------------------------------
+
2526 module subroutine band_to_full_mtx_cmplx(kl, ku, b, f, err)
+
2527 ! Arguments
+
2528 integer(int32), intent(in) :: kl, ku
+
2529 complex(real64), intent(in), dimension(:,:) :: b
+
2530 complex(real64), intent(out), dimension(:,:) :: f
+
2531 class(errors), intent(inout), optional, target :: err
+
2532
+
2533 ! Parameters
+
2534 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
+
2535
+
2536 ! Local Variables
+
2537 class(errors), pointer :: errmgr
+
2538 type(errors), target :: deferr
+
2539 integer(int32) :: i, j, k, m, n, i1, i2
+
2540
+
2541 ! Initialization
+
2542 if (present(err)) then
+
2543 errmgr => err
+
2544 else
+
2545 errmgr => deferr
+
2546 end if
+
2547 m = size(f, 1)
+
2548 n = size(f, 2)
+
2549
+
2550 ! Input Check
+
2551 if (kl < 0) go to 10
+
2552 if (ku < 0) go to 20
+
2553 if (size(b, 2) /= n) go to 30
+
2554 if (size(b, 1) /= kl + ku + 1) go to 40
+
2555
+
2556 ! Process
+
2557 do j = 1, n
+
2558 k = ku + 1 - j
+
2559 i1 = max(1, j - ku)
+
2560 i2 = min(m, j + kl)
+
2561 do i = 1, i1 - 1
+
2562 f(i,j) = zero
+
2563 end do
+
2564 do i = i1, i2
+
2565 f(i,j) = b(k+i,j)
+
2566 end do
+
2567 do i = i2 + 1, m
+
2568 f(i,j) = zero
+
2569 end do
+
2570 end do
+
2571
+
2572 ! End
+
2573 return
+
2574
+
2575 ! KL < 0
+
257610 continue
+
2577 call errmgr%report_error("band_to_full_mtx_cmplx", &
+
2578 "The number of subdiagonals must be at least 0.", &
+
2579 la_invalid_input_error)
+
2580 return
+
2581
+
2582 ! KU < 0
+
258320 continue
+
2584 call errmgr%report_error("band_to_full_mtx_cmplx", &
+
2585 "The number of superdiagonals must be at least 0.", &
+
2586 la_invalid_input_error)
+
2587 return
+
2588
+
2589 ! A is incorrectly sized
+
259030 continue
+
2591 call errmgr%report_error("band_to_full_mtx_cmplx", &
+
2592 "The number of columns in the banded matrix does not match " // &
+
2593 "the number of columns in the full matrix.", &
+
2594 la_array_size_error)
+
2595 return
+
2596
+
259740 continue
+
2598 call errmgr%report_error("band_to_full_mtx_cmplx", &
+
2599 "The number of rows in the banded matrix does not align with " // &
+
2600 "the number of sub and super-diagonals specified.", &
+
2601 la_array_size_error)
+
2602 return
+
2603 end subroutine
2604
-
2605 ! End
-
2606 return
-
2607
-
2608 ! KL < 0
-
260910 continue
-
2610 call errmgr%report_error("band_diag_mtx_mult_dbl", &
-
2611 "The number of subdiagonals must be at least 0.", &
-
2612 la_invalid_input_error)
-
2613 return
+
2605! ------------------------------------------------------------------------------
+
2606 module subroutine band_diag_mtx_mult_dbl(left, m, kl, ku, alpha, a, b, err)
+
2607 ! Arguments
+
2608 logical, intent(in) :: left
+
2609 integer(int32), intent(in) :: m, kl, ku
+
2610 real(real64), intent(in) :: alpha
+
2611 real(real64), intent(inout), dimension(:,:) :: a
+
2612 real(real64), intent(in), dimension(:) :: b
+
2613 class(errors), intent(inout), optional, target :: err
2614
-
2615 ! KU < 0
-
261620 continue
-
2617 call errmgr%report_error("band_diag_mtx_mult_dbl", &
-
2618 "The number of superdiagonals must be at least 0.", &
-
2619 la_invalid_input_error)
-
2620 return
-
2621
-
2622 ! B is not sized correctly
-
262330 continue
-
2624 call errmgr%report_error("band_diag_mtx_mult_dbl", &
-
2625 "Inner matrix dimensions do not agree.", &
-
2626 la_array_size_error)
-
2627 return
-
2628 end subroutine
-
2629
-
2630! ------------------------------------------------------------------------------
-
2631 module subroutine band_diag_mtx_mult_cmplx(left, m, kl, ku, alpha, a, b, err)
-
2632 ! Arguments
-
2633 logical, intent(in) :: left
-
2634 integer(int32), intent(in) :: m, kl, ku
-
2635 complex(real64), intent(in) :: alpha
-
2636 complex(real64), intent(inout), dimension(:,:) :: a
-
2637 complex(real64), intent(in), dimension(:) :: b
-
2638 class(errors), intent(inout), optional, target :: err
-
2639
-
2640 ! Parameters
-
2641 complex(real64), parameter :: one = (1.0d0, 0.0d0)
-
2642
-
2643 ! Local Variables
-
2644 class(errors), pointer :: errmgr
-
2645 type(errors), target :: deferr
-
2646 integer(int32) :: i, i1, i2, j, k, n
-
2647 complex(real64) :: temp
-
2648
-
2649 ! Initialization
-
2650 if (present(err)) then
-
2651 errmgr => err
-
2652 else
-
2653 errmgr => deferr
-
2654 end if
-
2655 n = size(a, 2)
-
2656
-
2657 ! Input Checking
-
2658 if (kl < 0) go to 10
-
2659 if (ku < 0) go to 20
-
2660 if (left) then
-
2661 if (size(b) /= n) go to 30
-
2662 else
-
2663 if (size(b) < m) go to 30
-
2664 end if
-
2665
-
2666 ! Process
-
2667 if (left) then
-
2668 ! Compute A = A * B
-
2669 do j = 1, n
-
2670 k = ku + 1 - j
-
2671 i1 = max(1, j - ku) + k
-
2672 i2 = min(m, j + kl) + k
-
2673 if (alpha == one) then
-
2674 temp = b(j)
-
2675 else
-
2676 temp = alpha * b(j)
-
2677 end if
-
2678 do i = i1, i2
-
2679 a(i,j) = a(i,j) * temp
-
2680 end do
-
2681 end do
-
2682 else
-
2683 ! Compute A = B * A
-
2684 do j = 1, n
-
2685 k = ku + 1 - j
-
2686 i1 = max(1, j - ku)
-
2687 i2 = min(m, j + kl)
-
2688 if (alpha == 1.0d0) then
-
2689 do i = i1, i2
-
2690 a(i+k,j) = a(i+k,j) * b(i)
-
2691 end do
-
2692 else
-
2693 do i = i1, i2
-
2694 a(i+k,j) = alpha * a(i+k,j) * b(i)
-
2695 end do
-
2696 end if
-
2697 end do
-
2698 end if
-
2699
+
2615 ! Parameters
+
2616 real(real64), parameter :: one = 1.0d0
+
2617
+
2618 ! Local Variables
+
2619 class(errors), pointer :: errmgr
+
2620 type(errors), target :: deferr
+
2621 integer(int32) :: i, i1, i2, j, k, n
+
2622 real(real64) :: temp
+
2623
+
2624 ! Initialization
+
2625 if (present(err)) then
+
2626 errmgr => err
+
2627 else
+
2628 errmgr => deferr
+
2629 end if
+
2630 n = size(a, 2)
+
2631
+
2632 ! Input Checking
+
2633 if (kl < 0) go to 10
+
2634 if (ku < 0) go to 20
+
2635 if (left) then
+
2636 if (size(b) /= n) go to 30
+
2637 else
+
2638 if (size(b) < m) go to 30
+
2639 end if
+
2640
+
2641 ! Process
+
2642 if (left) then
+
2643 ! Compute A = A * B
+
2644 do j = 1, n
+
2645 k = ku + 1 - j
+
2646 i1 = max(1, j - ku) + k
+
2647 i2 = min(m, j + kl) + k
+
2648 if (alpha == one) then
+
2649 temp = b(j)
+
2650 else
+
2651 temp = alpha * b(j)
+
2652 end if
+
2653 do i = i1, i2
+
2654 a(i,j) = a(i,j) * temp
+
2655 end do
+
2656 end do
+
2657 else
+
2658 ! Compute A = B * A
+
2659 do j = 1, n
+
2660 k = ku + 1 - j
+
2661 i1 = max(1, j - ku)
+
2662 i2 = min(m, j + kl)
+
2663 if (alpha == 1.0d0) then
+
2664 do i = i1, i2
+
2665 a(i+k,j) = a(i+k,j) * b(i)
+
2666 end do
+
2667 else
+
2668 do i = i1, i2
+
2669 a(i+k,j) = alpha * a(i+k,j) * b(i)
+
2670 end do
+
2671 end if
+
2672 end do
+
2673 end if
+
2674
+
2675
+
2676 ! End
+
2677 return
+
2678
+
2679 ! KL < 0
+
268010 continue
+
2681 call errmgr%report_error("band_diag_mtx_mult_dbl", &
+
2682 "The number of subdiagonals must be at least 0.", &
+
2683 la_invalid_input_error)
+
2684 return
+
2685
+
2686 ! KU < 0
+
268720 continue
+
2688 call errmgr%report_error("band_diag_mtx_mult_dbl", &
+
2689 "The number of superdiagonals must be at least 0.", &
+
2690 la_invalid_input_error)
+
2691 return
+
2692
+
2693 ! B is not sized correctly
+
269430 continue
+
2695 call errmgr%report_error("band_diag_mtx_mult_dbl", &
+
2696 "Inner matrix dimensions do not agree.", &
+
2697 la_array_size_error)
+
2698 return
+
2699 end subroutine
2700
-
2701 ! End
-
2702 return
-
2703
-
2704 ! KL < 0
-
270510 continue
-
2706 call errmgr%report_error("band_diag_mtx_mult_cmplx", &
-
2707 "The number of subdiagonals must be at least 0.", &
-
2708 la_invalid_input_error)
-
2709 return
+
2701! ------------------------------------------------------------------------------
+
2702 module subroutine band_diag_mtx_mult_cmplx(left, m, kl, ku, alpha, a, b, err)
+
2703 ! Arguments
+
2704 logical, intent(in) :: left
+
2705 integer(int32), intent(in) :: m, kl, ku
+
2706 complex(real64), intent(in) :: alpha
+
2707 complex(real64), intent(inout), dimension(:,:) :: a
+
2708 complex(real64), intent(in), dimension(:) :: b
+
2709 class(errors), intent(inout), optional, target :: err
2710
-
2711 ! KU < 0
-
271220 continue
-
2713 call errmgr%report_error("band_diag_mtx_mult_cmplx", &
-
2714 "The number of superdiagonals must be at least 0.", &
-
2715 la_invalid_input_error)
-
2716 return
-
2717
-
2718 ! B is not sized correctly
-
271930 continue
-
2720 call errmgr%report_error("band_diag_mtx_mult_cmplx", &
-
2721 "Inner matrix dimensions do not agree.", &
-
2722 la_array_size_error)
-
2723 return
-
2724 end subroutine
-
2725
-
2726! ------------------------------------------------------------------------------
-
2727end submodule
+
2711 ! Parameters
+
2712 complex(real64), parameter :: one = (1.0d0, 0.0d0)
+
2713
+
2714 ! Local Variables
+
2715 class(errors), pointer :: errmgr
+
2716 type(errors), target :: deferr
+
2717 integer(int32) :: i, i1, i2, j, k, n
+
2718 complex(real64) :: temp
+
2719
+
2720 ! Initialization
+
2721 if (present(err)) then
+
2722 errmgr => err
+
2723 else
+
2724 errmgr => deferr
+
2725 end if
+
2726 n = size(a, 2)
+
2727
+
2728 ! Input Checking
+
2729 if (kl < 0) go to 10
+
2730 if (ku < 0) go to 20
+
2731 if (left) then
+
2732 if (size(b) /= n) go to 30
+
2733 else
+
2734 if (size(b) < m) go to 30
+
2735 end if
+
2736
+
2737 ! Process
+
2738 if (left) then
+
2739 ! Compute A = A * B
+
2740 do j = 1, n
+
2741 k = ku + 1 - j
+
2742 i1 = max(1, j - ku) + k
+
2743 i2 = min(m, j + kl) + k
+
2744 if (alpha == one) then
+
2745 temp = b(j)
+
2746 else
+
2747 temp = alpha * b(j)
+
2748 end if
+
2749 do i = i1, i2
+
2750 a(i,j) = a(i,j) * temp
+
2751 end do
+
2752 end do
+
2753 else
+
2754 ! Compute A = B * A
+
2755 do j = 1, n
+
2756 k = ku + 1 - j
+
2757 i1 = max(1, j - ku)
+
2758 i2 = min(m, j + kl)
+
2759 if (alpha == 1.0d0) then
+
2760 do i = i1, i2
+
2761 a(i+k,j) = a(i+k,j) * b(i)
+
2762 end do
+
2763 else
+
2764 do i = i1, i2
+
2765 a(i+k,j) = alpha * a(i+k,j) * b(i)
+
2766 end do
+
2767 end if
+
2768 end do
+
2769 end if
+
2770
+
2771
+
2772 ! End
+
2773 return
+
2774
+
2775 ! KL < 0
+
277610 continue
+
2777 call errmgr%report_error("band_diag_mtx_mult_cmplx", &
+
2778 "The number of subdiagonals must be at least 0.", &
+
2779 la_invalid_input_error)
+
2780 return
+
2781
+
2782 ! KU < 0
+
278320 continue
+
2784 call errmgr%report_error("band_diag_mtx_mult_cmplx", &
+
2785 "The number of superdiagonals must be at least 0.", &
+
2786 la_invalid_input_error)
+
2787 return
+
2788
+
2789 ! B is not sized correctly
+
279030 continue
+
2791 call errmgr%report_error("band_diag_mtx_mult_cmplx", &
+
2792 "Inner matrix dimensions do not agree.", &
+
2793 la_array_size_error)
+
2794 return
+
2795 end subroutine
+
2796
+
2797! ------------------------------------------------------------------------------
+
2798 module subroutine banded_to_dense_dbl(m, kl, ku, a, x, err)
+
2799 ! Arguments
+
2800 integer(int32), intent(in) :: m, kl, ku
+
2801 real(real64), intent(in), dimension(:,:) :: a
+
2802 real(real64), intent(out), dimension(:,:) :: x
+
2803 class(errors), intent(inout), optional, target :: err
+
2804
+
2805 ! Parameters
+
2806 real(real64), parameter :: zero = 0.0d0
+
2807
+
2808 ! Local Variables
+
2809 integer(int32) :: i, j, k, n, i1, i2
+
2810 class(errors), pointer :: errmgr
+
2811 type(errors), target :: deferr
+
2812
+
2813 ! Initialization
+
2814 if (present(err)) then
+
2815 errmgr => err
+
2816 else
+
2817 errmgr => deferr
+
2818 end if
+
2819 n = size(a, 2)
+
2820
+
2821 ! Input Checking
+
2822 if (kl < 0 .or. ku < 0) then
+
2823 call errmgr%report_error("banded_to_dense_dbl", &
+
2824 "The bandwidth dimensions must not be negative-valued.", &
+
2825 la_invalid_input_error)
+
2826 return
+
2827 end if
+
2828 if (size(a, 1) /= kl + ku + 1) then
+
2829 call errmgr%report_error("banded_to_dense_dbl", "The size of " // &
+
2830 "the input matrix does not match the specified bandwidth.", &
+
2831 la_matrix_format_error)
+
2832 return
+
2833 end if
+
2834 if (size(x, 1) /= m .or. size(x, 2) /= n) then
+
2835 call errmgr%report_error("banded_to_dense_dbl", &
+
2836 "The output matrix dimensions are not correct.", &
+
2837 la_array_size_error)
+
2838 return
+
2839 end if
+
2840
+
2841 ! Process
+
2842 do j = 1, n
+
2843 k = ku + 1 - j
+
2844 i1 = max(1, j - ku)
+
2845 i2 = min(m, j + kl)
+
2846 x(:i1-1,j) = zero
+
2847 do i = i1, i2
+
2848 x(i, j) = a(k + i, j)
+
2849 end do
+
2850 x(i2+1:,j) = zero
+
2851 end do
+
2852 end subroutine
+
2853
+
2854! ------------------------------------------------------------------------------
+
2855 module subroutine banded_to_dense_cmplx(m, kl, ku, a, x, err)
+
2856 ! Arguments
+
2857 integer(int32), intent(in) :: m, kl, ku
+
2858 complex(real64), intent(in), dimension(:,:) :: a
+
2859 complex(real64), intent(out), dimension(:,:) :: x
+
2860 class(errors), intent(inout), optional, target :: err
+
2861
+
2862 ! Parameters
+
2863 complex(real64), parameter :: zero = (0.0d0, 0.0d0)
+
2864
+
2865 ! Local Variables
+
2866 integer(int32) :: i, j, k, n, i1, i2
+
2867 class(errors), pointer :: errmgr
+
2868 type(errors), target :: deferr
+
2869
+
2870 ! Initialization
+
2871 if (present(err)) then
+
2872 errmgr => err
+
2873 else
+
2874 errmgr => deferr
+
2875 end if
+
2876 n = size(a, 2)
+
2877
+
2878 ! Input Checking
+
2879 if (kl < 0 .or. ku < 0) then
+
2880 call errmgr%report_error("banded_to_dense_cmplx", &
+
2881 "The bandwidth dimensions must not be negative-valued.", &
+
2882 la_invalid_input_error)
+
2883 return
+
2884 end if
+
2885 if (size(a, 1) /= kl + ku + 1) then
+
2886 call errmgr%report_error("banded_to_dense_cmplx", "The size of " // &
+
2887 "the input matrix does not match the specified bandwidth.", &
+
2888 la_matrix_format_error)
+
2889 return
+
2890 end if
+
2891 if (size(x, 1) /= m .or. size(x, 2) /= n) then
+
2892 call errmgr%report_error("banded_to_dense_cmplx", &
+
2893 "The output matrix dimensions are not correct.", &
+
2894 la_array_size_error)
+
2895 return
+
2896 end if
+
2897
+
2898 ! Process
+
2899 do j = 1, n
+
2900 k = ku + 1 - j
+
2901 i1 = max(1, j - ku)
+
2902 i2 = min(m, j + kl)
+
2903 x(:i1-1,j) = zero
+
2904 do i = i1, i2
+
2905 x(i, j) = a(k + i, j)
+
2906 end do
+
2907 x(i2+1:,j) = zero
+
2908 end do
+
2909 end subroutine
+
2910
+
2911! ------------------------------------------------------------------------------
+
2912 module subroutine dense_to_banded_dbl(a, kl, ku, x, err)
+
2913 ! Arguments
+
2914 real(real64), intent(in), dimension(:,:) :: a
+
2915 integer(int32), intent(in) :: kl, ku
+
2916 real(real64), intent(out), dimension(:,:) :: x
+
2917 class(errors), intent(inout), optional, target :: err
+
2918
+
2919 ! Local Variables
+
2920 integer(int32) :: i, j, k, m, n, mm, flag
+
2921 class(errors), pointer :: errmgr
+
2922 type(errors), target :: deferr
+
2923
+
2924 ! Initialization
+
2925 if (present(err)) then
+
2926 errmgr => err
+
2927 else
+
2928 errmgr => deferr
+
2929 end if
+
2930 m = size(a, 1)
+
2931 n = size(a, 2)
+
2932 mm = kl + ku + 1
+
2933
+
2934 ! Input Check
+
2935 if (kl < 0 .or. ku < 0) then
+
2936 call errmgr%report_error("dense_to_banded_dbl", &
+
2937 "The bandwidth dimensions must not be negative-valued.", &
+
2938 la_invalid_input_error)
+
2939 return
+
2940 end if
+
2941 if (size(x, 1) /= mm .or. size(x, 2) /= n) then
+
2942 call errmgr%report_error("dense_to_banded_dbl", &
+
2943 "The output matrix dimensions are not correct.", &
+
2944 la_array_size_error)
+
2945 return
+
2946 end if
+
2947
+
2948 ! Process
+
2949 do j = 1, n
+
2950 k = ku + 1 - j
+
2951 do i = max(1, j - ku), min(m, j + kl)
+
2952 x(k + i, j) = a(i,j)
+
2953 end do
+
2954 end do
+
2955 end subroutine
+
2956
+
2957! ------------------------------------------------------------------------------
+
2958 module subroutine dense_to_banded_cmplx(a, kl, ku, x, err)
+
2959 ! Arguments
+
2960 complex(real64), intent(in), dimension(:,:) :: a
+
2961 integer(int32), intent(in) :: kl, ku
+
2962 complex(real64), intent(out), dimension(:,:) :: x
+
2963 class(errors), intent(inout), optional, target :: err
+
2964
+
2965 ! Local Variables
+
2966 integer(int32) :: i, j, k, m, n, mm, flag
+
2967 class(errors), pointer :: errmgr
+
2968 type(errors), target :: deferr
+
2969
+
2970 ! Initialization
+
2971 if (present(err)) then
+
2972 errmgr => err
+
2973 else
+
2974 errmgr => deferr
+
2975 end if
+
2976 m = size(a, 1)
+
2977 n = size(a, 2)
+
2978 mm = kl + ku + 1
+
2979
+
2980 ! Input Check
+
2981 if (kl < 0 .or. ku < 0) then
+
2982 call errmgr%report_error("dense_to_banded_cmplx", &
+
2983 "The bandwidth dimensions must not be negative-valued.", &
+
2984 la_invalid_input_error)
+
2985 return
+
2986 end if
+
2987 if (size(x, 1) /= mm .or. size(x, 2) /= n) then
+
2988 call errmgr%report_error("dense_to_banded_cmplx", &
+
2989 "The output matrix dimensions are not correct.", &
+
2990 la_array_size_error)
+
2991 return
+
2992 end if
+
2993
+
2994 ! Process
+
2995 do j = 1, n
+
2996 k = ku + 1 - j
+
2997 do i = max(1, j - ku), min(m, j + kl)
+
2998 x(k + i, j) = a(i,j)
+
2999 end do
+
3000 end do
+
3001 end subroutine
+
3002
+
3003! ------------------------------------------------------------------------------
+
3004 module subroutine extract_diagonal_dbl(a, diag, err)
+
3005 ! Arguments
+
3006 real(real64), intent(in), dimension(:,:) :: a
+
3007 real(real64), intent(out), dimension(:) :: diag
+
3008 class(errors), intent(inout), optional, target :: err
+
3009
+
3010 ! Local Variables
+
3011 integer(int32) :: i, m, n, mn
+
3012 class(errors), pointer :: errmgr
+
3013 type(errors), target :: deferr
+
3014
+
3015 ! Initialization
+
3016 if (present(err)) then
+
3017 errmgr => err
+
3018 else
+
3019 errmgr => deferr
+
3020 end if
+
3021 m = size(a, 1)
+
3022 n = size(a, 2)
+
3023 mn = min(m, n)
+
3024
+
3025 ! Input Checking
+
3026 if (size(diag) /= mn) then
+
3027 call errmgr%report_error("extract_diagonal_dbl", &
+
3028 "The is expected to have MIN(M, N) elements.", &
+
3029 la_array_size_error)
+
3030 return
+
3031 end if
+
3032
+
3033 ! Process
+
3034 do i = 1, mn
+
3035 diag(i) = a(i,i)
+
3036 end do
+
3037 end subroutine
+
3038
+
3039! ------------------------------------------------------------------------------
+
3040 module subroutine extract_diagonal_cmplx(a, diag, err)
+
3041 ! Arguments
+
3042 complex(real64), intent(in), dimension(:,:) :: a
+
3043 complex(real64), intent(out), dimension(:) :: diag
+
3044 class(errors), intent(inout), optional, target :: err
+
3045
+
3046 ! Local Variables
+
3047 integer(int32) :: i, m, n, mn
+
3048 class(errors), pointer :: errmgr
+
3049 type(errors), target :: deferr
+
3050
+
3051 ! Initialization
+
3052 if (present(err)) then
+
3053 errmgr => err
+
3054 else
+
3055 errmgr => deferr
+
3056 end if
+
3057 m = size(a, 1)
+
3058 n = size(a, 2)
+
3059 mn = min(m, n)
+
3060
+
3061 ! Input Checking
+
3062 if (size(diag) /= mn) then
+
3063 call errmgr%report_error("extract_diagonal_cmplx", &
+
3064 "The is expected to have MIN(M, N) elements.", &
+
3065 la_array_size_error)
+
3066 return
+
3067 end if
+
3068
+
3069 ! Process
+
3070 do i = 1, mn
+
3071 diag(i) = a(i,i)
+
3072 end do
+
3073 end subroutine
+
3074
+
3075! ------------------------------------------------------------------------------
+
3076end submodule
diff --git a/docs/html/linalg__eigen_8f90_source.html b/docs/html/linalg__eigen_8f90_source.html index da0a0979..e3b1f894 100644 --- a/docs/html/linalg__eigen_8f90_source.html +++ b/docs/html/linalg__eigen_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg__factor_8f90_source.html b/docs/html/linalg__factor_8f90_source.html index b30a20e3..dfeafc43 100644 --- a/docs/html/linalg__factor_8f90_source.html +++ b/docs/html/linalg__factor_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg__solve_8f90_source.html b/docs/html/linalg__solve_8f90_source.html index cfab1b87..3e22ea52 100644 --- a/docs/html/linalg__solve_8f90_source.html +++ b/docs/html/linalg__solve_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg__sorting_8f90_source.html b/docs/html/linalg__sorting_8f90_source.html index d267e3aa..98b9dd10 100644 --- a/docs/html/linalg__sorting_8f90_source.html +++ b/docs/html/linalg__sorting_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/linalg__sparse_8f90_source.html b/docs/html/linalg__sparse_8f90_source.html new file mode 100644 index 00000000..d9b581a8 --- /dev/null +++ b/docs/html/linalg__sparse_8f90_source.html @@ -0,0 +1,1575 @@ + + + + + + + +linalg: D:/Code/linalg/src/linalg_sparse.f90 Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg_sparse.f90
+
+
+
1submodule(linalg) linalg_sparse
+
2 use sparskit
+
3 use blas
+
4 implicit none
+
5contains
+
6! ******************************************************************************
+
7! CSR ROUTINES
+
8! ------------------------------------------------------------------------------
+
9module function csr_get_element(this, i, j) result(rst)
+
10 ! Arguments
+
11 class(csr_matrix), intent(in) :: this
+
12 integer(int32), intent(in) :: i, j
+
13 real(real64) :: rst
+
14
+
15 ! Local Variables
+
16 integer(int32) :: iadd
+
17 logical :: sorted
+
18
+
19 ! Initialization
+
20 sorted = .false.
+
21
+
22 ! Process
+
23 if (.not.allocated(this%row_indices) .or. &
+
24 .not.allocated(this%column_indices) .or. &
+
25 .not.allocated(this%values)) &
+
26 then
+
27 rst = 0.0d0
+
28 return
+
29 end if
+
30 rst = getelm(i, j, this%values, this%column_indices, this%row_indices, &
+
31 iadd, sorted)
+
32end function
+
33
+
34! ------------------------------------------------------------------------------
+
35pure module function csr_size(x, dim) result(rst)
+
36 ! Arguments
+
37 class(csr_matrix), intent(in) :: x
+
38 integer(int32), intent(in) :: dim
+
39 integer(int32) :: rst
+
40
+
41 ! Process
+
42 select case (dim)
+
43 case (1)
+
44 if (allocated(x%row_indices)) then
+
45 rst = size(x%row_indices) - 1
+
46 else
+
47 rst = 0
+
48 end if
+
49 case (2)
+
50 rst = x%n
+
51 case default
+
52 rst = 0
+
53 end select
+
54end function
+
55
+
56! ------------------------------------------------------------------------------
+
57pure module function nonzero_count_csr(x) result(rst)
+
58 ! Arguments
+
59 class(csr_matrix), intent(in) :: x
+
60 integer(int32) :: rst
+
61
+
62 ! Process
+
63 if (allocated(x%values)) then
+
64 rst = size(x%values)
+
65 else
+
66 rst = 0
+
67 end if
+
68end function
+
69
+
70! ------------------------------------------------------------------------------
+
71module function create_empty_csr_matrix(m, n, nnz, err) result(rst)
+
72 ! Arguments
+
73 integer(int32), intent(in) :: m, n, nnz
+
74 class(errors), intent(inout), optional, target :: err
+
75 type(csr_matrix) :: rst
+
76
+
77 ! Local Variables
+
78 integer(int32) :: flag, m1
+
79 class(errors), pointer :: errmgr
+
80 type(errors), target :: deferr
+
81
+
82 ! Initialization
+
83 if (present(err)) then
+
84 errmgr => err
+
85 else
+
86 errmgr => deferr
+
87 end if
+
88 m1 = m + 1
+
89
+
90 ! Input Checking
+
91 if (m < 0) then
+
92 call errmgr%report_error("create_empty_csr_matrix", &
+
93 "The number of rows must be a positive value.", &
+
94 la_invalid_input_error)
+
95 return
+
96 end if
+
97 if (n < 0) then
+
98 call errmgr%report_error("create_empty_csr_matrix", &
+
99 "The number of columns must be a positive value.", &
+
100 la_invalid_input_error)
+
101 return
+
102 end if
+
103 if (nnz < 0) then
+
104 call errmgr%report_error("create_empty_csr_matrix", &
+
105 "The number of non-zero values must be a positive value.", &
+
106 la_invalid_input_error)
+
107 return
+
108 end if
+
109
+
110 ! Allocation
+
111 rst%n = n
+
112 allocate(rst%row_indices(m1), rst%column_indices(nnz), source = 0, &
+
113 stat = flag)
+
114 if (flag == 0) allocate(rst%values(nnz), source = 0.0d0, stat = flag)
+
115 if (flag /= 0) then
+
116 call errmgr%report_error("create_empty_csr_matrix", &
+
117 "Memory allocation error.", la_out_of_memory_error)
+
118 return
+
119 end if
+
120end function
+
121
+
122! ------------------------------------------------------------------------------
+
123module function dense_to_csr(a, err) result(rst)
+
124 ! Arguments
+
125 real(real64), intent(in), dimension(:,:) :: a
+
126 class(errors), intent(inout), optional, target :: err
+
127 type(csr_matrix) :: rst
+
128
+
129 ! Local Variables
+
130 integer(int32) :: i, j, k, m, n, nnz
+
131 real(real64) :: t
+
132 class(errors), pointer :: errmgr
+
133 type(errors), target :: deferr
+
134
+
135 ! Initialization
+
136 if (present(err)) then
+
137 errmgr => err
+
138 else
+
139 errmgr => deferr
+
140 end if
+
141 t = 2.0d0 * epsilon(t)
+
142 m = size(a, 1)
+
143 n = size(a, 2)
+
144 nnz = 0
+
145
+
146 ! Determine how many non-zero values exist
+
147 do j = 1, n
+
148 do i = 1, m
+
149 if (abs(a(i,j)) > t) then
+
150 nnz = nnz + 1
+
151 end if
+
152 end do
+
153 end do
+
154
+
155 ! Memory Allocation
+
156 rst = create_empty_csr_matrix(m, n, nnz, errmgr)
+
157 if (errmgr%has_error_occurred()) return
+
158
+
159 ! Store the non-zero values
+
160 k = 1
+
161 rst%row_indices(1) = 1
+
162 do i = 1, m
+
163 inner_loop : do j = 1, n
+
164 if (abs(a(i,j)) < t) cycle inner_loop
+
165 rst%column_indices(k) = j
+
166 rst%values(k) = a(i,j)
+
167 k = k + 1
+
168 end do inner_loop
+
169 rst%row_indices(i+1) = k
+
170 end do
+
171end function
+
172
+
173! ------------------------------------------------------------------------------
+
174module function banded_to_csr(m, ml, mu, a, err) result(rst)
+
175 ! Arguments
+
176 integer(int32), intent(in) :: m, ml, mu
+
177 real(real64), intent(in), dimension(:,:) :: a
+
178 class(errors), intent(inout), optional, target :: err
+
179 type(csr_matrix) :: rst
+
180
+
181 ! Local Variables
+
182 integer(int32) :: n, nnz, flag, lowd, lda
+
183 integer(int32), allocatable, dimension(:) :: ia, ja
+
184 real(real64), allocatable, dimension(:) :: v
+
185 class(errors), pointer :: errmgr
+
186 type(errors), target :: deferr
+
187
+
188 ! Initialization
+
189 if (present(err)) then
+
190 errmgr => err
+
191 else
+
192 errmgr => deferr
+
193 end if
+
194 lda = size(a, 1)
+
195 n = size(a, 2)
+
196 nnz = lda * n
+
197 lowd = ml + mu + 1
+
198
+
199 ! Input Checking
+
200 if (ml < 0 .or. mu < 0) then
+
201 call errmgr%report_error("banded_to_csr", "The bandwidth " // &
+
202 "dimensions cannot be negative.", la_invalid_input_error)
+
203 return
+
204 end if
+
205 if (lda /= ml + mu + 1) then
+
206 call errmgr%report_error("banded_to_csr", "The number of rows in " // &
+
207 "the banded matrix does not match the supplied bandwidth " // &
+
208 "dimensions.", la_matrix_format_error)
+
209 return
+
210 end if
+
211
+
212 ! Allocation
+
213 allocate(ia(m + 1), ja(nnz), v(nnz), stat = flag)
+
214 if (flag /= 0) go to 10
+
215
+
216 ! Process
+
217 call bndcsr(m, a, lda, lowd, ml, mu, v, ja, ia, nnz, flag)
+
218 nnz = ia(m + 1) - 1
+
219
+
220 ! Put into the sparse matrix structure
+
221 allocate(rst%row_indices(m + 1), source = ia, stat = flag)
+
222 if (flag == 0) allocate(rst%column_indices(nnz), source = ja(:nnz), &
+
223 stat = flag)
+
224 if (flag == 0) allocate(rst%values(nnz), source = v(:nnz), stat = flag)
+
225 if (flag /= 0) go to 10
+
226 rst%n = n
+
227
+
228 ! End
+
229 return
+
230
+
231 ! Memory Error
+
23210 continue
+
233 call errmgr%report_error("banded_to_csr", "Memory allocation error.", &
+
234 la_out_of_memory_error)
+
235 return
+
236end function
+
237
+
238! ------------------------------------------------------------------------------
+
239module subroutine csr_to_dense(a, x, err)
+
240 ! Arguments
+
241 class(csr_matrix), intent(in) :: a
+
242 real(real64), intent(out), dimension(:,:) :: x
+
243 class(errors), intent(inout), optional, target :: err
+
244
+
245 ! Local Variables
+
246 integer(int32) :: i, j, k, m, n, nnz, flag
+
247 class(errors), pointer :: errmgr
+
248 type(errors), target :: deferr
+
249
+
250 ! Initialization
+
251 if (present(err)) then
+
252 errmgr => err
+
253 else
+
254 errmgr => deferr
+
255 end if
+
256 m = size(a, 1)
+
257 n = size(a, 2)
+
258 nnz = nonzero_count(a)
+
259
+
260 ! Input Check
+
261 if (size(x, 1) /= m .or. size(x, 2) /= n) then
+
262 call errmgr%report_error("csr_to_dense", &
+
263 "The output matrix dimensions are not correct.", &
+
264 la_array_size_error)
+
265 return
+
266 end if
+
267
+
268 ! Process
+
269 do i = 1, m
+
270 x(i,:) = 0.0d0
+
271 do k = a%row_indices(i), a%row_indices(i+1) - 1
+
272 j = a%column_indices(k)
+
273 x(i,j) = a%values(k)
+
274 end do
+
275 end do
+
276end subroutine
+
277
+
278! ------------------------------------------------------------------------------
+
279module function diag_to_csr(a, err) result(rst)
+
280 ! Arguments
+
281 real(real64), intent(in), dimension(:) :: a
+
282 class(errors), intent(inout), optional, target :: err
+
283 type(csr_matrix) :: rst
+
284
+
285 ! Local Variables
+
286 integer(int32) :: i, n, n1, flag
+
287 class(errors), pointer :: errmgr
+
288 type(errors), target :: deferr
+
289
+
290 ! Initialization
+
291 if (present(err)) then
+
292 errmgr => err
+
293 else
+
294 errmgr => deferr
+
295 end if
+
296 n = size(a)
+
297 n1 = n + 1
+
298
+
299 ! Allocation
+
300 allocate(rst%row_indices(n1), rst%column_indices(n), stat = flag)
+
301 if (flag == 0) allocate(rst%values(n), source = a, stat = flag)
+
302 if (flag /= 0) then
+
303 call errmgr%report_error("diag_to_csr", "Memory allocation error.", &
+
304 la_out_of_memory_error)
+
305 return
+
306 end if
+
307 rst%n = n
+
308
+
309 ! Populate IA & JA
+
310 do i = 1, n
+
311 rst%column_indices(i) = i
+
312 rst%row_indices(i) = i
+
313 end do
+
314 rst%row_indices(n1) = n1
+
315end function
+
316
+
317! ------------------------------------------------------------------------------
+
318module subroutine csr_assign_to_dense(dense, sparse)
+
319 ! Arguments
+
320 real(real64), intent(out), dimension(:,:) :: dense
+
321 class(csr_matrix), intent(in) :: sparse
+
322
+
323 ! Process
+
324 call csr_to_dense(sparse, dense)
+
325end subroutine
+
326
+
327! ------------------------------------------------------------------------------
+
328module subroutine dense_assign_to_csr(sparse, dense)
+
329 ! Arguments
+
330 type(csr_matrix), intent(out) :: sparse
+
331 real(real64), intent(in), dimension(:,:) :: dense
+
332
+
333 ! Process
+
334 sparse = dense_to_csr(dense)
+
335end subroutine
+
336
+
337! ------------------------------------------------------------------------------
+
338module function csr_mtx_mtx_mult(a, b) result(rst)
+
339 ! Arguments
+
340 class(csr_matrix), intent(in) :: a, b
+
341 type(csr_matrix) :: rst
+
342
+
343 ! Local Variables
+
344 integer(int32), parameter :: sym_mult = 0
+
345 integer(int32), parameter :: full_mult = 1
+
346 integer(int32) :: flag, m, n, k, nnza, nnzb, nnzc, ierr
+
347 integer(int32), allocatable, dimension(:) :: ic, jc, iw
+
348 real(real64) :: dummy(1)
+
349 type(errors) :: errmgr
+
350
+
351 ! Initialization
+
352 m = size(a, 1)
+
353 n = size(b, 2)
+
354 k = size(a, 2)
+
355 nnza = nonzero_count(a)
+
356 nnzb = nonzero_count(b)
+
357 nnzc = nnza + nnzb
+
358
+
359 ! Input Check
+
360 if (size(b, 1) /= k) then
+
361 call errmgr%report_error("csr_mtx_mtx_mult", &
+
362 "Inner matrix dimension mismatch.", la_array_size_error)
+
363 return
+
364 end if
+
365
+
366 ! Local Memory Allocations
+
367 allocate(ic(m + 1), jc(nnzc), iw(n), stat = flag)
+
368 if (flag /= 0) go to 10
+
369
+
370 ! Determine the structure of C
+
371 call amub(m, n, sym_mult, a%values, a%column_indices, a%row_indices, &
+
372 b%values, b%column_indices, b%row_indices, dummy, jc, ic, &
+
373 nnzc, iw, ierr)
+
374 if (ierr /= 0) then
+
375 ! NNZC was too small - try increasing it
+
376 do while (ierr /= 0)
+
377 deallocate(jc)
+
378 nnzc = nnzc + nnza + nnzb
+
379 allocate(jc(nnzc), stat = flag)
+
380 if (flag /= 0) go to 10
+
381 call amub(m, n, sym_mult, a%values, a%column_indices, &
+
382 a%row_indices, b%values, b%column_indices, b%row_indices, &
+
383 dummy, jc, ic, nnzc, iw, ierr)
+
384 end do
+
385 end if
+
386
+
387 ! Determine the actual NNZ for C & allocate space for the output
+
388 nnzc = ic(m + 1) - 1
+
389 deallocate(ic)
+
390 deallocate(jc)
+
391 rst = create_empty_csr_matrix(m, n, nnzc, errmgr)
+
392 if (errmgr%has_error_occurred()) return
+
393
+
394 ! Compute the actual product
+
395 call amub(m, n, full_mult, a%values, a%column_indices, a%row_indices, &
+
396 b%values, b%column_indices, b%row_indices, rst%values, &
+
397 rst%column_indices, rst%row_indices, nnzc, iw, ierr)
+
398
+
399 ! End
+
400 return
+
401
+
402 ! Memory Error
+
40310 continue
+
404 call errmgr%report_error("csr_mtx_mtx_mult", &
+
405 "Memory allocation error.", la_out_of_memory_error)
+
406 return
+
407end function
+
408
+
409! ------------------------------------------------------------------------------
+
410module function csr_mtx_vec_mult(a, b) result(rst)
+
411 ! Arguments
+
412 class(csr_matrix), intent(in) :: a
+
413 real(real64), intent(in), dimension(:) :: b
+
414 real(real64), allocatable, dimension(:) :: rst
+
415
+
416 ! Local Variables
+
417 integer(int32) :: i, k, k1, k2, n, p, flag
+
418 real(real64) :: t
+
419 type(errors) :: errmgr
+
420
+
421 ! Initialization
+
422 n = size(a, 1)
+
423 p = size(a, 2)
+
424
+
425 ! Input Check
+
426 if (size(b) /= p) then
+
427 call errmgr%report_error("csr_mtx_vec_mult", &
+
428 "Inner matrix dimension error.", la_array_size_error)
+
429 return
+
430 end if
+
431
+
432 ! Memory Allocation
+
433 allocate(rst(n), stat = flag)
+
434 if (flag /= 0) then
+
435 call errmgr%report_error("csr_mtx_vec_mult", &
+
436 "Memory allocation error.", la_out_of_memory_error)
+
437 return
+
438 end if
+
439
+
440 ! Process
+
441 do i = 1, n
+
442 t = 0.0d0
+
443 k1 = a%row_indices(i)
+
444 k2 = a%row_indices(i+1) - 1
+
445 do k = k1, k2
+
446 t = t + a%values(k) * b(a%column_indices(k))
+
447 end do
+
448 rst(i) = t
+
449 end do
+
450end function
+
451
+
452! ------------------------------------------------------------------------------
+
453module function csr_mtx_add(a, b) result(rst)
+
454 ! Arguments
+
455 class(csr_matrix), intent(in) :: a, b
+
456 type(csr_matrix) :: rst
+
457
+
458 ! Local Variables
+
459 integer(int32), parameter :: sym_add = 0
+
460 integer(int32), parameter :: full_add = 1
+
461 integer(int32) :: m, n, nnza, nnzb, nnzc, ierr, flag
+
462 integer(int32), allocatable, dimension(:) :: ic, jc, iw
+
463 real(real64) :: dummy(1)
+
464 type(errors) :: errmgr
+
465
+
466 ! Initialization
+
467 m = size(a, 1)
+
468 n = size(a, 2)
+
469 nnza = nonzero_count(a)
+
470 nnzb = nonzero_count(b)
+
471 nnzc = nnza + nnzb
+
472
+
473 ! Input Checking
+
474 if (size(b, 1) /= m .or. size(b, 2) /= n) then
+
475 call errmgr%report_error("csr_mtx_add", &
+
476 "The matrix sizes must match.", la_array_size_error)
+
477 return
+
478 end if
+
479
+
480 ! Local Memory Allocations
+
481 allocate(ic(m + 1), jc(nnzc), iw(n), stat = flag)
+
482 if (flag /= 0) go to 10
+
483
+
484 ! Determine the structure of C
+
485 call aplb(m, n, sym_add, a%values, a%column_indices, a%row_indices, &
+
486 b%values, b%column_indices, b%row_indices, dummy, jc, ic, &
+
487 nnzc, iw, ierr)
+
488 if (ierr /= 0) then
+
489 ! NNZC was too small - try increasing it
+
490 do while (ierr /= 0)
+
491 deallocate(jc)
+
492 nnzc = nnzc + nnza + nnzb
+
493 allocate(jc(nnzc), stat = flag)
+
494 if (flag /= 0) go to 10
+
495 call aplb(m, n, sym_add, a%values, a%column_indices, &
+
496 a%row_indices, b%values, b%column_indices, b%row_indices, &
+
497 dummy, jc, ic, nnzc, iw, ierr)
+
498 end do
+
499 end if
+
500
+
501 ! Determine the actuall NNZ for C & allocate space for the output
+
502 nnzc = ic(m + 1) - 1
+
503 deallocate(ic)
+
504 deallocate(jc)
+
505 rst = create_empty_csr_matrix(m, n, nnzc, errmgr)
+
506 if (errmgr%has_error_occurred()) return
+
507
+
508 ! Compute the actual sum
+
509 call aplb(m, n, full_add, a%values, a%column_indices, a%row_indices, &
+
510 b%values, b%column_indices, b%row_indices, rst%values, &
+
511 rst%column_indices, rst%row_indices, nnzc, iw, ierr)
+
512
+
513 ! End
+
514 return
+
515
+
516 ! Memory Error
+
51710 continue
+
518 call errmgr%report_error("csr_mtx_add", "Memory allocation error.", &
+
519 la_out_of_memory_error)
+
520 return
+
521end function
+
522
+
523! ------------------------------------------------------------------------------
+
524module function csr_mtx_sub(a, b) result(rst)
+
525 ! Arguments
+
526 class(csr_matrix), intent(in) :: a, b
+
527 type(csr_matrix) :: rst
+
528
+
529 ! Local Variables
+
530 integer(int32), parameter :: sym_add = 0
+
531 integer(int32) :: m, n, nnza, nnzb, nnzc, ierr, flag
+
532 integer(int32), allocatable, dimension(:) :: ic, jc, iw
+
533 real(real64) :: dummy(1)
+
534 type(errors) :: errmgr
+
535
+
536 ! Initialization
+
537 m = size(a, 1)
+
538 n = size(a, 2)
+
539 nnza = nonzero_count(a)
+
540 nnzb = nonzero_count(b)
+
541 nnzc = nnza + nnzb
+
542
+
543 ! Input Checking
+
544 if (size(b, 1) /= m .or. size(b, 2) /= n) then
+
545 call errmgr%report_error("csr_mtx_sub", &
+
546 "The matrix sizes must match.", la_array_size_error)
+
547 return
+
548 end if
+
549
+
550 ! Local Memory Allocations
+
551 allocate(ic(m + 1), jc(nnzc), iw(n), stat = flag)
+
552 if (flag /= 0) go to 10
+
553
+
554 ! Determine the structure of C
+
555 call aplb(m, n, sym_add, a%values, a%column_indices, a%row_indices, &
+
556 b%values, b%column_indices, b%row_indices, dummy, jc, ic, &
+
557 nnzc, iw, ierr)
+
558 if (ierr /= 0) then
+
559 ! NNZC was too small - try increasing it
+
560 do while (ierr /= 0)
+
561 deallocate(jc)
+
562 nnzc = nnzc + nnza + nnzb
+
563 allocate(jc(nnzc), stat = flag)
+
564 if (flag /= 0) go to 10
+
565 call aplb(m, n, sym_add, a%values, a%column_indices, &
+
566 a%row_indices, b%values, b%column_indices, b%row_indices, &
+
567 dummy, jc, ic, nnzc, iw, ierr)
+
568 end do
+
569 end if
+
570
+
571 ! Determine the actuall NNZ for C & allocate space for the output
+
572 nnzc = ic(m + 1) - 1
+
573 deallocate(ic)
+
574 deallocate(jc)
+
575 rst = create_empty_csr_matrix(m, n, nnzc, errmgr)
+
576 if (errmgr%has_error_occurred()) return
+
577
+
578 ! Compute the actual sum
+
579 call aplsb(m, n, a%values, a%column_indices, a%row_indices, -1.0d0, &
+
580 b%values, b%column_indices, b%row_indices, rst%values, &
+
581 rst%column_indices, rst%row_indices, nnzc, iw, ierr)
+
582
+
583 ! End
+
584 return
+
585
+
586 ! Memory Error
+
58710 continue
+
588 call errmgr%report_error("csr_mtx_sub", "Memory allocation error.", &
+
589 la_out_of_memory_error)
+
590 return
+
591end function
+
592
+
593! ------------------------------------------------------------------------------
+
594module function csr_mtx_mult_scalar_1(a, b) result(rst)
+
595 ! Arguments
+
596 class(csr_matrix), intent(in) :: a
+
597 real(real64), intent(in) :: b
+
598 type(csr_matrix) :: rst
+
599
+
600 ! Local Variables
+
601 integer(int32) :: m, n, nnz
+
602 type(errors) :: errmgr
+
603
+
604 ! Initialization
+
605 m = size(a, 1)
+
606 n = size(a, 2)
+
607 nnz = nonzero_count(a)
+
608
+
609 ! Process
+
610 rst = create_empty_csr_matrix(m, n, nnz, errmgr)
+
611 if (errmgr%has_error_occurred()) return
+
612
+
613 ! Compute the product
+
614 rst%row_indices = a%row_indices
+
615 rst%column_indices = a%column_indices
+
616 rst%values = b * a%values
+
617end function
+
618
+
619! ------------------------------------------------------------------------------
+
620module function csr_mtx_mult_scalar_2(a, b) result(rst)
+
621 ! Arguments
+
622 real(real64), intent(in) :: a
+
623 class(csr_matrix), intent(in) :: b
+
624 type(csr_matrix) :: rst
+
625
+
626 ! Local Variables
+
627 integer(int32) :: m, n, nnz
+
628 type(errors) :: errmgr
+
629
+
630 ! Initialization
+
631 m = size(b, 1)
+
632 n = size(b, 2)
+
633 nnz = nonzero_count(b)
+
634
+
635 ! Process
+
636 rst = create_empty_csr_matrix(m, n, nnz, errmgr)
+
637 if (errmgr%has_error_occurred()) return
+
638
+
639 ! Compute the product
+
640 rst%row_indices = b%row_indices
+
641 rst%column_indices = b%column_indices
+
642 rst%values = a * b%values
+
643end function
+
644
+
645! ------------------------------------------------------------------------------
+
646module function csr_mtx_divide_scalar_1(a, b) result(rst)
+
647 ! Arguments
+
648 class(csr_matrix), intent(in) :: a
+
649 real(real64), intent(in) :: b
+
650 type(csr_matrix) :: rst
+
651
+
652 ! Local Variables
+
653 integer(int32) :: m, n, nnz
+
654 type(errors) :: errmgr
+
655
+
656 ! Initialization
+
657 m = size(a, 1)
+
658 n = size(a, 2)
+
659 nnz = nonzero_count(a)
+
660
+
661 ! Process
+
662 rst = create_empty_csr_matrix(m, n, nnz, errmgr)
+
663 if (errmgr%has_error_occurred()) return
+
664
+
665 ! Compute the product
+
666 rst%row_indices = a%row_indices
+
667 rst%column_indices = a%column_indices
+
668 rst%values = a%values / b
+
669end function
+
670
+
671! ------------------------------------------------------------------------------
+
672module function csr_transpose(a) result(rst)
+
673 ! Arguments
+
674 class(csr_matrix), intent(in) :: a
+
675 type(csr_matrix) :: rst
+
676
+
677 ! Local Variables
+
678 integer(int32) :: m, n, nnz
+
679 type(errors) :: errmgr
+
680
+
681 ! Initialization
+
682 m = size(a, 1)
+
683 n = size(a, 2)
+
684 nnz = nonzero_count(a)
+
685 rst = create_empty_csr_matrix(n, m, nnz, errmgr)
+
686 if (errmgr%has_error_occurred()) return
+
687
+
688 ! Process
+
689 call csrcsc2(m, n, 1, 1, a%values, a%column_indices, a%row_indices, &
+
690 rst%values, rst%column_indices, rst%row_indices)
+
691end function
+
692
+
693! ------------------------------------------------------------------------------
+
694module subroutine extract_diagonal_csr(a, diag, err)
+
695 ! Arguments
+
696 class(csr_matrix), intent(in) :: a
+
697 real(real64), intent(out), dimension(:) :: diag
+
698 class(errors), intent(inout), optional, target :: err
+
699
+
700 ! Local Variables
+
701 integer(int32) :: m, n, mn, len, flag
+
702 integer(int32), allocatable, dimension(:) :: idiag
+
703 class(errors), pointer :: errmgr
+
704 type(errors), target :: deferr
+
705
+
706 ! Initialization
+
707 if (present(err)) then
+
708 errmgr => err
+
709 else
+
710 errmgr => deferr
+
711 end if
+
712 m = size(a, 1)
+
713 n = size(a, 2)
+
714 mn = min(m, n)
+
715
+
716 ! Input Check
+
717 if (size(diag) /= mn) then
+
718 call errmgr%report_error("extract_diagonal_csr", &
+
719 "The is expected to have MIN(M, N) elements.", &
+
720 la_array_size_error)
+
721 return
+
722 end if
+
723
+
724 ! Memory Allocation
+
725 allocate(idiag(mn), stat = flag)
+
726 if (flag /= 0) then
+
727 call errmgr%report_error("extract_diagonal_csr", &
+
728 "Memory allocation error.", la_out_of_memory_error)
+
729 return
+
730 end if
+
731
+
732 ! Process
+
733 call getdia(m, n, 0, a%values, a%column_indices, a%row_indices, len, &
+
734 diag, idiag, 0)
+
735end subroutine
+
736
+
737! ------------------------------------------------------------------------------
+
738module subroutine csr_solve_sparse_direct(a, b, x, droptol, err)
+
739 ! Arguments
+
740 class(csr_matrix), intent(in) :: a
+
741 real(real64), intent(in), dimension(:) :: b
+
742 real(real64), intent(out), dimension(:) :: x
+
743 real(real64), intent(in), optional :: droptol
+
744 class(errors), intent(inout), optional, target :: err
+
745
+
746 ! Local Variables
+
747 integer(int32) :: i, m, n, nnz, lfil, iwk, ierr, flag
+
748 integer(int32), allocatable, dimension(:) :: jlu, ju, jw
+
749 real(real64), allocatable, dimension(:) :: alu, w
+
750 real(real64) :: dt
+
751 class(errors), pointer :: errmgr
+
752 type(errors), target :: deferr
+
753
+
754 ! Initialization
+
755 if (present(err)) then
+
756 errmgr => err
+
757 else
+
758 errmgr => deferr
+
759 end if
+
760 if (present(droptol)) then
+
761 dt = droptol
+
762 else
+
763 dt = sqrt(epsilon(dt))
+
764 end if
+
765 m = size(a, 1)
+
766 n = size(a, 2)
+
767 nnz = nonzero_count(a)
+
768
+
769 ! Input Checking
+
770 if (m /= n) then
+
771 call errmgr%report_error("csr_solve_sparse_direct", &
+
772 "The matrix must be square.", la_array_size_error)
+
773 return
+
774 end if
+
775 if (size(x) /= n) then
+
776 call errmgr%report_error("csr_solve_sparse_direct", &
+
777 "Inner matrix dimension mismatch.", la_array_size_error)
+
778 return
+
779 end if
+
780 if (size(b) /= n) then
+
781 call errmgr%report_error("csr_solve_sparse_direct", &
+
782 "The output array dimension does not match the rest of the problem.", &
+
783 la_array_size_error)
+
784 return
+
785 end if
+
786
+
787 ! Parameter Determination
+
788 lfil = 1
+
789 do i = 1, m
+
790 lfil = max(lfil, a%row_indices(i+1) - a%row_indices(i))
+
791 end do
+
792 iwk = max(lfil * m, nnz) ! somewhat arbitrary - can be adjusted
+
793
+
794 ! Local Memory Allocation
+
795 allocate(alu(iwk), w(n+1), jlu(iwk), ju(n), jw(2 * n), stat = flag)
+
796 if (flag /= 0) go to 10
+
797
+
798 ! Factorization
+
799 do
+
800 ! Factor the matrix
+
801 call ilut(n, a%values, a%column_indices, a%row_indices, lfil, dt, &
+
802 alu, jlu, ju, iwk, w, jw, ierr)
+
803
+
804 ! Check the error flag
+
805 if (ierr == 0) then
+
806 ! Success
+
807 exit
+
808 else if (ierr > 0) then
+
809 ! Zero pivot
+
810 else if (ierr == -1) then
+
811 ! The input matrix is not formatted correctly
+
812 go to 20
+
813 else if (ierr == -2 .or. ierr == -3) then
+
814 ! ALU and JLU are too small - try something larger
+
815 iwk = min(iwk + m + n, m * n)
+
816 deallocate(alu)
+
817 deallocate(jlu)
+
818 allocate(alu(iwk), jlu(iwk), stat = flag)
+
819 if (flag /= 0) go to 10
+
820 else if (ierr == -4) then
+
821 ! Illegal value for LFIL - reset and try again
+
822 lfil = n
+
823 else if (ierr == -5) then
+
824 ! Zero row encountered
+
825 go to 30
+
826 else
+
827 ! We should never get here, but just in case
+
828 go to 40
+
829 end if
+
830 end do
+
831
+
832 ! Solution
+
833 call lusol(n, b, x, alu, jlu, ju)
+
834
+
835 ! End
+
836 return
+
837
+
838 ! Memory Error
+
83910 continue
+
840 call errmgr%report_error("csr_solve_sparse_direct", &
+
841 "Memory allocation error.", la_out_of_memory_error)
+
842 return
+
843
+
844 ! Matrix Format Error
+
84520 continue
+
846 call errmgr%report_error("csr_solve_sparse_direct", &
+
847 "The input matrix was incorrectly formatted. A row with more " // &
+
848 "than N entries was found.", la_matrix_format_error)
+
849 return
+
850
+
851 ! Zero Row Error
+
85230 continue
+
853 call errmgr%report_error("csr_solve_sparse_direct", &
+
854 "A row with all zeros was encountered in the matrix.", &
+
855 la_singular_matrix_error)
+
856 return
+
857
+
858 ! Unknown Error
+
85940 continue
+
860 call errmgr%report_error("csr_solve_sparse_direct", "ILUT encountered " // &
+
861 "an unknown error. The error code from the ILUT routine is " // &
+
862 "provided in the output.", ierr)
+
863 return
+
864
+
865 ! Zero Pivot Error
+
86650 continue
+
867 call errmgr%report_error("csr_solve_sparse_direct", &
+
868 "A zero pivot was encountered.", la_singular_matrix_error)
+
869 return
+
870end subroutine
+
871
+
872! ******************************************************************************
+
873! MSR ROUTINES
+
874! ------------------------------------------------------------------------------
+
875! TO DO: MSR_GET_ELEMENT
+
876
+
877! ------------------------------------------------------------------------------
+
878pure module function msr_size(x, dim) result(rst)
+
879 ! Arguments
+
880 class(msr_matrix), intent(in) :: x
+
881 integer(int32), intent(in) :: dim
+
882 integer(int32) :: rst
+
883
+
884 ! Process
+
885 select case (dim)
+
886 case (1)
+
887 rst = x%m
+
888 case (2)
+
889 rst = x%n
+
890 case default
+
891 rst = 0
+
892 end select
+
893end function
+
894
+
895! ------------------------------------------------------------------------------
+
896pure module function nonzero_count_msr(x) result(rst)
+
897 ! Arguments
+
898 class(msr_matrix), intent(in) :: x
+
899 integer(int32) :: rst
+
900
+
901 ! Process
+
902 rst = x%nnz
+
903end function
+
904
+
905! ------------------------------------------------------------------------------
+
906module function create_empty_msr_matrix(m, n, nnz, err) result(rst)
+
907 ! Arguments
+
908 integer(int32), intent(in) :: m, n, nnz
+
909 class(errors), intent(inout), optional, target :: err
+
910 type(msr_matrix) :: rst
+
911
+
912 ! Local Variables
+
913 integer(int32) :: nelem, mn, flag
+
914 class(errors), pointer :: errmgr
+
915 type(errors), target :: deferr
+
916
+
917 ! Initialization
+
918 if (present(err)) then
+
919 errmgr => err
+
920 else
+
921 errmgr => deferr
+
922 end if
+
923
+
924 ! Input Checking
+
925 if (m < 0) then
+
926 call errmgr%report_error("create_empty_msr_matrix", &
+
927 "The number of rows must be a positive value.", &
+
928 la_invalid_input_error)
+
929 return
+
930 end if
+
931 if (n < 0) then
+
932 call errmgr%report_error("create_empty_msr_matrix", &
+
933 "The number of columns must be a positive value.", &
+
934 la_invalid_input_error)
+
935 return
+
936 end if
+
937 if (nnz < 0) then
+
938 call errmgr%report_error("create_empty_msr_matrix", &
+
939 "The number of non-zero values must be a positive value.", &
+
940 la_invalid_input_error)
+
941 return
+
942 end if
+
943
+
944 ! Allocation
+
945 rst%m = m
+
946 rst%n = n
+
947 rst%nnz = nnz
+
948 mn = min(m, n)
+
949 nelem = m + 1 + nnz - mn
+
950 allocate(rst%indices(nelem), source = 0, stat = flag)
+
951 if (flag == 0) allocate(rst%values(nelem), source = 0.0d0, stat = flag)
+
952 if (flag /= 0) then
+
953 call errmgr%report_error("create_empty_msr_matrix", &
+
954 "Memory allocation error.", la_out_of_memory_error)
+
955 return
+
956 end if
+
957end function
+
958
+
959! ------------------------------------------------------------------------------
+
960module function csr_to_msr(a, err) result(rst)
+
961 ! Arguments
+
962 class(csr_matrix), intent(in) :: a
+
963 class(errors), intent(inout), optional, target :: err
+
964 type(msr_matrix) :: rst
+
965
+
966 ! Local Variables
+
967 integer(int32) :: m, n, nnz, flag
+
968 integer(int32), allocatable, dimension(:) :: iwork, jc, ic
+
969 real(real64), allocatable, dimension(:) :: work, ac
+
970 class(errors), pointer :: errmgr
+
971 type(errors), target :: deferr
+
972
+
973 ! Initialization
+
974 if (present(err)) then
+
975 errmgr => err
+
976 else
+
977 errmgr => deferr
+
978 end if
+
979 m = size(a, 1)
+
980 n = size(a, 2)
+
981 nnz = nonzero_count(a)
+
982
+
983 ! Memory Allocation
+
984 rst = create_empty_msr_matrix(m, n, nnz, errmgr)
+
985 if (errmgr%has_error_occurred()) return
+
986 allocate(work(m), iwork(m + 1), stat = flag)
+
987 if (flag == 0) allocate(ac(nnz), source = a%values, stat = flag)
+
988 if (flag == 0) allocate(jc(nnz), source = a%column_indices, stat = flag)
+
989 if (flag == 0) allocate(ic(m+1), source = a%row_indices, stat = flag)
+
990 if (flag /= 0) then
+
991 call errmgr%report_error("csr_to_msr", "Memory allocation error.", &
+
992 la_out_of_memory_error)
+
993 return
+
994 end if
+
995
+
996 ! Perform the conversion
+
997 call csrmsr(m, ac, jc, ic, rst%values, rst%indices, work, iwork)
+
998end function
+
999
+
1000! ------------------------------------------------------------------------------
+
1001module function msr_to_csr(a, err) result(rst)
+
1002 ! Arguments
+
1003 class(msr_matrix), intent(in) :: a
+
1004 class(errors), intent(inout), optional, target :: err
+
1005 type(csr_matrix) :: rst
+
1006
+
1007 ! Local Variables
+
1008 integer(int32) :: m, n, nnz, flag
+
1009 integer(int32), allocatable, dimension(:) :: iwork
+
1010 real(real64), allocatable, dimension(:) :: work
+
1011 class(errors), pointer :: errmgr
+
1012 type(errors), target :: deferr
+
1013
+
1014 ! Initialization
+
1015 if (present(err)) then
+
1016 errmgr => err
+
1017 else
+
1018 errmgr => deferr
+
1019 end if
+
1020 m = size(a, 1)
+
1021 n = size(a, 2)
+
1022 nnz = nonzero_count(a)
+
1023
+
1024 ! Memory Allocation
+
1025 rst = create_empty_csr_matrix(m, n, nnz, errmgr)
+
1026 if (errmgr%has_error_occurred()) return
+
1027 allocate(work(m), iwork(m+1), stat = flag)
+
1028 if (flag /= 0) then
+
1029 call errmgr%report_error("msr_to_csr", "Memory allocation error.", &
+
1030 la_out_of_memory_error)
+
1031 return
+
1032 end if
+
1033
+
1034 ! Process
+
1035 call msrcsr(m, a%values, a%indices, rst%values, rst%column_indices, &
+
1036 rst%row_indices, work, iwork)
+
1037end function
+
1038
+
1039! ------------------------------------------------------------------------------
+
1040module function dense_to_msr(a, err) result(rst)
+
1041 ! Arguments
+
1042 real(real64), intent(in), dimension(:,:) :: a
+
1043 class(errors), intent(inout), optional, target :: err
+
1044 type(msr_matrix) :: rst
+
1045
+
1046 ! Local Variables
+
1047 type(csr_matrix) :: csr
+
1048 class(errors), pointer :: errmgr
+
1049 type(errors), target :: deferr
+
1050
+
1051 ! Initialization
+
1052 if (present(err)) then
+
1053 errmgr => err
+
1054 else
+
1055 errmgr => deferr
+
1056 end if
+
1057
+
1058 ! Convert to CSR, and then from CSR to MSR
+
1059 csr = dense_to_csr(a, errmgr)
+
1060
+
1061 ! Convert to MSR
+
1062 rst = csr_to_msr(csr, errmgr)
+
1063end function
+
1064
+
1065! ------------------------------------------------------------------------------
+
1066module subroutine msr_to_dense(a, x, err)
+
1067 ! Arguments
+
1068 class(msr_matrix), intent(in) :: a
+
1069 real(real64), intent(out), dimension(:,:) :: x
+
1070 class(errors), intent(inout), optional, target :: err
+
1071
+
1072 ! Local Variables
+
1073 integer(int32) :: m, n, flag
+
1074 type(csr_matrix) :: csr
+
1075 class(errors), pointer :: errmgr
+
1076 type(errors), target :: deferr
+
1077
+
1078 ! Initialization
+
1079 if (present(err)) then
+
1080 errmgr => err
+
1081 else
+
1082 errmgr => deferr
+
1083 end if
+
1084 m = size(a, 1)
+
1085 n = size(a, 2)
+
1086
+
1087 ! Input Check
+
1088 if (size(x, 1) /= m .or. size(x, 2) /= n) then
+
1089 call errmgr%report_error("msr_to_dense", &
+
1090 "The output matrix dimensions are not correct.", &
+
1091 la_array_size_error)
+
1092 return
+
1093 end if
+
1094
+
1095 ! Process
+
1096 csr = msr_to_csr(a, errmgr)
+
1097 if (errmgr%has_error_occurred()) return
+
1098 call csr_to_dense(csr, x, errmgr)
+
1099end subroutine
+
1100
+
1101! ------------------------------------------------------------------------------
+
1102module subroutine msr_assign_to_dense(dense, msr)
+
1103 ! Arguments
+
1104 real(real64), intent(out), dimension(:,:) :: dense
+
1105 class(msr_matrix), intent(in) :: msr
+
1106
+
1107 ! Process
+
1108 call msr_to_dense(msr, dense)
+
1109end subroutine
+
1110
+
1111! ------------------------------------------------------------------------------
+
1112module subroutine dense_assign_to_msr(msr, dense)
+
1113 ! Arguments
+
1114 type(msr_matrix), intent(out) :: msr
+
1115 real(real64), intent(in), dimension(:,:) :: dense
+
1116
+
1117 ! Process
+
1118 msr = dense_to_msr(dense)
+
1119end subroutine
+
1120
+
1121! ------------------------------------------------------------------------------
+
1122module subroutine csr_assign_to_msr(msr, csr)
+
1123 ! Arguments
+
1124 type(msr_matrix), intent(out) :: msr
+
1125 class(csr_matrix), intent(in) :: csr
+
1126
+
1127 ! Process
+
1128 msr = csr_to_msr(csr)
+
1129end subroutine
+
1130
+
1131! ------------------------------------------------------------------------------
+
1132module subroutine msr_assign_to_csr(csr, msr)
+
1133 ! Arguments
+
1134 type(csr_matrix), intent(out) :: csr
+
1135 class(msr_matrix), intent(in) :: msr
+
1136
+
1137 ! Process
+
1138 csr = msr_to_csr(msr)
+
1139end subroutine
+
1140
+
1141! ******************************************************************************
+
1142! LU PRECONDITIONER ROUTINES
+
1143! ------------------------------------------------------------------------------
+
1144module subroutine csr_lu_factor(a, lu, ju, droptol, err)
+
1145 ! Arguments
+
1146 class(csr_matrix), intent(in) :: a
+
1147 type(msr_matrix), intent(out) :: lu
+
1148 integer(int32), intent(out), dimension(:) :: ju
+
1149 real(real64), intent(in), optional :: droptol
+
1150 class(errors), intent(inout), optional, target :: err
+
1151
+
1152 ! Local Variables
+
1153 integer(int32) :: i, m, n, nn, nnz, lfil, iwk, ierr, flag
+
1154 integer(int32), allocatable, dimension(:) :: jlu, jw
+
1155 real(real64), allocatable, dimension(:) :: alu, w
+
1156 real(real64) :: dt
+
1157 class(errors), pointer :: errmgr
+
1158 type(errors), target :: deferr
+
1159
+
1160 ! Initialization
+
1161 if (present(err)) then
+
1162 errmgr => err
+
1163 else
+
1164 errmgr => deferr
+
1165 end if
+
1166 if (present(droptol)) then
+
1167 dt = droptol
+
1168 else
+
1169 dt = sqrt(epsilon(dt))
+
1170 end if
+
1171 m = size(a, 1)
+
1172 n = size(a, 2)
+
1173 nnz = nonzero_count(a)
+
1174
+
1175 ! Input Check
+
1176 if (size(ju) /= m) then
+
1177 call errmgr%report_error("csr_lu_factor", &
+
1178 "U row tracking array is not sized correctly.", la_array_size_error)
+
1179 return
+
1180 end if
+
1181
+
1182 ! Parameter Determination
+
1183 lfil = 1
+
1184 do i = 1, m
+
1185 lfil = max(lfil, a%row_indices(i+1) - a%row_indices(i))
+
1186 end do
+
1187 iwk = max(lfil * m, nnz) ! somewhat arbitrary - can be adjusted
+
1188
+
1189 ! Local Memory Allocation
+
1190 allocate(alu(iwk), w(n+1), jlu(iwk), jw(2 * n), stat = flag)
+
1191 if (flag /= 0) go to 10
+
1192
+
1193 ! Factorization
+
1194 do
+
1195 ! Factor the matrix
+
1196 call ilut(n, a%values, a%column_indices, a%row_indices, lfil, dt, &
+
1197 alu, jlu, ju, iwk, w, jw, ierr)
+
1198
+
1199 ! Check the error flag
+
1200 if (ierr == 0) then
+
1201 ! Success
+
1202 exit
+
1203 else if (ierr > 0) then
+
1204 ! Zero pivot
+
1205 else if (ierr == -1) then
+
1206 ! The input matrix is not formatted correctly
+
1207 go to 20
+
1208 else if (ierr == -2 .or. ierr == -3) then
+
1209 ! ALU and JLU are too small - try something larger
+
1210 ! This is the main reason for the loop - to offload worrying about
+
1211 ! workspace size from the user
+
1212 iwk = min(iwk + m + n, m * n)
+
1213 deallocate(alu)
+
1214 deallocate(jlu)
+
1215 allocate(alu(iwk), jlu(iwk), stat = flag)
+
1216 if (flag /= 0) go to 10
+
1217 else if (ierr == -4) then
+
1218 ! Illegal value for LFIL - reset and try again
+
1219 lfil = n
+
1220 else if (ierr == -5) then
+
1221 ! Zero row encountered
+
1222 go to 30
+
1223 else
+
1224 ! We should never get here, but just in case
+
1225 go to 40
+
1226 end if
+
1227 end do
+
1228
+
1229 ! Determine the actual number of non-zero elements
+
1230 nnz = jlu(m+1) - 1
+
1231
+
1232 ! Copy the contents to the output arrays
+
1233 lu%m = m
+
1234 lu%n = n
+
1235 lu%nnz = nnz
+
1236 nn = m + 1 + nnz - min(m, n)
+
1237 allocate(lu%values(nn), source = alu(:nn), stat = flag)
+
1238 if (flag /= 0) go to 10
+
1239 allocate(lu%indices(nn), source = jlu(:nn), stat = flag)
+
1240
+
1241 ! End
+
1242 return
+
1243
+
1244 ! Memory Error
+
124510 continue
+
1246 call errmgr%report_error("csr_lu_factor", &
+
1247 "Memory allocation error.", la_out_of_memory_error)
+
1248 return
+
1249
+
1250 ! Matrix Format Error
+
125120 continue
+
1252 call errmgr%report_error("csr_lu_factor", &
+
1253 "The input matrix was incorrectly formatted. A row with more " // &
+
1254 "than N entries was found.", la_matrix_format_error)
+
1255 return
+
1256
+
1257 ! Zero Row Error
+
125830 continue
+
1259 call errmgr%report_error("csr_lu_factor", &
+
1260 "A row with all zeros was encountered in the matrix.", &
+
1261 la_singular_matrix_error)
+
1262 return
+
1263
+
1264 ! Unknown Error
+
126540 continue
+
1266 call errmgr%report_error("csr_solve_sparse_direct", "ILUT encountered " // &
+
1267 "an unknown error. The error code from the ILUT routine is " // &
+
1268 "provided in the output.", ierr)
+
1269 return
+
1270
+
1271 ! Zero Pivot Error
+
127250 continue
+
1273 call errmgr%report_error("csr_lu_factor", &
+
1274 "A zero pivot was encountered.", la_singular_matrix_error)
+
1275 return
+
1276end subroutine
+
1277
+
1278! ------------------------------------------------------------------------------
+
1279module subroutine csr_lu_solve(lu, ju, b, x, err)
+
1280 ! Arguments
+
1281 class(msr_matrix), intent(in) :: lu
+
1282 integer(int32), intent(in), dimension(:) :: ju
+
1283 real(real64), intent(in), dimension(:) :: b
+
1284 real(real64), intent(out), dimension(:) :: x
+
1285 class(errors), intent(inout), optional, target :: err
+
1286
+
1287 ! Local Variables
+
1288 integer(int32) :: m, n
+
1289 class(errors), pointer :: errmgr
+
1290 type(errors), target :: deferr
+
1291
+
1292 ! Initialization
+
1293 if (present(err)) then
+
1294 errmgr => err
+
1295 else
+
1296 errmgr => deferr
+
1297 end if
+
1298 m = size(lu, 1)
+
1299 n = size(lu, 2)
+
1300
+
1301 ! Input Check
+
1302 if (m /= n) then
+
1303 call errmgr%report_error("csr_lu_solve", &
+
1304 "The input matrix is expected to be square.", la_array_size_error)
+
1305 return
+
1306 end if
+
1307 if (size(x) /= m) then
+
1308 call errmgr%report_error("csr_lu_solve", &
+
1309 "Inner matrix dimension mismatch.", la_array_size_error)
+
1310 return
+
1311 end if
+
1312 if (size(b) /= m) then
+
1313 call errmgr%report_error("csr_lu_solve", &
+
1314 "The output array dimension does not match the rest of the problem.", &
+
1315 la_array_size_error)
+
1316 return
+
1317 end if
+
1318 if (size(ju) /= m) then
+
1319 call errmgr%report_error("csr_lu_solve", &
+
1320 "The U row tracking array is not sized correctly.", &
+
1321 la_array_size_error)
+
1322 return
+
1323 end if
+
1324
+
1325 ! Process
+
1326 call lusol(m, b, x, lu%values, lu%indices, ju)
+
1327end subroutine
+
1328
+
1329! ******************************************************************************
+
1330! ITERATIVE SOLVERS
+
1331! ------------------------------------------------------------------------------
+
1332! Additional References:
+
1333! - https://www.diva-portal.org/smash/get/diva2:360739/FULLTEXT01.pdf
+
1334module subroutine csr_pgmres_solver(a, lu, ju, b, x, im, tol, maxits, iout, err)
+
1335 ! Arguments
+
1336 class(csr_matrix), intent(in) :: a
+
1337 class(msr_matrix), intent(in) :: lu
+
1338 integer(int32), intent(in), dimension(:) :: ju
+
1339 real(real64), intent(inout), dimension(:) :: b
+
1340 real(real64), intent(out), dimension(:) :: x
+
1341 integer(int32), intent(in), optional :: im, maxits, iout
+
1342 real(real64), intent(in), optional :: tol
+
1343 class(errors), intent(inout), optional, target :: err
+
1344
+
1345 ! Local Variables
+
1346 integer(int32) :: n, ierr, flag, io, mit, krylov
+
1347 real(real64) :: eps
+
1348 real(real64), allocatable, dimension(:,:) :: vv
+
1349 class(errors), pointer :: errmgr
+
1350 type(errors), target :: deferr
+
1351
+
1352 ! Initialization
+
1353 n = size(a, 1)
+
1354 if (present(err)) then
+
1355 errmgr => err
+
1356 else
+
1357 errmgr => deferr
+
1358 end if
+
1359 if (present(im)) then
+
1360 krylov = im
+
1361 else
+
1362 krylov = min(n, 50)
+
1363 end if
+
1364 if (present(tol)) then
+
1365 eps = tol
+
1366 else
+
1367 eps = sqrt(epsilon(eps))
+
1368 end if
+
1369 if (present(maxits)) then
+
1370 mit = maxits
+
1371 else
+
1372 mit = 100
+
1373 end if
+
1374 if (present(iout)) then
+
1375 io = iout
+
1376 else
+
1377 io = 0
+
1378 end if
+
1379
+
1380 ! Input Checking
+
1381 if (size(a, 2) /= n) then
+
1382 call errmgr%report_error("csr_pgmres_solver", &
+
1383 "The input matrix is not square.", la_array_size_error)
+
1384 return
+
1385 end if
+
1386 if (size(lu, 1) /= n .or. size(lu, 2) /= n) then
+
1387 call errmgr%report_error("csr_pgmres_solver", &
+
1388 "The LU factored matrix size is not compatible with the " // &
+
1389 "input matrix.", la_array_size_error)
+
1390 return
+
1391 end if
+
1392 if (size(b) /= n) then
+
1393 call errmgr%report_error("csr_pgmres_solver", &
+
1394 "The output array dimension does not match the rest of the problem.", &
+
1395 la_array_size_error)
+
1396 return
+
1397 end if
+
1398 if (size(x) /= n) then
+
1399 call errmgr%report_error("csr_pgmres_solver", &
+
1400 "Inner matrix dimension mismatch.", la_array_size_error)
+
1401 return
+
1402 end if
+
1403 if (eps < epsilon(eps)) then
+
1404 call errmgr%report_error("csr_pgmres_solver", &
+
1405 "The convergence tolerance is too small.", la_invalid_input_error)
+
1406 return
+
1407 end if
+
1408 if (mit < 1) then
+
1409 call errmgr%report_error("csr_pgmres_solver", &
+
1410 "Too few iterations allowed.", la_invalid_input_error)
+
1411 return
+
1412 end if
+
1413 if (krylov < 1) then
+
1414 call errmgr%report_error("csr_pgmres_solver", &
+
1415 "The requested Krylov subspace size is too small.", &
+
1416 la_invalid_input_error)
+
1417 return
+
1418 end if
+
1419
+
1420 ! Memory Allocation
+
1421 allocate(vv(n,krylov+1), stat = flag)
+
1422 if (flag /= 0) then
+
1423 call errmgr%report_error("csr_pgmres_solver", &
+
1424 "Memory allocation error.", la_out_of_memory_error)
+
1425 return
+
1426 end if
+
1427
+
1428 ! Process
+
1429 call pgmres(n, krylov, b, x, vv, eps, mit, io, a%values, a%column_indices, &
+
1430 a%row_indices, lu%values, lu%indices, ju, ierr)
+
1431 if (ierr == 1) then
+
1432 call errmgr%report_error("csr_pgmres_solver", &
+
1433 "Convergence could not be achieved to the requested tolerance " // &
+
1434 "in the allowed number of iterations.", la_convergence_error)
+
1435 return
+
1436 end if
+
1437end subroutine
+
1438
+
1439! ------------------------------------------------------------------------------
+
1440end submodule
+
Computes the matrix product: C = A * B.
Definition sparskit.f90:31
+
Computes the matrix sum: C = A + B, where the matrices are given in CSR format.
Definition sparskit.f90:63
+
Computes the matrix sum: C = A + s * B, where the matrices are given in CSR format.
Definition sparskit.f90:96
+
Converts the LINPACK, BLAS, LAPACK banded matrix format into a CSR format.
Definition sparskit.f90:150
+
Converts a CSR matrix into a CSC matrix (transposition).
Definition sparskit.f90:124
+
Converts a CSR matrix to an MSR matrix.
Definition sparskit.f90:170
+
Extracts the diagonal from a matrix.
Definition sparskit.f90:234
+
Gets element A(i,j) of matrix A for any pair (i,j).
Definition sparskit.f90:214
+
Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mec...
Definition sparskit.f90:277
+
Solves the LU-factored system (LU) x = y.
Definition sparskit.f90:493
+
Converts and MSR matrix to a CSR matrix.
Definition sparskit.f90:191
+
An ILUT preconditioned GMRES algorithm. This routine utilizes the L and U matrices generated by the I...
Definition sparskit.f90:474
+
A module providing explicit interfaces to BLAS routines.
Definition blas.f90:2
+
Provides a set of common linear algebra routines.
Definition linalg.f90:145
+
An interface to the SPARSKIT library available at https://www-users.cse.umn.edu/~saad/software/SPARSK...
Definition sparskit.f90:3
+
+
+ + + + diff --git a/docs/html/menudata.js b/docs/html/menudata.js index bacf15b3..89a37524 100644 --- a/docs/html/menudata.js +++ b/docs/html/menudata.js @@ -31,7 +31,11 @@ var menudata={children:[ {text:"Variables",url:"namespacemembers_vars.html"}]}]}, {text:"Data Types",url:"annotated.html",children:[ {text:"Data Types List",url:"annotated.html"}, -{text:"Data Type Index",url:"classes.html"}]}, +{text:"Data Type Index",url:"classes.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Functions/Subroutines",url:"functions_func.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}, {text:"File Members",url:"globals.html",children:[ diff --git a/docs/html/namespaceblas.html b/docs/html/namespaceblas.html index e56b19a5..f356f6a6 100644 --- a/docs/html/namespaceblas.html +++ b/docs/html/namespaceblas.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
@@ -110,6 +110,8 @@ + + diff --git a/docs/html/namespaceblas.js b/docs/html/namespaceblas.js index 86cd3bf2..1ac1add9 100644 --- a/docs/html/namespaceblas.js +++ b/docs/html/namespaceblas.js @@ -1,5 +1,6 @@ var namespaceblas = [ + [ "ddot", "interfaceblas_1_1ddot.html", null ], [ "dgbmv", "interfaceblas_1_1dgbmv.html", null ], [ "dgemm", "interfaceblas_1_1dgemm.html", null ], [ "dgemv", "interfaceblas_1_1dgemv.html", null ], diff --git a/docs/html/namespacelinalg.html b/docs/html/namespacelinalg.html index 6196e5e8..afadc764 100644 --- a/docs/html/namespacelinalg.html +++ b/docs/html/namespacelinalg.html @@ -34,7 +34,7 @@ @@ -120,6 +120,9 @@ + + + @@ -129,6 +132,12 @@ + + + + + + @@ -138,6 +147,9 @@ + + + @@ -153,6 +165,12 @@ + + + + + + @@ -174,6 +192,24 @@ + + + + + + + + + + + + + + + + + + @@ -189,6 +225,9 @@ + + + @@ -216,6 +255,9 @@ + + + @@ -225,6 +267,9 @@ + + + @@ -282,7 +327,7 @@

Definition at line 220 of file linalg.f90.

+

Definition at line 284 of file linalg.f90.

@@ -300,7 +345,7 @@

Definition at line 228 of file linalg.f90.

+

Definition at line 292 of file linalg.f90.

@@ -318,7 +363,7 @@

Definition at line 210 of file linalg.f90.

+

Definition at line 274 of file linalg.f90.

@@ -336,7 +381,7 @@

Definition at line 218 of file linalg.f90.

+

Definition at line 282 of file linalg.f90.

@@ -354,7 +399,7 @@

Definition at line 230 of file linalg.f90.

+

Definition at line 294 of file linalg.f90.

@@ -372,7 +417,7 @@

Definition at line 224 of file linalg.f90.

+

Definition at line 288 of file linalg.f90.

@@ -390,7 +435,7 @@

Definition at line 216 of file linalg.f90.

+

Definition at line 280 of file linalg.f90.

@@ -408,7 +453,7 @@

Definition at line 206 of file linalg.f90.

+

Definition at line 270 of file linalg.f90.

@@ -426,7 +471,7 @@

Definition at line 226 of file linalg.f90.

+

Definition at line 290 of file linalg.f90.

@@ -444,7 +489,7 @@

Definition at line 222 of file linalg.f90.

+

Definition at line 286 of file linalg.f90.

@@ -462,7 +507,7 @@

Definition at line 208 of file linalg.f90.

+

Definition at line 272 of file linalg.f90.

diff --git a/docs/html/namespacelinalg.js b/docs/html/namespacelinalg.js index 546a7df4..1fd49e52 100644 --- a/docs/html/namespacelinalg.js +++ b/docs/html/namespacelinalg.js @@ -3,17 +3,23 @@ var namespacelinalg = [ "band_diag_mtx_mult", "interfacelinalg_1_1band__diag__mtx__mult.html", null ], [ "band_mtx_mult", "interfacelinalg_1_1band__mtx__mult.html", null ], [ "band_mtx_to_full_mtx", "interfacelinalg_1_1band__mtx__to__full__mtx.html", null ], + [ "banded_to_dense", "interfacelinalg_1_1banded__to__dense.html", null ], [ "cholesky_factor", "interfacelinalg_1_1cholesky__factor.html", null ], [ "cholesky_rank1_downdate", "interfacelinalg_1_1cholesky__rank1__downdate.html", null ], [ "cholesky_rank1_update", "interfacelinalg_1_1cholesky__rank1__update.html", null ], + [ "csr_matrix", "structlinalg_1_1csr__matrix.html", "structlinalg_1_1csr__matrix" ], + [ "dense_to_banded", "interfacelinalg_1_1dense__to__banded.html", null ], [ "det", "interfacelinalg_1_1det.html", null ], [ "diag_mtx_mult", "interfacelinalg_1_1diag__mtx__mult.html", null ], [ "eigen", "interfacelinalg_1_1eigen.html", null ], + [ "extract_diagonal", "interfacelinalg_1_1extract__diagonal.html", null ], [ "form_lq", "interfacelinalg_1_1form__lq.html", null ], [ "form_lu", "interfacelinalg_1_1form__lu.html", null ], [ "form_qr", "interfacelinalg_1_1form__qr.html", null ], [ "lq_factor", "interfacelinalg_1_1lq__factor.html", null ], [ "lu_factor", "interfacelinalg_1_1lu__factor.html", null ], + [ "matmul", "interfacelinalg_1_1matmul.html", null ], + [ "msr_matrix", "structlinalg_1_1msr__matrix.html", "structlinalg_1_1msr__matrix" ], [ "mtx_inverse", "interfacelinalg_1_1mtx__inverse.html", null ], [ "mtx_mult", "interfacelinalg_1_1mtx__mult.html", null ], [ "mtx_pinverse", "interfacelinalg_1_1mtx__pinverse.html", null ], @@ -21,11 +27,18 @@ var namespacelinalg = [ "mult_lq", "interfacelinalg_1_1mult__lq.html", null ], [ "mult_qr", "interfacelinalg_1_1mult__qr.html", null ], [ "mult_rz", "interfacelinalg_1_1mult__rz.html", null ], + [ "nonzero_count", "interfacelinalg_1_1nonzero__count.html", null ], + [ "operator(*)", "interfacelinalg_1_1operator_07_5_08.html", null ], + [ "operator(+)", "interfacelinalg_1_1operator_07_09_08.html", null ], + [ "operator(-)", "interfacelinalg_1_1operator_07-_08.html", null ], + [ "operator(/)", "interfacelinalg_1_1operator_07_2_08.html", null ], + [ "pgmres_solver", "interfacelinalg_1_1pgmres__solver.html", null ], [ "qr_factor", "interfacelinalg_1_1qr__factor.html", null ], [ "qr_rank1_update", "interfacelinalg_1_1qr__rank1__update.html", null ], [ "rank1_update", "interfacelinalg_1_1rank1__update.html", null ], [ "recip_mult_array", "interfacelinalg_1_1recip__mult__array.html", null ], [ "rz_factor", "interfacelinalg_1_1rz__factor.html", null ], + [ "size", "interfacelinalg_1_1size.html", null ], [ "solve_cholesky", "interfacelinalg_1_1solve__cholesky.html", null ], [ "solve_least_squares", "interfacelinalg_1_1solve__least__squares.html", null ], [ "solve_least_squares_full", "interfacelinalg_1_1solve__least__squares__full.html", null ], @@ -35,9 +48,11 @@ var namespacelinalg = [ "solve_qr", "interfacelinalg_1_1solve__qr.html", null ], [ "solve_triangular_system", "interfacelinalg_1_1solve__triangular__system.html", null ], [ "sort", "interfacelinalg_1_1sort.html", null ], + [ "sparse_direct_solve", "interfacelinalg_1_1sparse__direct__solve.html", null ], [ "svd", "interfacelinalg_1_1svd.html", null ], [ "swap", "interfacelinalg_1_1swap.html", null ], [ "trace", "interfacelinalg_1_1trace.html", null ], + [ "transpose", "interfacelinalg_1_1transpose.html", null ], [ "tri_mtx_mult", "interfacelinalg_1_1tri__mtx__mult.html", null ], [ "la_array_size_error", "namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9", null ], [ "la_convergence_error", "namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7", null ], diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html index 8efee7f6..17568e00 100644 --- a/docs/html/namespacemembers.html +++ b/docs/html/namespacemembers.html @@ -34,7 +34,7 @@

diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html index 6b554917..9ae7b497 100644 --- a/docs/html/namespacemembers_vars.html +++ b/docs/html/namespacemembers_vars.html @@ -34,7 +34,7 @@ diff --git a/docs/html/namespaceqrupdate.html b/docs/html/namespaceqrupdate.html index 051f57f7..72bc3e06 100644 --- a/docs/html/namespaceqrupdate.html +++ b/docs/html/namespaceqrupdate.html @@ -34,7 +34,7 @@ diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html index 06ad37b6..0e9dd32c 100644 --- a/docs/html/namespaces.html +++ b/docs/html/namespaces.html @@ -34,7 +34,7 @@ @@ -105,59 +105,75 @@
Here is a list of all documented modules with brief descriptions:
[detail level 12]

Data Types

interface  ddot
 
interface  dgbmv
 
interface  dgemm
-
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
interface  band_mtx_to_full_mtx
 Converts a banded matrix stored in dense form to a full matrix. More...
 
interface  banded_to_dense
 Converts a banded matrix to a dense matrix. More...
 
interface  cholesky_factor
 Computes the Cholesky factorization of a symmetric, positive definite matrix. More...
 
interface  cholesky_rank1_update
 Computes the rank 1 update to a Cholesky factored matrix (upper triangular). More...
 
type  csr_matrix
 A sparse matrix stored in compressed sparse row (CSR) format. More...
 
interface  dense_to_banded
 Converts a dense matrix to a banded matrix. More...
 
interface  det
 Computes the determinant of a square matrix. More...
 
interface  eigen
 Computes the eigenvalues, and optionally the eigenvectors, of a matrix. More...
 
interface  extract_diagonal
 Extracts the diagonal of a matrix. More...
 
interface  form_lq
 Forms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorithm. More...
 
interface  lu_factor
 Computes the LU factorization of an M-by-N matrix. More...
 
interface  matmul
 Performs sparse matrix multiplication C = A * B. More...
 
type  msr_matrix
 A sparse matrix stored in modified sparse row format. This format is convenient for situations where the diagonal is fully populated. More...
 
interface  mtx_inverse
 Computes the inverse of a square matrix. More...
 
interface  mult_rz
 Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization. More...
 
interface  nonzero_count
 Determines the number of nonzero entries in a sparse matrix. More...
 
interface  operator(*)
 Multiplies a sparse matrix and a scalar. More...
 
interface  operator(+)
 Adds two sparse matrices. More...
 
interface  operator(-)
 Subtracts two sparse matrices. More...
 
interface  operator(/)
 Multiplies a sparse matrix by a scalar. More...
 
interface  pgmres_solver
 A preconditioned GMRES solver. More...
 
interface  qr_factor
 Computes the QR factorization of an M-by-N matrix. More...
 
interface  rz_factor
 Factors an upper trapezoidal matrix by means of orthogonal transformations such that \( A = R Z = (R 0) Z \). Z is an orthogonal matrix of dimension N-by-N, and R is an M-by-M upper triangular matrix. More...
 
interface  size
 Determines the size of the requested dimension of the supplied sparse matrix. More...
 
interface  solve_cholesky
 Solves a system of Cholesky factored equations. More...
 
interface  sort
 Sorts an array. More...
 
interface  sparse_direct_solve
 Provides a direct solution to a square, sparse system. More...
 
interface  svd
 Computes the singular value decomposition of a matrix A. The SVD is defined as: \( A = U S V^T \), where \( U \) is an M-by-M orthogonal matrix, \( S \) is an M-by-N diagonal matrix, and \( V \) is an N-by-N orthogonal matrix. In the event that \( V \) is complex valued, \( V^H \) is computed instead of \( V^T \). More...
 
interface  trace
 Computes the trace of a matrix (the sum of the main diagonal elements). More...
 
interface  transpose
 Provides the transpose of a sparse matrix. More...
 
interface  tri_mtx_mult
 Computes the triangular matrix operation: \( B = \alpha A^T A + \beta B \), or \( B = \alpha A A^T + \beta B \), where A is a triangular matrix. More...
 
-
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
-
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
-
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
-
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -165,6 +181,22 @@ + + + + + + + + + + + + + + + +
 MblasA module providing explicit interfaces to BLAS routines
 Cdgbmv
 Cdgemm
 Cdgemv
 Cdscal
 Cdtrsm
 Cdtrsv
 Czdscal
 Czgbmv
 Czgemm
 Czgemv
 Czscal
 Cztrsm
 Cztrsv
 MlinalgProvides a set of common linear algebra routines
 Cband_diag_mtx_multMultiplies a banded matrix, A, with a diagonal matrix, B, such that A = alpha * A * B, or A = alpha * B * A
 Cband_mtx_multMultiplies a banded matrix, A, by a vector x such that alpha * op(A) * x + beta * y = y
 Cband_mtx_to_full_mtxConverts a banded matrix stored in dense form to a full matrix
 Ccholesky_factorComputes the Cholesky factorization of a symmetric, positive definite matrix
 Ccholesky_rank1_downdateComputes the rank 1 downdate to a Cholesky factored matrix (upper triangular)
 Ccholesky_rank1_updateComputes the rank 1 update to a Cholesky factored matrix (upper triangular)
 CdetComputes the determinant of a square matrix
 Cdiag_mtx_multMultiplies a diagonal matrix with another matrix or array
 CeigenComputes the eigenvalues, and optionally the eigenvectors, of a matrix
 Cform_lqForms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorithm
 Cform_luExtracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor
 Cform_qrForms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR factorization algorithm
 Clq_factorComputes the LQ factorization of an M-by-N matrix
 Clu_factorComputes the LU factorization of an M-by-N matrix
 Cmtx_inverseComputes the inverse of a square matrix
 Cmtx_multPerforms the matrix operation: \( C = \alpha op(A) op(B) + \beta C \)
 Cmtx_pinverseComputes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition of the matrix
 Cmtx_rankComputes the rank of a matrix
 Cmult_lqMultiplies a general matrix by the orthogonal matrix Q from a LQ factorization
 Cmult_qrMultiplies a general matrix by the orthogonal matrix Q from a QR factorization
 Cmult_rzMultiplies a general matrix by the orthogonal matrix Z from an RZ factorization
 Cqr_factorComputes the QR factorization of an M-by-N matrix
 Cqr_rank1_updateComputes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where \( A = Q R \), and \( A1 = A + U V^T \) such that \( A1 = Q1 R1 \). In the event \( V \) is complex-valued, \( V^H \) is computed instead of \( V^T \)
 Crank1_updatePerforms the rank-1 update to matrix A such that: \( A = \alpha X Y^T + A \), where \( A \) is an M-by-N matrix, \( \alpha \)is a scalar, \( X \) is an M-element array, and \( Y \) is an N-element array. In the event that \( Y \) is complex, \( Y^H \) is used instead of \( Y^T \)
 Crecip_mult_arrayMultiplies a vector by the reciprocal of a real scalar
 Crz_factorFactors an upper trapezoidal matrix by means of orthogonal transformations such that \( A = R Z = (R 0) Z \). Z is an orthogonal matrix of dimension N-by-N, and R is an M-by-M upper triangular matrix
 Csolve_choleskySolves a system of Cholesky factored equations
 Csolve_least_squaresSolves the overdetermined or underdetermined system \( A X = B \) of M equations of N unknowns. Notice, it is assumed that matrix A has full rank
 Csolve_least_squares_fullSolves the overdetermined or underdetermined system \( A X = B \) of M equations of N unknowns, but uses a full orthogonal factorization of the system
 Csolve_least_squares_svdSolves the overdetermined or underdetermined system \( A X = B \) of M equations of N unknowns using a singular value decomposition of matrix A
 Csolve_lqSolves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M
 Csolve_luSolves a system of LU-factored equations
 Csolve_qrSolves a system of M QR-factored equations of N unknowns
 Csolve_triangular_systemSolves a triangular system of equations
 CsortSorts an array
 CsvdComputes the singular value decomposition of a matrix A. The SVD is defined as: \( A = U S V^T \), where \( U \) is an M-by-M orthogonal matrix, \( S \) is an M-by-N diagonal matrix, and \( V \) is an N-by-N orthogonal matrix. In the event that \( V \) is complex valued, \( V^H \) is computed instead of \( V^T \)
 CswapSwaps the contents of two arrays
 CtraceComputes the trace of a matrix (the sum of the main diagonal elements)
 Ctri_mtx_multComputes the triangular matrix operation: \( B = \alpha A^T A + \beta B \), or \( B = \alpha A A^T + \beta B \), where A is a triangular matrix
 Cddot
 Cdgbmv
 Cdgemm
 Cdgemv
 Cdscal
 Cdtrsm
 Cdtrsv
 Czdscal
 Czgbmv
 Czgemm
 Czgemv
 Czscal
 Cztrsm
 Cztrsv
 MlinalgProvides a set of common linear algebra routines
 Cband_diag_mtx_multMultiplies a banded matrix, A, with a diagonal matrix, B, such that A = alpha * A * B, or A = alpha * B * A
 Cband_mtx_multMultiplies a banded matrix, A, by a vector x such that alpha * op(A) * x + beta * y = y
 Cband_mtx_to_full_mtxConverts a banded matrix stored in dense form to a full matrix
 Cbanded_to_denseConverts a banded matrix to a dense matrix
 Ccholesky_factorComputes the Cholesky factorization of a symmetric, positive definite matrix
 Ccholesky_rank1_downdateComputes the rank 1 downdate to a Cholesky factored matrix (upper triangular)
 Ccholesky_rank1_updateComputes the rank 1 update to a Cholesky factored matrix (upper triangular)
 Ccsr_matrixA sparse matrix stored in compressed sparse row (CSR) format
 Cdense_to_bandedConverts a dense matrix to a banded matrix
 CdetComputes the determinant of a square matrix
 Cdiag_mtx_multMultiplies a diagonal matrix with another matrix or array
 CeigenComputes the eigenvalues, and optionally the eigenvectors, of a matrix
 Cextract_diagonalExtracts the diagonal of a matrix
 Cform_lqForms the orthogonal matrix Q from the elementary reflectors returned by the LQ factorization algorithm
 Cform_luExtracts the L and U matrices from the condensed [L\U] storage format used by the lu_factor
 Cform_qrForms the full M-by-M orthogonal matrix Q from the elementary reflectors returned by the base QR factorization algorithm
 Clq_factorComputes the LQ factorization of an M-by-N matrix
 Clu_factorComputes the LU factorization of an M-by-N matrix
 CmatmulPerforms sparse matrix multiplication C = A * B
 Cmsr_matrixA sparse matrix stored in modified sparse row format. This format is convenient for situations where the diagonal is fully populated
 Cmtx_inverseComputes the inverse of a square matrix
 Cmtx_multPerforms the matrix operation: \( C = \alpha op(A) op(B) + \beta C \)
 Cmtx_pinverseComputes the Moore-Penrose pseudo-inverse of a M-by-N matrix using the singular value decomposition of the matrix
 Cmtx_rankComputes the rank of a matrix
 Cmult_lqMultiplies a general matrix by the orthogonal matrix Q from a LQ factorization
 Cmult_qrMultiplies a general matrix by the orthogonal matrix Q from a QR factorization
 Cmult_rzMultiplies a general matrix by the orthogonal matrix Z from an RZ factorization
 Cnonzero_countDetermines the number of nonzero entries in a sparse matrix
 Coperator(*)Multiplies a sparse matrix and a scalar
 Coperator(+)Adds two sparse matrices
 Coperator(-)Subtracts two sparse matrices
 Coperator(/)Multiplies a sparse matrix by a scalar
 Cpgmres_solverA preconditioned GMRES solver
 Cqr_factorComputes the QR factorization of an M-by-N matrix
 Cqr_rank1_updateComputes the rank 1 update to an M-by-N QR factored matrix A (M >= N) where \( A = Q R \), and \( A1 = A + U V^T \) such that \( A1 = Q1 R1 \). In the event \( V \) is complex-valued, \( V^H \) is computed instead of \( V^T \)
 Crank1_updatePerforms the rank-1 update to matrix A such that: \( A = \alpha X Y^T + A \), where \( A \) is an M-by-N matrix, \( \alpha \)is a scalar, \( X \) is an M-element array, and \( Y \) is an N-element array. In the event that \( Y \) is complex, \( Y^H \) is used instead of \( Y^T \)
 Crecip_mult_arrayMultiplies a vector by the reciprocal of a real scalar
 Crz_factorFactors an upper trapezoidal matrix by means of orthogonal transformations such that \( A = R Z = (R 0) Z \). Z is an orthogonal matrix of dimension N-by-N, and R is an M-by-M upper triangular matrix
 CsizeDetermines the size of the requested dimension of the supplied sparse matrix
 Csolve_choleskySolves a system of Cholesky factored equations
 Csolve_least_squaresSolves the overdetermined or underdetermined system \( A X = B \) of M equations of N unknowns. Notice, it is assumed that matrix A has full rank
 Csolve_least_squares_fullSolves the overdetermined or underdetermined system \( A X = B \) of M equations of N unknowns, but uses a full orthogonal factorization of the system
 Csolve_least_squares_svdSolves the overdetermined or underdetermined system \( A X = B \) of M equations of N unknowns using a singular value decomposition of matrix A
 Csolve_lqSolves a system of M LQ-factored equations of N unknowns. N must be greater than or equal to M
 Csolve_luSolves a system of LU-factored equations
 Csolve_qrSolves a system of M QR-factored equations of N unknowns
 Csolve_triangular_systemSolves a triangular system of equations
 CsortSorts an array
 Csparse_direct_solveProvides a direct solution to a square, sparse system
 CsvdComputes the singular value decomposition of a matrix A. The SVD is defined as: \( A = U S V^T \), where \( U \) is an M-by-M orthogonal matrix, \( S \) is an M-by-N diagonal matrix, and \( V \) is an N-by-N orthogonal matrix. In the event that \( V \) is complex valued, \( V^H \) is computed instead of \( V^T \)
 CswapSwaps the contents of two arrays
 CtraceComputes the trace of a matrix (the sum of the main diagonal elements)
 CtransposeProvides the transpose of a sparse matrix
 Ctri_mtx_multComputes the triangular matrix operation: \( B = \alpha A^T A + \beta B \), or \( B = \alpha A A^T + \beta B \), where A is a triangular matrix
 MqrupdateA module providing explicit interfaces for the QRUPDATE library
 Cdch1dn
 Cdch1up
 Czch1dn
 Czch1up
 Czqr1up
 MsparskitAn interface to the SPARSKIT library available at https://www-users.cse.umn.edu/~saad/software/SPARSKIT/
 CamubComputes the matrix product: C = A * B
 CaplbComputes the matrix sum: C = A + B, where the matrices are given in CSR format
 CaplsbComputes the matrix sum: C = A + s * B, where the matrices are given in CSR format
 CbndcsrConverts the LINPACK, BLAS, LAPACK banded matrix format into a CSR format
 Ccsrcsc2Converts a CSR matrix into a CSC matrix (transposition)
 CcsrmsrConverts a CSR matrix to an MSR matrix
 CgetdiaExtracts the diagonal from a matrix
 CgetelmGets element A(i,j) of matrix A for any pair (i,j)
 CiludComputes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy
 CiludpComputes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy
 CilutComputes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism
 CilutpComputes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism and pivoting
 ClusolSolves the LU-factored system (LU) x = y
 CmsrcsrConverts and MSR matrix to a CSR matrix
 CpgmresAn ILUT preconditioned GMRES algorithm. This routine utilizes the L and U matrices generated by the ILUT routine to precondition the GMRES algorithm. The stopping criteria utilized is based simply on reducing the residual norm to the requested tolerance
diff --git a/docs/html/namespaces_dup.js b/docs/html/namespaces_dup.js index 3bb306fb..a56a08aa 100644 --- a/docs/html/namespaces_dup.js +++ b/docs/html/namespaces_dup.js @@ -2,5 +2,6 @@ var namespaces_dup = [ [ "blas", "namespaceblas.html", "namespaceblas" ], [ "linalg", "namespacelinalg.html", "namespacelinalg" ], - [ "qrupdate", "namespaceqrupdate.html", "namespaceqrupdate" ] + [ "qrupdate", "namespaceqrupdate.html", "namespaceqrupdate" ], + [ "sparskit", "namespacesparskit.html", "namespacesparskit" ] ]; \ No newline at end of file diff --git a/docs/html/namespacesparskit.html b/docs/html/namespacesparskit.html new file mode 100644 index 00000000..af4fcdcf --- /dev/null +++ b/docs/html/namespacesparskit.html @@ -0,0 +1,171 @@ + + + + + + + +linalg: sparskit Module Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sparskit Module Reference
+
+
+ +

An interface to the SPARSKIT library available at https://www-users.cse.umn.edu/~saad/software/SPARSKIT/. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Types

interface  amub
 Computes the matrix product: C = A * B. More...
 
interface  aplb
 Computes the matrix sum: C = A + B, where the matrices are given in CSR format. More...
 
interface  aplsb
 Computes the matrix sum: C = A + s * B, where the matrices are given in CSR format. More...
 
interface  bndcsr
 Converts the LINPACK, BLAS, LAPACK banded matrix format into a CSR format. More...
 
interface  csrcsc2
 Converts a CSR matrix into a CSC matrix (transposition). More...
 
interface  csrmsr
 Converts a CSR matrix to an MSR matrix. More...
 
interface  getdia
 Extracts the diagonal from a matrix. More...
 
interface  getelm
 Gets element A(i,j) of matrix A for any pair (i,j). More...
 
interface  ilud
 Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy. More...
 
interface  iludp
 Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping strategy. More...
 
interface  ilut
 Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism. More...
 
interface  ilutp
 Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mechanism and pivoting. More...
 
interface  lusol
 Solves the LU-factored system (LU) x = y. More...
 
interface  msrcsr
 Converts and MSR matrix to a CSR matrix. More...
 
interface  pgmres
 An ILUT preconditioned GMRES algorithm. This routine utilizes the L and U matrices generated by the ILUT routine to precondition the GMRES algorithm. The stopping criteria utilized is based simply on reducing the residual norm to the requested tolerance. More...
 
+

Detailed Description

+

An interface to the SPARSKIT library available at https://www-users.cse.umn.edu/~saad/software/SPARSKIT/.

+
+
+ + + + diff --git a/docs/html/namespacesparskit.js b/docs/html/namespacesparskit.js new file mode 100644 index 00000000..cbaedf38 --- /dev/null +++ b/docs/html/namespacesparskit.js @@ -0,0 +1,18 @@ +var namespacesparskit = +[ + [ "amub", "interfacesparskit_1_1amub.html", null ], + [ "aplb", "interfacesparskit_1_1aplb.html", null ], + [ "aplsb", "interfacesparskit_1_1aplsb.html", null ], + [ "bndcsr", "interfacesparskit_1_1bndcsr.html", null ], + [ "csrcsc2", "interfacesparskit_1_1csrcsc2.html", null ], + [ "csrmsr", "interfacesparskit_1_1csrmsr.html", null ], + [ "getdia", "interfacesparskit_1_1getdia.html", null ], + [ "getelm", "interfacesparskit_1_1getelm.html", null ], + [ "ilud", "interfacesparskit_1_1ilud.html", null ], + [ "iludp", "interfacesparskit_1_1iludp.html", null ], + [ "ilut", "interfacesparskit_1_1ilut.html", null ], + [ "ilutp", "interfacesparskit_1_1ilutp.html", null ], + [ "lusol", "interfacesparskit_1_1lusol.html", null ], + [ "msrcsr", "interfacesparskit_1_1msrcsr.html", null ], + [ "pgmres", "interfacesparskit_1_1pgmres.html", null ] +]; \ No newline at end of file diff --git a/docs/html/navtreedata.js b/docs/html/navtreedata.js index 51686446..c9361726 100644 --- a/docs/html/navtreedata.js +++ b/docs/html/navtreedata.js @@ -35,7 +35,12 @@ var NAVTREE = ] ], [ "Data Types", "annotated.html", [ [ "Data Types List", "annotated.html", "annotated_dup" ], - [ "Data Type Index", "classes.html", null ] + [ "Data Type Index", "classes.html", null ], + [ "Data Fields", "functions.html", [ + [ "All", "functions.html", null ], + [ "Functions/Subroutines", "functions_func.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] ] ], [ "Files", "files.html", [ [ "File List", "files.html", "files_dup" ], @@ -50,7 +55,7 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"linalg__basic_8f90_source.html" +"linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js index 7bd2d973..d3558b3c 100644 --- a/docs/html/navtreeindex0.js +++ b/docs/html/navtreeindex0.js @@ -6,36 +6,41 @@ var NAVTREEINDEX0 = "dir_68267d1309a1af8e8297ef4c3efbcdba.html":[3,0,1], "dir_d44c64559bbebec7f509842c48db8b23.html":[3,0,0], "files.html":[3,0], +"functions.html":[2,2,0], +"functions_func.html":[2,2,1], +"functions_vars.html":[2,2,2], "globals.html":[3,1,0], "globals_func.html":[3,1,1], "index.html":[], "index.html#intro_sec":[0], -"interfaceblas_1_1dgbmv.html":[2,0,0,0], -"interfaceblas_1_1dgbmv.html":[1,0,0,0], -"interfaceblas_1_1dgemm.html":[1,0,0,1], -"interfaceblas_1_1dgemm.html":[2,0,0,1], -"interfaceblas_1_1dgemv.html":[1,0,0,2], -"interfaceblas_1_1dgemv.html":[2,0,0,2], -"interfaceblas_1_1dscal.html":[2,0,0,3], -"interfaceblas_1_1dscal.html":[1,0,0,3], -"interfaceblas_1_1dtrsm.html":[2,0,0,4], -"interfaceblas_1_1dtrsm.html":[1,0,0,4], -"interfaceblas_1_1dtrsv.html":[2,0,0,5], -"interfaceblas_1_1dtrsv.html":[1,0,0,5], -"interfaceblas_1_1zdscal.html":[2,0,0,6], -"interfaceblas_1_1zdscal.html":[1,0,0,6], -"interfaceblas_1_1zgbmv.html":[2,0,0,7], -"interfaceblas_1_1zgbmv.html":[1,0,0,7], -"interfaceblas_1_1zgemm.html":[2,0,0,8], -"interfaceblas_1_1zgemm.html":[1,0,0,8], -"interfaceblas_1_1zgemv.html":[1,0,0,9], -"interfaceblas_1_1zgemv.html":[2,0,0,9], -"interfaceblas_1_1zscal.html":[1,0,0,10], -"interfaceblas_1_1zscal.html":[2,0,0,10], -"interfaceblas_1_1ztrsm.html":[1,0,0,11], -"interfaceblas_1_1ztrsm.html":[2,0,0,11], -"interfaceblas_1_1ztrsv.html":[2,0,0,12], -"interfaceblas_1_1ztrsv.html":[1,0,0,12], +"interfaceblas_1_1ddot.html":[1,0,0,0], +"interfaceblas_1_1ddot.html":[2,0,0,0], +"interfaceblas_1_1dgbmv.html":[1,0,0,1], +"interfaceblas_1_1dgbmv.html":[2,0,0,1], +"interfaceblas_1_1dgemm.html":[2,0,0,2], +"interfaceblas_1_1dgemm.html":[1,0,0,2], +"interfaceblas_1_1dgemv.html":[2,0,0,3], +"interfaceblas_1_1dgemv.html":[1,0,0,3], +"interfaceblas_1_1dscal.html":[1,0,0,4], +"interfaceblas_1_1dscal.html":[2,0,0,4], +"interfaceblas_1_1dtrsm.html":[1,0,0,5], +"interfaceblas_1_1dtrsm.html":[2,0,0,5], +"interfaceblas_1_1dtrsv.html":[1,0,0,6], +"interfaceblas_1_1dtrsv.html":[2,0,0,6], +"interfaceblas_1_1zdscal.html":[1,0,0,7], +"interfaceblas_1_1zdscal.html":[2,0,0,7], +"interfaceblas_1_1zgbmv.html":[1,0,0,8], +"interfaceblas_1_1zgbmv.html":[2,0,0,8], +"interfaceblas_1_1zgemm.html":[1,0,0,9], +"interfaceblas_1_1zgemm.html":[2,0,0,9], +"interfaceblas_1_1zgemv.html":[2,0,0,10], +"interfaceblas_1_1zgemv.html":[1,0,0,10], +"interfaceblas_1_1zscal.html":[2,0,0,11], +"interfaceblas_1_1zscal.html":[1,0,0,11], +"interfaceblas_1_1ztrsm.html":[2,0,0,12], +"interfaceblas_1_1ztrsm.html":[1,0,0,12], +"interfaceblas_1_1ztrsv.html":[2,0,0,13], +"interfaceblas_1_1ztrsv.html":[1,0,0,13], "interfacelapack_1_1dgeev.html":[2,0,1,0], "interfacelapack_1_1dgelqf.html":[2,0,1,1], "interfacelapack_1_1dgels.html":[2,0,1,2], @@ -81,96 +86,152 @@ var NAVTREEINDEX0 = "interfacelapack_1_1zunmlq.html":[2,0,1,42], "interfacelapack_1_1zunmqr.html":[2,0,1,43], "interfacelapack_1_1zunmrz.html":[2,0,1,44], -"interfacelinalg_1_1band__diag__mtx__mult.html":[2,0,2,0], "interfacelinalg_1_1band__diag__mtx__mult.html":[1,0,1,0], +"interfacelinalg_1_1band__diag__mtx__mult.html":[2,0,2,0], "interfacelinalg_1_1band__mtx__mult.html":[1,0,1,1], "interfacelinalg_1_1band__mtx__mult.html":[2,0,2,1], "interfacelinalg_1_1band__mtx__to__full__mtx.html":[2,0,2,2], "interfacelinalg_1_1band__mtx__to__full__mtx.html":[1,0,1,2], -"interfacelinalg_1_1cholesky__factor.html":[2,0,2,3], -"interfacelinalg_1_1cholesky__factor.html":[1,0,1,3], -"interfacelinalg_1_1cholesky__rank1__downdate.html":[2,0,2,4], -"interfacelinalg_1_1cholesky__rank1__downdate.html":[1,0,1,4], -"interfacelinalg_1_1cholesky__rank1__update.html":[1,0,1,5], -"interfacelinalg_1_1cholesky__rank1__update.html":[2,0,2,5], -"interfacelinalg_1_1det.html":[1,0,1,6], -"interfacelinalg_1_1det.html":[2,0,2,6], -"interfacelinalg_1_1diag__mtx__mult.html":[1,0,1,7], -"interfacelinalg_1_1diag__mtx__mult.html":[2,0,2,7], -"interfacelinalg_1_1eigen.html":[2,0,2,8], -"interfacelinalg_1_1eigen.html":[1,0,1,8], -"interfacelinalg_1_1form__lq.html":[2,0,2,9], -"interfacelinalg_1_1form__lq.html":[1,0,1,9], -"interfacelinalg_1_1form__lu.html":[1,0,1,10], -"interfacelinalg_1_1form__lu.html":[2,0,2,10], -"interfacelinalg_1_1form__qr.html":[2,0,2,11], -"interfacelinalg_1_1form__qr.html":[1,0,1,11], -"interfacelinalg_1_1lq__factor.html":[1,0,1,12], -"interfacelinalg_1_1lq__factor.html":[2,0,2,12], -"interfacelinalg_1_1lu__factor.html":[1,0,1,13], -"interfacelinalg_1_1lu__factor.html":[2,0,2,13], -"interfacelinalg_1_1mtx__inverse.html":[1,0,1,14], -"interfacelinalg_1_1mtx__inverse.html":[2,0,2,14], -"interfacelinalg_1_1mtx__mult.html":[1,0,1,15], -"interfacelinalg_1_1mtx__mult.html":[2,0,2,15], -"interfacelinalg_1_1mtx__pinverse.html":[2,0,2,16], -"interfacelinalg_1_1mtx__pinverse.html":[1,0,1,16], -"interfacelinalg_1_1mtx__rank.html":[2,0,2,17], -"interfacelinalg_1_1mtx__rank.html":[1,0,1,17], -"interfacelinalg_1_1mult__lq.html":[2,0,2,18], -"interfacelinalg_1_1mult__lq.html":[1,0,1,18], -"interfacelinalg_1_1mult__qr.html":[1,0,1,19], -"interfacelinalg_1_1mult__qr.html":[2,0,2,19], -"interfacelinalg_1_1mult__rz.html":[2,0,2,20], -"interfacelinalg_1_1mult__rz.html":[1,0,1,20], -"interfacelinalg_1_1qr__factor.html":[2,0,2,21], -"interfacelinalg_1_1qr__factor.html":[1,0,1,21], -"interfacelinalg_1_1qr__rank1__update.html":[2,0,2,22], -"interfacelinalg_1_1qr__rank1__update.html":[1,0,1,22], -"interfacelinalg_1_1rank1__update.html":[1,0,1,23], -"interfacelinalg_1_1rank1__update.html":[2,0,2,23], -"interfacelinalg_1_1recip__mult__array.html":[2,0,2,24], -"interfacelinalg_1_1recip__mult__array.html":[1,0,1,24], -"interfacelinalg_1_1rz__factor.html":[2,0,2,25], -"interfacelinalg_1_1rz__factor.html":[1,0,1,25], -"interfacelinalg_1_1solve__cholesky.html":[2,0,2,26], -"interfacelinalg_1_1solve__cholesky.html":[1,0,1,26], -"interfacelinalg_1_1solve__least__squares.html":[2,0,2,27], -"interfacelinalg_1_1solve__least__squares.html":[1,0,1,27], -"interfacelinalg_1_1solve__least__squares__full.html":[2,0,2,28], -"interfacelinalg_1_1solve__least__squares__full.html":[1,0,1,28], -"interfacelinalg_1_1solve__least__squares__svd.html":[2,0,2,29], -"interfacelinalg_1_1solve__least__squares__svd.html":[1,0,1,29], -"interfacelinalg_1_1solve__lq.html":[2,0,2,30], -"interfacelinalg_1_1solve__lq.html":[1,0,1,30], -"interfacelinalg_1_1solve__lu.html":[2,0,2,31], -"interfacelinalg_1_1solve__lu.html":[1,0,1,31], -"interfacelinalg_1_1solve__qr.html":[2,0,2,32], -"interfacelinalg_1_1solve__qr.html":[1,0,1,32], -"interfacelinalg_1_1solve__triangular__system.html":[2,0,2,33], -"interfacelinalg_1_1solve__triangular__system.html":[1,0,1,33], -"interfacelinalg_1_1sort.html":[2,0,2,34], -"interfacelinalg_1_1sort.html":[1,0,1,34], -"interfacelinalg_1_1svd.html":[2,0,2,35], -"interfacelinalg_1_1svd.html":[1,0,1,35], -"interfacelinalg_1_1swap.html":[2,0,2,36], -"interfacelinalg_1_1swap.html":[1,0,1,36], -"interfacelinalg_1_1trace.html":[1,0,1,37], -"interfacelinalg_1_1trace.html":[2,0,2,37], -"interfacelinalg_1_1tri__mtx__mult.html":[1,0,1,38], -"interfacelinalg_1_1tri__mtx__mult.html":[2,0,2,38], -"interfaceqrupdate_1_1dch1dn.html":[2,0,3,0], +"interfacelinalg_1_1banded__to__dense.html":[1,0,1,3], +"interfacelinalg_1_1banded__to__dense.html":[2,0,2,3], +"interfacelinalg_1_1cholesky__factor.html":[2,0,2,4], +"interfacelinalg_1_1cholesky__factor.html":[1,0,1,4], +"interfacelinalg_1_1cholesky__rank1__downdate.html":[2,0,2,5], +"interfacelinalg_1_1cholesky__rank1__downdate.html":[1,0,1,5], +"interfacelinalg_1_1cholesky__rank1__update.html":[2,0,2,6], +"interfacelinalg_1_1cholesky__rank1__update.html":[1,0,1,6], +"interfacelinalg_1_1dense__to__banded.html":[2,0,2,8], +"interfacelinalg_1_1dense__to__banded.html":[1,0,1,8], +"interfacelinalg_1_1det.html":[2,0,2,9], +"interfacelinalg_1_1det.html":[1,0,1,9], +"interfacelinalg_1_1diag__mtx__mult.html":[2,0,2,10], +"interfacelinalg_1_1diag__mtx__mult.html":[1,0,1,10], +"interfacelinalg_1_1eigen.html":[2,0,2,11], +"interfacelinalg_1_1eigen.html":[1,0,1,11], +"interfacelinalg_1_1extract__diagonal.html":[2,0,2,12], +"interfacelinalg_1_1extract__diagonal.html":[1,0,1,12], +"interfacelinalg_1_1form__lq.html":[2,0,2,13], +"interfacelinalg_1_1form__lq.html":[1,0,1,13], +"interfacelinalg_1_1form__lu.html":[2,0,2,14], +"interfacelinalg_1_1form__lu.html":[1,0,1,14], +"interfacelinalg_1_1form__qr.html":[2,0,2,15], +"interfacelinalg_1_1form__qr.html":[1,0,1,15], +"interfacelinalg_1_1lq__factor.html":[1,0,1,16], +"interfacelinalg_1_1lq__factor.html":[2,0,2,16], +"interfacelinalg_1_1lu__factor.html":[2,0,2,17], +"interfacelinalg_1_1lu__factor.html":[1,0,1,17], +"interfacelinalg_1_1matmul.html":[1,0,1,18], +"interfacelinalg_1_1matmul.html":[2,0,2,18], +"interfacelinalg_1_1mtx__inverse.html":[1,0,1,20], +"interfacelinalg_1_1mtx__inverse.html":[2,0,2,20], +"interfacelinalg_1_1mtx__mult.html":[1,0,1,21], +"interfacelinalg_1_1mtx__mult.html":[2,0,2,21], +"interfacelinalg_1_1mtx__pinverse.html":[1,0,1,22], +"interfacelinalg_1_1mtx__pinverse.html":[2,0,2,22], +"interfacelinalg_1_1mtx__rank.html":[2,0,2,23], +"interfacelinalg_1_1mtx__rank.html":[1,0,1,23], +"interfacelinalg_1_1mult__lq.html":[1,0,1,24], +"interfacelinalg_1_1mult__lq.html":[2,0,2,24], +"interfacelinalg_1_1mult__qr.html":[2,0,2,25], +"interfacelinalg_1_1mult__qr.html":[1,0,1,25], +"interfacelinalg_1_1mult__rz.html":[2,0,2,26], +"interfacelinalg_1_1mult__rz.html":[1,0,1,26], +"interfacelinalg_1_1nonzero__count.html":[1,0,1,27], +"interfacelinalg_1_1nonzero__count.html":[2,0,2,27], +"interfacelinalg_1_1operator_07-_08.html":[1,0,1,30], +"interfacelinalg_1_1operator_07-_08.html":[2,0,2,30], +"interfacelinalg_1_1operator_07_09_08.html":[1,0,1,29], +"interfacelinalg_1_1operator_07_09_08.html":[2,0,2,29], +"interfacelinalg_1_1operator_07_2_08.html":[1,0,1,31], +"interfacelinalg_1_1operator_07_2_08.html":[2,0,2,31], +"interfacelinalg_1_1operator_07_5_08.html":[1,0,1,28], +"interfacelinalg_1_1operator_07_5_08.html":[2,0,2,28], +"interfacelinalg_1_1pgmres__solver.html":[1,0,1,32], +"interfacelinalg_1_1pgmres__solver.html":[2,0,2,32], +"interfacelinalg_1_1qr__factor.html":[1,0,1,33], +"interfacelinalg_1_1qr__factor.html":[2,0,2,33], +"interfacelinalg_1_1qr__rank1__update.html":[1,0,1,34], +"interfacelinalg_1_1qr__rank1__update.html":[2,0,2,34], +"interfacelinalg_1_1rank1__update.html":[2,0,2,35], +"interfacelinalg_1_1rank1__update.html":[1,0,1,35], +"interfacelinalg_1_1recip__mult__array.html":[2,0,2,36], +"interfacelinalg_1_1recip__mult__array.html":[1,0,1,36], +"interfacelinalg_1_1rz__factor.html":[1,0,1,37], +"interfacelinalg_1_1rz__factor.html":[2,0,2,37], +"interfacelinalg_1_1size.html":[1,0,1,38], +"interfacelinalg_1_1size.html":[2,0,2,38], +"interfacelinalg_1_1solve__cholesky.html":[1,0,1,39], +"interfacelinalg_1_1solve__cholesky.html":[2,0,2,39], +"interfacelinalg_1_1solve__least__squares.html":[2,0,2,40], +"interfacelinalg_1_1solve__least__squares.html":[1,0,1,40], +"interfacelinalg_1_1solve__least__squares__full.html":[2,0,2,41], +"interfacelinalg_1_1solve__least__squares__full.html":[1,0,1,41], +"interfacelinalg_1_1solve__least__squares__svd.html":[2,0,2,42], +"interfacelinalg_1_1solve__least__squares__svd.html":[1,0,1,42], +"interfacelinalg_1_1solve__lq.html":[2,0,2,43], +"interfacelinalg_1_1solve__lq.html":[1,0,1,43], +"interfacelinalg_1_1solve__lu.html":[2,0,2,44], +"interfacelinalg_1_1solve__lu.html":[1,0,1,44], +"interfacelinalg_1_1solve__qr.html":[1,0,1,45], +"interfacelinalg_1_1solve__qr.html":[2,0,2,45], +"interfacelinalg_1_1solve__triangular__system.html":[2,0,2,46], +"interfacelinalg_1_1solve__triangular__system.html":[1,0,1,46], +"interfacelinalg_1_1sort.html":[2,0,2,47], +"interfacelinalg_1_1sort.html":[1,0,1,47], +"interfacelinalg_1_1sparse__direct__solve.html":[2,0,2,48], +"interfacelinalg_1_1sparse__direct__solve.html":[1,0,1,48], +"interfacelinalg_1_1svd.html":[1,0,1,49], +"interfacelinalg_1_1svd.html":[2,0,2,49], +"interfacelinalg_1_1swap.html":[1,0,1,50], +"interfacelinalg_1_1swap.html":[2,0,2,50], +"interfacelinalg_1_1trace.html":[2,0,2,51], +"interfacelinalg_1_1trace.html":[1,0,1,51], +"interfacelinalg_1_1transpose.html":[2,0,2,52], +"interfacelinalg_1_1transpose.html":[1,0,1,52], +"interfacelinalg_1_1tri__mtx__mult.html":[2,0,2,53], +"interfacelinalg_1_1tri__mtx__mult.html":[1,0,1,53], "interfaceqrupdate_1_1dch1dn.html":[1,0,2,0], -"interfaceqrupdate_1_1dch1up.html":[2,0,3,1], +"interfaceqrupdate_1_1dch1dn.html":[2,0,3,0], "interfaceqrupdate_1_1dch1up.html":[1,0,2,1], +"interfaceqrupdate_1_1dch1up.html":[2,0,3,1], "interfaceqrupdate_1_1dqr1up.html":[1,0,2,2], "interfaceqrupdate_1_1dqr1up.html":[2,0,3,2], -"interfaceqrupdate_1_1zch1dn.html":[2,0,3,3], "interfaceqrupdate_1_1zch1dn.html":[1,0,2,3], -"interfaceqrupdate_1_1zch1up.html":[2,0,3,4], +"interfaceqrupdate_1_1zch1dn.html":[2,0,3,3], "interfaceqrupdate_1_1zch1up.html":[1,0,2,4], -"interfaceqrupdate_1_1zqr1up.html":[2,0,3,5], +"interfaceqrupdate_1_1zch1up.html":[2,0,3,4], "interfaceqrupdate_1_1zqr1up.html":[1,0,2,5], +"interfaceqrupdate_1_1zqr1up.html":[2,0,3,5], +"interfacesparskit_1_1amub.html":[1,0,3,0], +"interfacesparskit_1_1amub.html":[2,0,4,0], +"interfacesparskit_1_1aplb.html":[1,0,3,1], +"interfacesparskit_1_1aplb.html":[2,0,4,1], +"interfacesparskit_1_1aplsb.html":[2,0,4,2], +"interfacesparskit_1_1aplsb.html":[1,0,3,2], +"interfacesparskit_1_1bndcsr.html":[2,0,4,3], +"interfacesparskit_1_1bndcsr.html":[1,0,3,3], +"interfacesparskit_1_1csrcsc2.html":[2,0,4,4], +"interfacesparskit_1_1csrcsc2.html":[1,0,3,4], +"interfacesparskit_1_1csrmsr.html":[2,0,4,5], +"interfacesparskit_1_1csrmsr.html":[1,0,3,5], +"interfacesparskit_1_1getdia.html":[1,0,3,6], +"interfacesparskit_1_1getdia.html":[2,0,4,6], +"interfacesparskit_1_1getelm.html":[1,0,3,7], +"interfacesparskit_1_1getelm.html":[2,0,4,7], +"interfacesparskit_1_1ilud.html":[1,0,3,8], +"interfacesparskit_1_1ilud.html":[2,0,4,8], +"interfacesparskit_1_1iludp.html":[2,0,4,9], +"interfacesparskit_1_1iludp.html":[1,0,3,9], +"interfacesparskit_1_1ilut.html":[2,0,4,10], +"interfacesparskit_1_1ilut.html":[1,0,3,10], +"interfacesparskit_1_1ilutp.html":[2,0,4,11], +"interfacesparskit_1_1ilutp.html":[1,0,3,11], +"interfacesparskit_1_1lusol.html":[2,0,4,12], +"interfacesparskit_1_1lusol.html":[1,0,3,12], +"interfacesparskit_1_1msrcsr.html":[2,0,4,13], +"interfacesparskit_1_1msrcsr.html":[1,0,3,13], +"interfacesparskit_1_1pgmres.html":[1,0,3,14], +"interfacesparskit_1_1pgmres.html":[2,0,4,14], "lapack_8f90_source.html":[3,0,1,1], "linalg_8f90_source.html":[3,0,1,2], "linalg_8h.html":[3,0,0,0], @@ -188,66 +249,5 @@ var NAVTREEINDEX0 = "linalg_8h.html#a248142a5f0826cddac5daf1c74f234a6":[3,0,0,0,33], "linalg_8h.html#a292e54c48a8e7f0203bf11f02844691f":[3,0,0,0,8], "linalg_8h.html#a2c485d619c24435be713cf4356285e9a":[3,0,0,0,57], -"linalg_8h.html#a3967bc139cba341a513d1353bea62ac9":[3,0,0,0,6], -"linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15":[3,0,0,0,51], -"linalg_8h.html#a4a3f6dafe185c2985fc76aab3d0abb97":[3,0,0,0,45], -"linalg_8h.html#a4b74177a8914b109e1bf3aa56c9d9cb7":[3,0,0,0,14], -"linalg_8h.html#a4bc671dad87b42ff285a4241322a3764":[3,0,0,0,46], -"linalg_8h.html#a4d5bad18dcc8a52d9594cc21954c572d":[3,0,0,0,16], -"linalg_8h.html#a54ee9d9ab89b88b0ca682f70bc6c3c54":[3,0,0,0,58], -"linalg_8h.html#a56c0cea99a066e74c8fff9682d5ca92d":[3,0,0,0,69], -"linalg_8h.html#a5e6786c40f8f91e5f16f06e92be71ffa":[3,0,0,0,32], -"linalg_8h.html#a62f97b4319f5574aef5e52bbacff14bb":[3,0,0,0,64], -"linalg_8h.html#a63bec2daa56fdc4bbf3f45b67ea14f65":[3,0,0,0,15], -"linalg_8h.html#a64c2c86dc85ca7aad74667f153ae0437":[3,0,0,0,0], -"linalg_8h.html#a719ffdff56c8fa0875409c4f4e5e95cf":[3,0,0,0,54], -"linalg_8h.html#a71ba1a09caca9d59a9d24b95c7ea749b":[3,0,0,0,42], -"linalg_8h.html#a73bea3ca338925cfa4a58bcaea726a14":[3,0,0,0,24], -"linalg_8h.html#a791d5221eb8ad4fcd106cb218590dfc9":[3,0,0,0,43], -"linalg_8h.html#a7a821b41c61670f5710214a4d9178998":[3,0,0,0,30], -"linalg_8h.html#a7b2048bb219e58f455175041558ac44f":[3,0,0,0,31], -"linalg_8h.html#a7f611f8f3de7d56120c78e70671c7112":[3,0,0,0,71], -"linalg_8h.html#a910a1ec23e1112487573f35765a421ca":[3,0,0,0,1], -"linalg_8h.html#a9491626ab4b3664771e1282b61eeaa74":[3,0,0,0,17], -"linalg_8h.html#a95d6ed56844c62d553b940091837014b":[3,0,0,0,29], -"linalg_8h.html#a95f921847131eaedd62a439490d2a801":[3,0,0,0,39], -"linalg_8h.html#a968b10545320af7bbe1030867ae88e8c":[3,0,0,0,35], -"linalg_8h.html#a9b0639faf9ac0af9bbdb348b92746d5f":[3,0,0,0,47], -"linalg_8h.html#aa067ac0d3f58e28371d413ab7419da74":[3,0,0,0,60], -"linalg_8h.html#aa53e764ecb002d381d746edfa6b2fd8f":[3,0,0,0,5], -"linalg_8h.html#aa54b8d224976dca7ef384eed74f50bed":[3,0,0,0,22], -"linalg_8h.html#aace787c5b11959a457b936ace4995033":[3,0,0,0,28], -"linalg_8h.html#aae725d3247301d1163c58f89edff3d4b":[3,0,0,0,59], -"linalg_8h.html#ab346fed23fd61f02d65e09c795c26d74":[3,0,0,0,50], -"linalg_8h.html#abeb7ee58d4151498be96aa91432f296f":[3,0,0,0,10], -"linalg_8h.html#abf5918abab8f97fc2ac5887e051ff493":[3,0,0,0,67], -"linalg_8h.html#ac208d5e6849972a77ef261f2e368868c":[3,0,0,0,20], -"linalg_8h.html#ac3bb7b959d8cc7400e9b13290a895b64":[3,0,0,0,56], -"linalg_8h.html#ac54763802ad5c3966f8e14cdf93fdc96":[3,0,0,0,21], -"linalg_8h.html#ac575e10e20e9c2d8d40ed8df47179773":[3,0,0,0,37], -"linalg_8h.html#ac7b4894cd929a106e02a8e37a4d52913":[3,0,0,0,12], -"linalg_8h.html#ac9e5ee0c20bacc19d1dab1c1182525f0":[3,0,0,0,3], -"linalg_8h.html#acc25c0daa53c10ace21a61d78b2e79f3":[3,0,0,0,40], -"linalg_8h.html#ace554b62c12a5d9a2434c8171c756c47":[3,0,0,0,34], -"linalg_8h.html#ace9edf6a878ee4dd0b220b75b7db6431":[3,0,0,0,13], -"linalg_8h.html#acfbd42393c8b1931ff11bc4c7e858aef":[3,0,0,0,48], -"linalg_8h.html#ad0ee4a9c71de62911a71a342790f5070":[3,0,0,0,63], -"linalg_8h.html#ad76e25c5eb98075e83cc9df493be5b38":[3,0,0,0,27], -"linalg_8h.html#adcb07293cf47d090dfb89c20837ca7b5":[3,0,0,0,38], -"linalg_8h.html#adf4bdd1f9670b6636a55f606c5de72ea":[3,0,0,0,4], -"linalg_8h.html#ae48bdfb08cd35a8876b3dc879547686e":[3,0,0,0,2], -"linalg_8h.html#ae5a16375c14c924836c33bafa747a1cf":[3,0,0,0,18], -"linalg_8h.html#ae5ffa6e8d9c850bd41f43f7564bf6896":[3,0,0,0,44], -"linalg_8h.html#ae7d70f1ef2a2824772e1bf0f726c257e":[3,0,0,0,73], -"linalg_8h.html#aed7b29bbff1472ebe805054eb9d8c6d4":[3,0,0,0,65], -"linalg_8h.html#aefdc2e6758482d02a3aa7978f7d5efe0":[3,0,0,0,61], -"linalg_8h.html#aefefe80e13f74470d5afaf44b3a45e76":[3,0,0,0,36], -"linalg_8h.html#af19ebf41be31ee92f657131a8fbf55a3":[3,0,0,0,11], -"linalg_8h.html#af3c6f1a45aee2f275d4b109c9bb660d2":[3,0,0,0,19], -"linalg_8h.html#af7f8185c0f25ad3fb0b89cc98d77b3d6":[3,0,0,0,41], -"linalg_8h.html#af87823d73fb5a319e4262594d147e38c":[3,0,0,0,66], -"linalg_8h.html#afbffa0856d75c607a03d3dc7b5b1076e":[3,0,0,0,70], -"linalg_8h.html#afdc9b7e6ffab89915a082c00ceac7258":[3,0,0,0,52], -"linalg_8h.html#afe39765d805c1d9ae93e9aa2f20d8548":[3,0,0,0,25], -"linalg_8h_source.html":[3,0,0,0] +"linalg_8h.html#a3967bc139cba341a513d1353bea62ac9":[3,0,0,0,6] }; diff --git a/docs/html/navtreeindex1.js b/docs/html/navtreeindex1.js index 18ceddde..f92e52f0 100644 --- a/docs/html/navtreeindex1.js +++ b/docs/html/navtreeindex1.js @@ -1,27 +1,107 @@ var NAVTREEINDEX1 = { +"linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15":[3,0,0,0,51], +"linalg_8h.html#a4a3f6dafe185c2985fc76aab3d0abb97":[3,0,0,0,45], +"linalg_8h.html#a4b74177a8914b109e1bf3aa56c9d9cb7":[3,0,0,0,14], +"linalg_8h.html#a4bc671dad87b42ff285a4241322a3764":[3,0,0,0,46], +"linalg_8h.html#a4d5bad18dcc8a52d9594cc21954c572d":[3,0,0,0,16], +"linalg_8h.html#a54ee9d9ab89b88b0ca682f70bc6c3c54":[3,0,0,0,58], +"linalg_8h.html#a56c0cea99a066e74c8fff9682d5ca92d":[3,0,0,0,69], +"linalg_8h.html#a5e6786c40f8f91e5f16f06e92be71ffa":[3,0,0,0,32], +"linalg_8h.html#a62f97b4319f5574aef5e52bbacff14bb":[3,0,0,0,64], +"linalg_8h.html#a63bec2daa56fdc4bbf3f45b67ea14f65":[3,0,0,0,15], +"linalg_8h.html#a64c2c86dc85ca7aad74667f153ae0437":[3,0,0,0,0], +"linalg_8h.html#a719ffdff56c8fa0875409c4f4e5e95cf":[3,0,0,0,54], +"linalg_8h.html#a71ba1a09caca9d59a9d24b95c7ea749b":[3,0,0,0,42], +"linalg_8h.html#a73bea3ca338925cfa4a58bcaea726a14":[3,0,0,0,24], +"linalg_8h.html#a791d5221eb8ad4fcd106cb218590dfc9":[3,0,0,0,43], +"linalg_8h.html#a7a821b41c61670f5710214a4d9178998":[3,0,0,0,30], +"linalg_8h.html#a7b2048bb219e58f455175041558ac44f":[3,0,0,0,31], +"linalg_8h.html#a7f611f8f3de7d56120c78e70671c7112":[3,0,0,0,71], +"linalg_8h.html#a910a1ec23e1112487573f35765a421ca":[3,0,0,0,1], +"linalg_8h.html#a9491626ab4b3664771e1282b61eeaa74":[3,0,0,0,17], +"linalg_8h.html#a95d6ed56844c62d553b940091837014b":[3,0,0,0,29], +"linalg_8h.html#a95f921847131eaedd62a439490d2a801":[3,0,0,0,39], +"linalg_8h.html#a968b10545320af7bbe1030867ae88e8c":[3,0,0,0,35], +"linalg_8h.html#a9b0639faf9ac0af9bbdb348b92746d5f":[3,0,0,0,47], +"linalg_8h.html#aa067ac0d3f58e28371d413ab7419da74":[3,0,0,0,60], +"linalg_8h.html#aa53e764ecb002d381d746edfa6b2fd8f":[3,0,0,0,5], +"linalg_8h.html#aa54b8d224976dca7ef384eed74f50bed":[3,0,0,0,22], +"linalg_8h.html#aace787c5b11959a457b936ace4995033":[3,0,0,0,28], +"linalg_8h.html#aae725d3247301d1163c58f89edff3d4b":[3,0,0,0,59], +"linalg_8h.html#ab346fed23fd61f02d65e09c795c26d74":[3,0,0,0,50], +"linalg_8h.html#abeb7ee58d4151498be96aa91432f296f":[3,0,0,0,10], +"linalg_8h.html#abf5918abab8f97fc2ac5887e051ff493":[3,0,0,0,67], +"linalg_8h.html#ac208d5e6849972a77ef261f2e368868c":[3,0,0,0,20], +"linalg_8h.html#ac3bb7b959d8cc7400e9b13290a895b64":[3,0,0,0,56], +"linalg_8h.html#ac54763802ad5c3966f8e14cdf93fdc96":[3,0,0,0,21], +"linalg_8h.html#ac575e10e20e9c2d8d40ed8df47179773":[3,0,0,0,37], +"linalg_8h.html#ac7b4894cd929a106e02a8e37a4d52913":[3,0,0,0,12], +"linalg_8h.html#ac9e5ee0c20bacc19d1dab1c1182525f0":[3,0,0,0,3], +"linalg_8h.html#acc25c0daa53c10ace21a61d78b2e79f3":[3,0,0,0,40], +"linalg_8h.html#ace554b62c12a5d9a2434c8171c756c47":[3,0,0,0,34], +"linalg_8h.html#ace9edf6a878ee4dd0b220b75b7db6431":[3,0,0,0,13], +"linalg_8h.html#acfbd42393c8b1931ff11bc4c7e858aef":[3,0,0,0,48], +"linalg_8h.html#ad0ee4a9c71de62911a71a342790f5070":[3,0,0,0,63], +"linalg_8h.html#ad76e25c5eb98075e83cc9df493be5b38":[3,0,0,0,27], +"linalg_8h.html#adcb07293cf47d090dfb89c20837ca7b5":[3,0,0,0,38], +"linalg_8h.html#adf4bdd1f9670b6636a55f606c5de72ea":[3,0,0,0,4], +"linalg_8h.html#ae48bdfb08cd35a8876b3dc879547686e":[3,0,0,0,2], +"linalg_8h.html#ae5a16375c14c924836c33bafa747a1cf":[3,0,0,0,18], +"linalg_8h.html#ae5ffa6e8d9c850bd41f43f7564bf6896":[3,0,0,0,44], +"linalg_8h.html#ae7d70f1ef2a2824772e1bf0f726c257e":[3,0,0,0,73], +"linalg_8h.html#aed7b29bbff1472ebe805054eb9d8c6d4":[3,0,0,0,65], +"linalg_8h.html#aefdc2e6758482d02a3aa7978f7d5efe0":[3,0,0,0,61], +"linalg_8h.html#aefefe80e13f74470d5afaf44b3a45e76":[3,0,0,0,36], +"linalg_8h.html#af19ebf41be31ee92f657131a8fbf55a3":[3,0,0,0,11], +"linalg_8h.html#af3c6f1a45aee2f275d4b109c9bb660d2":[3,0,0,0,19], +"linalg_8h.html#af7f8185c0f25ad3fb0b89cc98d77b3d6":[3,0,0,0,41], +"linalg_8h.html#af87823d73fb5a319e4262594d147e38c":[3,0,0,0,66], +"linalg_8h.html#afbffa0856d75c607a03d3dc7b5b1076e":[3,0,0,0,70], +"linalg_8h.html#afdc9b7e6ffab89915a082c00ceac7258":[3,0,0,0,52], +"linalg_8h.html#afe39765d805c1d9ae93e9aa2f20d8548":[3,0,0,0,25], +"linalg_8h_source.html":[3,0,0,0], "linalg__basic_8f90_source.html":[3,0,1,3], "linalg__eigen_8f90_source.html":[3,0,1,4], "linalg__factor_8f90_source.html":[3,0,1,5], "linalg__solve_8f90_source.html":[3,0,1,6], "linalg__sorting_8f90_source.html":[3,0,1,7], +"linalg__sparse_8f90_source.html":[3,0,1,8], "namespaceblas.html":[1,0,0], "namespacelinalg.html":[1,0,1], -"namespacelinalg.html#a0e420096028b759a87f2f4f4306d202a":[1,0,1,41], -"namespacelinalg.html#a2b842a1fb17710d7ec2f117f5fdb2a59":[1,0,1,49], -"namespacelinalg.html#a4f47021e96cd813b568422a2eb3821bc":[1,0,1,43], -"namespacelinalg.html#a665d131453840e869510e9e8d2f7f151":[1,0,1,46], -"namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9":[1,0,1,39], -"namespacelinalg.html#abfb78ba61c0c2751f1c771c984469006":[1,0,1,47], -"namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7":[1,0,1,40], -"namespacelinalg.html#ace738355659bce2e9591473f0d543ef7":[1,0,1,42], -"namespacelinalg.html#ad89b9d502b7c484df53f9b10b9545776":[1,0,1,44], -"namespacelinalg.html#aefdfc0979567e89aa3b8c599d3f766f4":[1,0,1,45], -"namespacelinalg.html#af5dc9d60151bb81436b442525871c8c9":[1,0,1,48], +"namespacelinalg.html#a0e420096028b759a87f2f4f4306d202a":[1,0,1,56], +"namespacelinalg.html#a2b842a1fb17710d7ec2f117f5fdb2a59":[1,0,1,64], +"namespacelinalg.html#a4f47021e96cd813b568422a2eb3821bc":[1,0,1,58], +"namespacelinalg.html#a665d131453840e869510e9e8d2f7f151":[1,0,1,61], +"namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9":[1,0,1,54], +"namespacelinalg.html#abfb78ba61c0c2751f1c771c984469006":[1,0,1,62], +"namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7":[1,0,1,55], +"namespacelinalg.html#ace738355659bce2e9591473f0d543ef7":[1,0,1,57], +"namespacelinalg.html#ad89b9d502b7c484df53f9b10b9545776":[1,0,1,59], +"namespacelinalg.html#aefdfc0979567e89aa3b8c599d3f766f4":[1,0,1,60], +"namespacelinalg.html#af5dc9d60151bb81436b442525871c8c9":[1,0,1,63], "namespacemembers.html":[1,1,0], "namespacemembers_vars.html":[1,1,1], "namespaceqrupdate.html":[1,0,2], "namespaces.html":[1,0], +"namespacesparskit.html":[1,0,3], "pages.html":[], -"qrupdate_8f90_source.html":[3,0,1,8] +"qrupdate_8f90_source.html":[3,0,1,9], +"sparskit_8f90_source.html":[3,0,1,10], +"structlinalg_1_1csr__matrix.html":[1,0,1,7], +"structlinalg_1_1csr__matrix.html":[2,0,2,7], +"structlinalg_1_1csr__matrix.html#a1a2f379ce437fed824e6eca3627bd1de":[1,0,1,7,2], +"structlinalg_1_1csr__matrix.html#a1a2f379ce437fed824e6eca3627bd1de":[2,0,2,7,2], +"structlinalg_1_1csr__matrix.html#ab2eeae025874561c37412f1ecd8bd2cf":[1,0,1,7,0], +"structlinalg_1_1csr__matrix.html#ab2eeae025874561c37412f1ecd8bd2cf":[2,0,2,7,0], +"structlinalg_1_1csr__matrix.html#acb77b1101f32cefe10e1d15fdd87d307":[1,0,1,7,1], +"structlinalg_1_1csr__matrix.html#acb77b1101f32cefe10e1d15fdd87d307":[2,0,2,7,1], +"structlinalg_1_1csr__matrix.html#ad83ad0af16fdc69c396cce5925471bd5":[1,0,1,7,3], +"structlinalg_1_1csr__matrix.html#ad83ad0af16fdc69c396cce5925471bd5":[2,0,2,7,3], +"structlinalg_1_1msr__matrix.html":[1,0,1,19], +"structlinalg_1_1msr__matrix.html":[2,0,2,19], +"structlinalg_1_1msr__matrix.html#a123d2cb513b31589cc6bafb67c63a62a":[1,0,1,19,0], +"structlinalg_1_1msr__matrix.html#a123d2cb513b31589cc6bafb67c63a62a":[2,0,2,19,0], +"structlinalg_1_1msr__matrix.html#a8e692d3479f3562935e60b771ec91e75":[1,0,1,19,1], +"structlinalg_1_1msr__matrix.html#a8e692d3479f3562935e60b771ec91e75":[2,0,2,19,1] }; diff --git a/docs/html/qrupdate_8f90_source.html b/docs/html/qrupdate_8f90_source.html index b1356b0d..78e03e00 100644 --- a/docs/html/qrupdate_8f90_source.html +++ b/docs/html/qrupdate_8f90_source.html @@ -34,7 +34,7 @@ -
linalg 1.7.4 +
linalg 1.8.0
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js index aca5fb3e..d6dd5479 100644 --- a/docs/html/search/all_0.js +++ b/docs/html/search/all_0.js @@ -1,7 +1,6 @@ var searchData= [ - ['band_5fdiag_5fmtx_5fmult_0',['band_diag_mtx_mult',['../interfacelinalg_1_1band__diag__mtx__mult.html',1,'linalg']]], - ['band_5fmtx_5fmult_1',['band_mtx_mult',['../interfacelinalg_1_1band__mtx__mult.html',1,'linalg']]], - ['band_5fmtx_5fto_5ffull_5fmtx_2',['band_mtx_to_full_mtx',['../interfacelinalg_1_1band__mtx__to__full__mtx.html',1,'linalg']]], - ['blas_3',['blas',['../namespaceblas.html',1,'']]] + ['amub_0',['amub',['../interfacesparskit_1_1amub.html',1,'sparskit']]], + ['aplb_1',['aplb',['../interfacesparskit_1_1aplb.html',1,'sparskit']]], + ['aplsb_2',['aplsb',['../interfacesparskit_1_1aplsb.html',1,'sparskit']]] ]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js index 23e04882..9e6702ce 100644 --- a/docs/html/search/all_1.js +++ b/docs/html/search/all_1.js @@ -1,6 +1,9 @@ var searchData= [ - ['cholesky_5ffactor_0',['cholesky_factor',['../interfacelinalg_1_1cholesky__factor.html',1,'linalg']]], - ['cholesky_5frank1_5fdowndate_1',['cholesky_rank1_downdate',['../interfacelinalg_1_1cholesky__rank1__downdate.html',1,'linalg']]], - ['cholesky_5frank1_5fupdate_2',['cholesky_rank1_update',['../interfacelinalg_1_1cholesky__rank1__update.html',1,'linalg']]] + ['band_5fdiag_5fmtx_5fmult_0',['band_diag_mtx_mult',['../interfacelinalg_1_1band__diag__mtx__mult.html',1,'linalg']]], + ['band_5fmtx_5fmult_1',['band_mtx_mult',['../interfacelinalg_1_1band__mtx__mult.html',1,'linalg']]], + ['band_5fmtx_5fto_5ffull_5fmtx_2',['band_mtx_to_full_mtx',['../interfacelinalg_1_1band__mtx__to__full__mtx.html',1,'linalg']]], + ['banded_5fto_5fdense_3',['banded_to_dense',['../interfacelinalg_1_1banded__to__dense.html',1,'linalg']]], + ['blas_4',['blas',['../namespaceblas.html',1,'']]], + ['bndcsr_5',['bndcsr',['../interfacesparskit_1_1bndcsr.html',1,'sparskit']]] ]; diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 00000000..00bd9d8e --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['trace_0',['trace',['../interfacelinalg_1_1trace.html',1,'linalg']]], + ['transpose_1',['transpose',['../interfacelinalg_1_1transpose.html',1,'linalg']]], + ['tri_5fmtx_5fmult_2',['tri_mtx_mult',['../interfacelinalg_1_1tri__mtx__mult.html',1,'linalg']]] +]; diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 00000000..3f9b2fe2 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['values_0',['values',['../structlinalg_1_1csr__matrix.html#ad83ad0af16fdc69c396cce5925471bd5',1,'linalg::csr_matrix::values'],['../structlinalg_1_1msr__matrix.html#a8e692d3479f3562935e60b771ec91e75',1,'linalg::msr_matrix::values']]] +]; diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 00000000..81ee744d --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['zch1dn_0',['zch1dn',['../interfaceqrupdate_1_1zch1dn.html',1,'qrupdate']]], + ['zch1up_1',['zch1up',['../interfaceqrupdate_1_1zch1up.html',1,'qrupdate']]], + ['zdscal_2',['zdscal',['../interfaceblas_1_1zdscal.html',1,'blas']]], + ['zgbmv_3',['zgbmv',['../interfaceblas_1_1zgbmv.html',1,'blas']]], + ['zgeev_4',['zgeev',['../interfacelapack_1_1zgeev.html',1,'lapack']]], + ['zgelqf_5',['zgelqf',['../interfacelapack_1_1zgelqf.html',1,'lapack']]], + ['zgels_6',['zgels',['../interfacelapack_1_1zgels.html',1,'lapack']]], + ['zgelss_7',['zgelss',['../interfacelapack_1_1zgelss.html',1,'lapack']]], + ['zgelsy_8',['zgelsy',['../interfacelapack_1_1zgelsy.html',1,'lapack']]], + ['zgemm_9',['zgemm',['../interfaceblas_1_1zgemm.html',1,'blas']]], + ['zgemv_10',['zgemv',['../interfaceblas_1_1zgemv.html',1,'blas']]], + ['zgeqp3_11',['zgeqp3',['../interfacelapack_1_1zgeqp3.html',1,'lapack']]], + ['zgeqrf_12',['zgeqrf',['../interfacelapack_1_1zgeqrf.html',1,'lapack']]], + ['zgesvd_13',['zgesvd',['../interfacelapack_1_1zgesvd.html',1,'lapack']]], + ['zgetrf_14',['zgetrf',['../interfacelapack_1_1zgetrf.html',1,'lapack']]], + ['zgetri_15',['zgetri',['../interfacelapack_1_1zgetri.html',1,'lapack']]], + ['zgetrs_16',['zgetrs',['../interfacelapack_1_1zgetrs.html',1,'lapack']]], + ['zlaic1_17',['zlaic1',['../interfacelapack_1_1zlaic1.html',1,'lapack']]], + ['zpotrf_18',['zpotrf',['../interfacelapack_1_1zpotrf.html',1,'lapack']]], + ['zpotrs_19',['zpotrs',['../interfacelapack_1_1zpotrs.html',1,'lapack']]], + ['zqr1up_20',['zqr1up',['../interfaceqrupdate_1_1zqr1up.html',1,'qrupdate']]], + ['zscal_21',['zscal',['../interfaceblas_1_1zscal.html',1,'blas']]], + ['ztrsm_22',['ztrsm',['../interfaceblas_1_1ztrsm.html',1,'blas']]], + ['ztrsv_23',['ztrsv',['../interfaceblas_1_1ztrsv.html',1,'blas']]], + ['ztzrzf_24',['ztzrzf',['../interfacelapack_1_1ztzrzf.html',1,'lapack']]], + ['zunglq_25',['zunglq',['../interfacelapack_1_1zunglq.html',1,'lapack']]], + ['zungqr_26',['zungqr',['../interfacelapack_1_1zungqr.html',1,'lapack']]], + ['zunmlq_27',['zunmlq',['../interfacelapack_1_1zunmlq.html',1,'lapack']]], + ['zunmqr_28',['zunmqr',['../interfacelapack_1_1zunmqr.html',1,'lapack']]], + ['zunmrz_29',['zunmrz',['../interfacelapack_1_1zunmrz.html',1,'lapack']]] +]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js index 765b640d..69a7740c 100644 --- a/docs/html/search/all_2.js +++ b/docs/html/search/all_2.js @@ -1,39 +1,10 @@ var searchData= [ - ['dch1dn_0',['dch1dn',['../interfaceqrupdate_1_1dch1dn.html',1,'qrupdate']]], - ['dch1up_1',['dch1up',['../interfaceqrupdate_1_1dch1up.html',1,'qrupdate']]], - ['det_2',['det',['../interfacelinalg_1_1det.html',1,'linalg']]], - ['dgbmv_3',['dgbmv',['../interfaceblas_1_1dgbmv.html',1,'blas']]], - ['dgeev_4',['dgeev',['../interfacelapack_1_1dgeev.html',1,'lapack']]], - ['dgelqf_5',['dgelqf',['../interfacelapack_1_1dgelqf.html',1,'lapack']]], - ['dgels_6',['dgels',['../interfacelapack_1_1dgels.html',1,'lapack']]], - ['dgelss_7',['dgelss',['../interfacelapack_1_1dgelss.html',1,'lapack']]], - ['dgelsy_8',['dgelsy',['../interfacelapack_1_1dgelsy.html',1,'lapack']]], - ['dgemm_9',['dgemm',['../interfaceblas_1_1dgemm.html',1,'blas']]], - ['dgemv_10',['dgemv',['../interfaceblas_1_1dgemv.html',1,'blas']]], - ['dgeqp3_11',['dgeqp3',['../interfacelapack_1_1dgeqp3.html',1,'lapack']]], - ['dgeqrf_12',['dgeqrf',['../interfacelapack_1_1dgeqrf.html',1,'lapack']]], - ['dgesvd_13',['dgesvd',['../interfacelapack_1_1dgesvd.html',1,'lapack']]], - ['dgetrf_14',['dgetrf',['../interfacelapack_1_1dgetrf.html',1,'lapack']]], - ['dgetri_15',['dgetri',['../interfacelapack_1_1dgetri.html',1,'lapack']]], - ['dgetrs_16',['dgetrs',['../interfacelapack_1_1dgetrs.html',1,'lapack']]], - ['dggev_17',['dggev',['../interfacelapack_1_1dggev.html',1,'lapack']]], - ['diag_5fmtx_5fmult_18',['diag_mtx_mult',['../interfacelinalg_1_1diag__mtx__mult.html',1,'linalg']]], - ['dlaic1_19',['dlaic1',['../interfacelapack_1_1dlaic1.html',1,'lapack']]], - ['dlamch_20',['dlamch',['../interfacelapack_1_1dlamch.html',1,'lapack']]], - ['dlaset_21',['dlaset',['../interfacelapack_1_1dlaset.html',1,'lapack']]], - ['dlasrt_22',['dlasrt',['../interfacelapack_1_1dlasrt.html',1,'lapack']]], - ['dorglq_23',['dorglq',['../interfacelapack_1_1dorglq.html',1,'lapack']]], - ['dorgqr_24',['dorgqr',['../interfacelapack_1_1dorgqr.html',1,'lapack']]], - ['dormlq_25',['dormlq',['../interfacelapack_1_1dormlq.html',1,'lapack']]], - ['dormqr_26',['dormqr',['../interfacelapack_1_1dormqr.html',1,'lapack']]], - ['dormrz_27',['dormrz',['../interfacelapack_1_1dormrz.html',1,'lapack']]], - ['dpotrf_28',['dpotrf',['../interfacelapack_1_1dpotrf.html',1,'lapack']]], - ['dpotrs_29',['dpotrs',['../interfacelapack_1_1dpotrs.html',1,'lapack']]], - ['dqr1up_30',['dqr1up',['../interfaceqrupdate_1_1dqr1up.html',1,'qrupdate']]], - ['dscal_31',['dscal',['../interfaceblas_1_1dscal.html',1,'blas']]], - ['dsyev_32',['dsyev',['../interfacelapack_1_1dsyev.html',1,'lapack']]], - ['dtrsm_33',['dtrsm',['../interfaceblas_1_1dtrsm.html',1,'blas']]], - ['dtrsv_34',['dtrsv',['../interfaceblas_1_1dtrsv.html',1,'blas']]], - ['dtzrzf_35',['dtzrzf',['../interfacelapack_1_1dtzrzf.html',1,'lapack']]] + ['cholesky_5ffactor_0',['cholesky_factor',['../interfacelinalg_1_1cholesky__factor.html',1,'linalg']]], + ['cholesky_5frank1_5fdowndate_1',['cholesky_rank1_downdate',['../interfacelinalg_1_1cholesky__rank1__downdate.html',1,'linalg']]], + ['cholesky_5frank1_5fupdate_2',['cholesky_rank1_update',['../interfacelinalg_1_1cholesky__rank1__update.html',1,'linalg']]], + ['column_5findices_3',['column_indices',['../structlinalg_1_1csr__matrix.html#acb77b1101f32cefe10e1d15fdd87d307',1,'linalg::csr_matrix']]], + ['csr_5fmatrix_4',['csr_matrix',['../structlinalg_1_1csr__matrix.html',1,'linalg']]], + ['csrcsc2_5',['csrcsc2',['../interfacesparskit_1_1csrcsc2.html',1,'sparskit']]], + ['csrmsr_6',['csrmsr',['../interfacesparskit_1_1csrmsr.html',1,'sparskit']]] ]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js index 66cad2be..13834bf8 100644 --- a/docs/html/search/all_3.js +++ b/docs/html/search/all_3.js @@ -1,4 +1,41 @@ var searchData= [ - ['eigen_0',['eigen',['../interfacelinalg_1_1eigen.html',1,'linalg']]] + ['dch1dn_0',['dch1dn',['../interfaceqrupdate_1_1dch1dn.html',1,'qrupdate']]], + ['dch1up_1',['dch1up',['../interfaceqrupdate_1_1dch1up.html',1,'qrupdate']]], + ['ddot_2',['ddot',['../interfaceblas_1_1ddot.html',1,'blas']]], + ['dense_5fto_5fbanded_3',['dense_to_banded',['../interfacelinalg_1_1dense__to__banded.html',1,'linalg']]], + ['det_4',['det',['../interfacelinalg_1_1det.html',1,'linalg']]], + ['dgbmv_5',['dgbmv',['../interfaceblas_1_1dgbmv.html',1,'blas']]], + ['dgeev_6',['dgeev',['../interfacelapack_1_1dgeev.html',1,'lapack']]], + ['dgelqf_7',['dgelqf',['../interfacelapack_1_1dgelqf.html',1,'lapack']]], + ['dgels_8',['dgels',['../interfacelapack_1_1dgels.html',1,'lapack']]], + ['dgelss_9',['dgelss',['../interfacelapack_1_1dgelss.html',1,'lapack']]], + ['dgelsy_10',['dgelsy',['../interfacelapack_1_1dgelsy.html',1,'lapack']]], + ['dgemm_11',['dgemm',['../interfaceblas_1_1dgemm.html',1,'blas']]], + ['dgemv_12',['dgemv',['../interfaceblas_1_1dgemv.html',1,'blas']]], + ['dgeqp3_13',['dgeqp3',['../interfacelapack_1_1dgeqp3.html',1,'lapack']]], + ['dgeqrf_14',['dgeqrf',['../interfacelapack_1_1dgeqrf.html',1,'lapack']]], + ['dgesvd_15',['dgesvd',['../interfacelapack_1_1dgesvd.html',1,'lapack']]], + ['dgetrf_16',['dgetrf',['../interfacelapack_1_1dgetrf.html',1,'lapack']]], + ['dgetri_17',['dgetri',['../interfacelapack_1_1dgetri.html',1,'lapack']]], + ['dgetrs_18',['dgetrs',['../interfacelapack_1_1dgetrs.html',1,'lapack']]], + ['dggev_19',['dggev',['../interfacelapack_1_1dggev.html',1,'lapack']]], + ['diag_5fmtx_5fmult_20',['diag_mtx_mult',['../interfacelinalg_1_1diag__mtx__mult.html',1,'linalg']]], + ['dlaic1_21',['dlaic1',['../interfacelapack_1_1dlaic1.html',1,'lapack']]], + ['dlamch_22',['dlamch',['../interfacelapack_1_1dlamch.html',1,'lapack']]], + ['dlaset_23',['dlaset',['../interfacelapack_1_1dlaset.html',1,'lapack']]], + ['dlasrt_24',['dlasrt',['../interfacelapack_1_1dlasrt.html',1,'lapack']]], + ['dorglq_25',['dorglq',['../interfacelapack_1_1dorglq.html',1,'lapack']]], + ['dorgqr_26',['dorgqr',['../interfacelapack_1_1dorgqr.html',1,'lapack']]], + ['dormlq_27',['dormlq',['../interfacelapack_1_1dormlq.html',1,'lapack']]], + ['dormqr_28',['dormqr',['../interfacelapack_1_1dormqr.html',1,'lapack']]], + ['dormrz_29',['dormrz',['../interfacelapack_1_1dormrz.html',1,'lapack']]], + ['dpotrf_30',['dpotrf',['../interfacelapack_1_1dpotrf.html',1,'lapack']]], + ['dpotrs_31',['dpotrs',['../interfacelapack_1_1dpotrs.html',1,'lapack']]], + ['dqr1up_32',['dqr1up',['../interfaceqrupdate_1_1dqr1up.html',1,'qrupdate']]], + ['dscal_33',['dscal',['../interfaceblas_1_1dscal.html',1,'blas']]], + ['dsyev_34',['dsyev',['../interfacelapack_1_1dsyev.html',1,'lapack']]], + ['dtrsm_35',['dtrsm',['../interfaceblas_1_1dtrsm.html',1,'blas']]], + ['dtrsv_36',['dtrsv',['../interfaceblas_1_1dtrsv.html',1,'blas']]], + ['dtzrzf_37',['dtzrzf',['../interfacelapack_1_1dtzrzf.html',1,'lapack']]] ]; diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js index 6ac0a6ce..86cebc64 100644 --- a/docs/html/search/all_4.js +++ b/docs/html/search/all_4.js @@ -1,6 +1,5 @@ var searchData= [ - ['form_5flq_0',['form_lq',['../interfacelinalg_1_1form__lq.html',1,'linalg']]], - ['form_5flu_1',['form_lu',['../interfacelinalg_1_1form__lu.html',1,'linalg']]], - ['form_5fqr_2',['form_qr',['../interfacelinalg_1_1form__qr.html',1,'linalg']]] + ['eigen_0',['eigen',['../interfacelinalg_1_1eigen.html',1,'linalg']]], + ['extract_5fdiagonal_1',['extract_diagonal',['../interfacelinalg_1_1extract__diagonal.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js index b4ce945e..6ac0a6ce 100644 --- a/docs/html/search/all_5.js +++ b/docs/html/search/all_5.js @@ -1,4 +1,6 @@ var searchData= [ - ['introduction_0',['Introduction',['../index.html#intro_sec',1,'']]] + ['form_5flq_0',['form_lq',['../interfacelinalg_1_1form__lq.html',1,'linalg']]], + ['form_5flu_1',['form_lu',['../interfacelinalg_1_1form__lu.html',1,'linalg']]], + ['form_5fqr_2',['form_qr',['../interfacelinalg_1_1form__qr.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js index b2ba6022..54d7c6d8 100644 --- a/docs/html/search/all_6.js +++ b/docs/html/search/all_6.js @@ -1,93 +1,6 @@ var searchData= [ - ['la_5farray_5fsize_5ferror_0',['la_array_size_error',['../namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9',1,'linalg']]], - ['la_5fband_5fdiag_5fmtx_5fmult_1',['la_band_diag_mtx_mult',['../linalg_8h.html#a64c2c86dc85ca7aad74667f153ae0437',1,'linalg.h']]], - ['la_5fband_5fdiag_5fmtx_5fmult_5fcmplx_2',['la_band_diag_mtx_mult_cmplx',['../linalg_8h.html#a910a1ec23e1112487573f35765a421ca',1,'linalg.h']]], - ['la_5fband_5fmtx_5fvec_5fmult_3',['la_band_mtx_vec_mult',['../linalg_8h.html#ae48bdfb08cd35a8876b3dc879547686e',1,'linalg.h']]], - ['la_5fband_5fmtx_5fvec_5fmult_5fcmplx_4',['la_band_mtx_vec_mult_cmplx',['../linalg_8h.html#ac9e5ee0c20bacc19d1dab1c1182525f0',1,'linalg.h']]], - ['la_5fband_5fto_5ffull_5fmtx_5',['la_band_to_full_mtx',['../linalg_8h.html#adf4bdd1f9670b6636a55f606c5de72ea',1,'linalg.h']]], - ['la_5fband_5fto_5ffull_5fmtx_5fcmplx_6',['la_band_to_full_mtx_cmplx',['../linalg_8h.html#aa53e764ecb002d381d746edfa6b2fd8f',1,'linalg.h']]], - ['la_5fcholesky_5ffactor_7',['la_cholesky_factor',['../linalg_8h.html#a3967bc139cba341a513d1353bea62ac9',1,'linalg.h']]], - ['la_5fcholesky_5ffactor_5fcmplx_8',['la_cholesky_factor_cmplx',['../linalg_8h.html#a1734acc61ef569dfff9c83bcad566f67',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fdowndate_9',['la_cholesky_rank1_downdate',['../linalg_8h.html#a292e54c48a8e7f0203bf11f02844691f',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fdowndate_5fcmplx_10',['la_cholesky_rank1_downdate_cmplx',['../linalg_8h.html#a00c15ec713541d15eae1fd0b01897689',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fupdate_11',['la_cholesky_rank1_update',['../linalg_8h.html#abeb7ee58d4151498be96aa91432f296f',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fupdate_5fcmplx_12',['la_cholesky_rank1_update_cmplx',['../linalg_8h.html#af19ebf41be31ee92f657131a8fbf55a3',1,'linalg.h']]], - ['la_5fconvergence_5ferror_13',['la_convergence_error',['../namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7',1,'linalg']]], - ['la_5fdet_14',['la_det',['../linalg_8h.html#ac7b4894cd929a106e02a8e37a4d52913',1,'linalg.h']]], - ['la_5fdet_5fcmplx_15',['la_det_cmplx',['../linalg_8h.html#ace9edf6a878ee4dd0b220b75b7db6431',1,'linalg.h']]], - ['la_5fdiag_5fmtx_5fmult_16',['la_diag_mtx_mult',['../linalg_8h.html#a4b74177a8914b109e1bf3aa56c9d9cb7',1,'linalg.h']]], - ['la_5fdiag_5fmtx_5fmult_5fcmplx_17',['la_diag_mtx_mult_cmplx',['../linalg_8h.html#a63bec2daa56fdc4bbf3f45b67ea14f65',1,'linalg.h']]], - ['la_5fdiag_5fmtx_5fmult_5fmixed_18',['la_diag_mtx_mult_mixed',['../linalg_8h.html#a4d5bad18dcc8a52d9594cc21954c572d',1,'linalg.h']]], - ['la_5feigen_5fasymm_19',['la_eigen_asymm',['../linalg_8h.html#a9491626ab4b3664771e1282b61eeaa74',1,'linalg.h']]], - ['la_5feigen_5fcmplx_20',['la_eigen_cmplx',['../linalg_8h.html#ae5a16375c14c924836c33bafa747a1cf',1,'linalg.h']]], - ['la_5feigen_5fgen_21',['la_eigen_gen',['../linalg_8h.html#af3c6f1a45aee2f275d4b109c9bb660d2',1,'linalg.h']]], - ['la_5feigen_5fsymm_22',['la_eigen_symm',['../linalg_8h.html#ac208d5e6849972a77ef261f2e368868c',1,'linalg.h']]], - ['la_5fform_5flq_23',['la_form_lq',['../linalg_8h.html#ac54763802ad5c3966f8e14cdf93fdc96',1,'linalg.h']]], - ['la_5fform_5flq_5fcmplx_24',['la_form_lq_cmplx',['../linalg_8h.html#aa54b8d224976dca7ef384eed74f50bed',1,'linalg.h']]], - ['la_5fform_5flu_25',['la_form_lu',['../linalg_8h.html#a15774f6323c34d307c99b32ac4f188a7',1,'linalg.h']]], - ['la_5fform_5flu_5fcmplx_26',['la_form_lu_cmplx',['../linalg_8h.html#a73bea3ca338925cfa4a58bcaea726a14',1,'linalg.h']]], - ['la_5fform_5fqr_27',['la_form_qr',['../linalg_8h.html#afe39765d805c1d9ae93e9aa2f20d8548',1,'linalg.h']]], - ['la_5fform_5fqr_5fcmplx_28',['la_form_qr_cmplx',['../linalg_8h.html#a0338870fe1142f88c96db63495fec615',1,'linalg.h']]], - ['la_5fform_5fqr_5fcmplx_5fpvt_29',['la_form_qr_cmplx_pvt',['../linalg_8h.html#ad76e25c5eb98075e83cc9df493be5b38',1,'linalg.h']]], - ['la_5fform_5fqr_5fpvt_30',['la_form_qr_pvt',['../linalg_8h.html#aace787c5b11959a457b936ace4995033',1,'linalg.h']]], - ['la_5fhermitian_5ftranspose_31',['la_hermitian_transpose',['../namespacelinalg.html#a0e420096028b759a87f2f4f4306d202a',1,'linalg']]], - ['la_5finvalid_5finput_5ferror_32',['la_invalid_input_error',['../namespacelinalg.html#ace738355659bce2e9591473f0d543ef7',1,'linalg']]], - ['la_5finvalid_5foperation_5ferror_33',['la_invalid_operation_error',['../namespacelinalg.html#a4f47021e96cd813b568422a2eb3821bc',1,'linalg']]], - ['la_5finverse_34',['la_inverse',['../linalg_8h.html#a95d6ed56844c62d553b940091837014b',1,'linalg.h']]], - ['la_5finverse_5fcmplx_35',['la_inverse_cmplx',['../linalg_8h.html#a7a821b41c61670f5710214a4d9178998',1,'linalg.h']]], - ['la_5flq_5ffactor_36',['la_lq_factor',['../linalg_8h.html#a7b2048bb219e58f455175041558ac44f',1,'linalg.h']]], - ['la_5flq_5ffactor_5fcmplx_37',['la_lq_factor_cmplx',['../linalg_8h.html#a5e6786c40f8f91e5f16f06e92be71ffa',1,'linalg.h']]], - ['la_5flu_5ffactor_38',['la_lu_factor',['../linalg_8h.html#a248142a5f0826cddac5daf1c74f234a6',1,'linalg.h']]], - ['la_5flu_5ffactor_5fcmplx_39',['la_lu_factor_cmplx',['../linalg_8h.html#ace554b62c12a5d9a2434c8171c756c47',1,'linalg.h']]], - ['la_5fmatrix_5fformat_5ferror_40',['la_matrix_format_error',['../namespacelinalg.html#ad89b9d502b7c484df53f9b10b9545776',1,'linalg']]], - ['la_5fmtx_5fmult_41',['la_mtx_mult',['../linalg_8h.html#a968b10545320af7bbe1030867ae88e8c',1,'linalg.h']]], - ['la_5fmtx_5fmult_5fcmplx_42',['la_mtx_mult_cmplx',['../linalg_8h.html#aefefe80e13f74470d5afaf44b3a45e76',1,'linalg.h']]], - ['la_5fmult_5flq_43',['la_mult_lq',['../linalg_8h.html#ac575e10e20e9c2d8d40ed8df47179773',1,'linalg.h']]], - ['la_5fmult_5flq_5fcmplx_44',['la_mult_lq_cmplx',['../linalg_8h.html#adcb07293cf47d090dfb89c20837ca7b5',1,'linalg.h']]], - ['la_5fmult_5fqr_45',['la_mult_qr',['../linalg_8h.html#a95f921847131eaedd62a439490d2a801',1,'linalg.h']]], - ['la_5fmult_5fqr_5fcmplx_46',['la_mult_qr_cmplx',['../linalg_8h.html#acc25c0daa53c10ace21a61d78b2e79f3',1,'linalg.h']]], - ['la_5fno_5ferror_47',['la_no_error',['../namespacelinalg.html#aefdfc0979567e89aa3b8c599d3f766f4',1,'linalg']]], - ['la_5fno_5foperation_48',['la_no_operation',['../namespacelinalg.html#a665d131453840e869510e9e8d2f7f151',1,'linalg']]], - ['la_5fout_5fof_5fmemory_5ferror_49',['la_out_of_memory_error',['../namespacelinalg.html#abfb78ba61c0c2751f1c771c984469006',1,'linalg']]], - ['la_5fpinverse_50',['la_pinverse',['../linalg_8h.html#af7f8185c0f25ad3fb0b89cc98d77b3d6',1,'linalg.h']]], - ['la_5fpinverse_5fcmplx_51',['la_pinverse_cmplx',['../linalg_8h.html#a71ba1a09caca9d59a9d24b95c7ea749b',1,'linalg.h']]], - ['la_5fqr_5ffactor_52',['la_qr_factor',['../linalg_8h.html#a791d5221eb8ad4fcd106cb218590dfc9',1,'linalg.h']]], - ['la_5fqr_5ffactor_5fcmplx_53',['la_qr_factor_cmplx',['../linalg_8h.html#ae5ffa6e8d9c850bd41f43f7564bf6896',1,'linalg.h']]], - ['la_5fqr_5ffactor_5fcmplx_5fpvt_54',['la_qr_factor_cmplx_pvt',['../linalg_8h.html#a4a3f6dafe185c2985fc76aab3d0abb97',1,'linalg.h']]], - ['la_5fqr_5ffactor_5fpvt_55',['la_qr_factor_pvt',['../linalg_8h.html#a4bc671dad87b42ff285a4241322a3764',1,'linalg.h']]], - ['la_5fqr_5frank1_5fupdate_56',['la_qr_rank1_update',['../linalg_8h.html#a9b0639faf9ac0af9bbdb348b92746d5f',1,'linalg.h']]], - ['la_5fqr_5frank1_5fupdate_5fcmplx_57',['la_qr_rank1_update_cmplx',['../linalg_8h.html#acfbd42393c8b1931ff11bc4c7e858aef',1,'linalg.h']]], - ['la_5frank_58',['la_rank',['../linalg_8h.html#a089690d293303e30c6eef0bb1e982191',1,'linalg.h']]], - ['la_5frank1_5fupdate_59',['la_rank1_update',['../linalg_8h.html#ab346fed23fd61f02d65e09c795c26d74',1,'linalg.h']]], - ['la_5frank1_5fupdate_5fcmplx_60',['la_rank1_update_cmplx',['../linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15',1,'linalg.h']]], - ['la_5frank_5fcmplx_61',['la_rank_cmplx',['../linalg_8h.html#afdc9b7e6ffab89915a082c00ceac7258',1,'linalg.h']]], - ['la_5fsingular_5fmatrix_5ferror_62',['la_singular_matrix_error',['../namespacelinalg.html#af5dc9d60151bb81436b442525871c8c9',1,'linalg']]], - ['la_5fsolve_5fcholesky_63',['la_solve_cholesky',['../linalg_8h.html#a0dc578507a0cb6ada776142476383590',1,'linalg.h']]], - ['la_5fsolve_5fcholesky_5fcmplx_64',['la_solve_cholesky_cmplx',['../linalg_8h.html#a719ffdff56c8fa0875409c4f4e5e95cf',1,'linalg.h']]], - ['la_5fsolve_5fleast_5fsquares_65',['la_solve_least_squares',['../linalg_8h.html#a02eb049983dd41f2307bb52594fb210e',1,'linalg.h']]], - ['la_5fsolve_5fleast_5fsquares_5fcmplx_66',['la_solve_least_squares_cmplx',['../linalg_8h.html#ac3bb7b959d8cc7400e9b13290a895b64',1,'linalg.h']]], - ['la_5fsolve_5flq_67',['la_solve_lq',['../linalg_8h.html#a2c485d619c24435be713cf4356285e9a',1,'linalg.h']]], - ['la_5fsolve_5flq_5fcmplx_68',['la_solve_lq_cmplx',['../linalg_8h.html#a54ee9d9ab89b88b0ca682f70bc6c3c54',1,'linalg.h']]], - ['la_5fsolve_5flu_69',['la_solve_lu',['../linalg_8h.html#aae725d3247301d1163c58f89edff3d4b',1,'linalg.h']]], - ['la_5fsolve_5flu_5fcmplx_70',['la_solve_lu_cmplx',['../linalg_8h.html#aa067ac0d3f58e28371d413ab7419da74',1,'linalg.h']]], - ['la_5fsolve_5fqr_71',['la_solve_qr',['../linalg_8h.html#aefdc2e6758482d02a3aa7978f7d5efe0',1,'linalg.h']]], - ['la_5fsolve_5fqr_5fcmplx_72',['la_solve_qr_cmplx',['../linalg_8h.html#a0ff5f2519eb1d2af94e3b4a26dfb10fe',1,'linalg.h']]], - ['la_5fsolve_5fqr_5fcmplx_5fpvt_73',['la_solve_qr_cmplx_pvt',['../linalg_8h.html#ad0ee4a9c71de62911a71a342790f5070',1,'linalg.h']]], - ['la_5fsolve_5fqr_5fpvt_74',['la_solve_qr_pvt',['../linalg_8h.html#a62f97b4319f5574aef5e52bbacff14bb',1,'linalg.h']]], - ['la_5fsolve_5ftri_5fmtx_75',['la_solve_tri_mtx',['../linalg_8h.html#aed7b29bbff1472ebe805054eb9d8c6d4',1,'linalg.h']]], - ['la_5fsolve_5ftri_5fmtx_5fcmplx_76',['la_solve_tri_mtx_cmplx',['../linalg_8h.html#af87823d73fb5a319e4262594d147e38c',1,'linalg.h']]], - ['la_5fsort_5feigen_77',['la_sort_eigen',['../linalg_8h.html#abf5918abab8f97fc2ac5887e051ff493',1,'linalg.h']]], - ['la_5fsort_5feigen_5fcmplx_78',['la_sort_eigen_cmplx',['../linalg_8h.html#a090178a5f99a4b400da80481aad77757',1,'linalg.h']]], - ['la_5fsvd_79',['la_svd',['../linalg_8h.html#a56c0cea99a066e74c8fff9682d5ca92d',1,'linalg.h']]], - ['la_5fsvd_5fcmplx_80',['la_svd_cmplx',['../linalg_8h.html#afbffa0856d75c607a03d3dc7b5b1076e',1,'linalg.h']]], - ['la_5ftrace_81',['la_trace',['../linalg_8h.html#a7f611f8f3de7d56120c78e70671c7112',1,'linalg.h']]], - ['la_5ftrace_5fcmplx_82',['la_trace_cmplx',['../linalg_8h.html#a021fbb7fdccf557ec407a86bace43d85',1,'linalg.h']]], - ['la_5ftranspose_83',['la_transpose',['../namespacelinalg.html#a2b842a1fb17710d7ec2f117f5fdb2a59',1,'linalg']]], - ['la_5ftri_5fmtx_5fmult_84',['la_tri_mtx_mult',['../linalg_8h.html#ae7d70f1ef2a2824772e1bf0f726c257e',1,'linalg.h']]], - ['la_5ftri_5fmtx_5fmult_5fcmplx_85',['la_tri_mtx_mult_cmplx',['../linalg_8h.html#a02c464a9dd95298c91f431ae4d0773e9',1,'linalg.h']]], - ['linalg_86',['linalg',['../namespacelinalg.html',1,'linalg'],['../index.html',1,'linalg']]], - ['linalg_2eh_87',['linalg.h',['../linalg_8h.html',1,'']]], - ['lq_5ffactor_88',['lq_factor',['../interfacelinalg_1_1lq__factor.html',1,'linalg']]], - ['lu_5ffactor_89',['lu_factor',['../interfacelinalg_1_1lu__factor.html',1,'linalg']]] + ['get_0',['get',['../structlinalg_1_1csr__matrix.html#ab2eeae025874561c37412f1ecd8bd2cf',1,'linalg::csr_matrix']]], + ['getdia_1',['getdia',['../interfacesparskit_1_1getdia.html',1,'sparskit']]], + ['getelm_2',['getelm',['../interfacesparskit_1_1getelm.html',1,'sparskit']]] ]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js index abc272a4..91a25847 100644 --- a/docs/html/search/all_7.js +++ b/docs/html/search/all_7.js @@ -1,10 +1,9 @@ var searchData= [ - ['mtx_5finverse_0',['mtx_inverse',['../interfacelinalg_1_1mtx__inverse.html',1,'linalg']]], - ['mtx_5fmult_1',['mtx_mult',['../interfacelinalg_1_1mtx__mult.html',1,'linalg']]], - ['mtx_5fpinverse_2',['mtx_pinverse',['../interfacelinalg_1_1mtx__pinverse.html',1,'linalg']]], - ['mtx_5frank_3',['mtx_rank',['../interfacelinalg_1_1mtx__rank.html',1,'linalg']]], - ['mult_5flq_4',['mult_lq',['../interfacelinalg_1_1mult__lq.html',1,'linalg']]], - ['mult_5fqr_5',['mult_qr',['../interfacelinalg_1_1mult__qr.html',1,'linalg']]], - ['mult_5frz_6',['mult_rz',['../interfacelinalg_1_1mult__rz.html',1,'linalg']]] + ['ilud_0',['ilud',['../interfacesparskit_1_1ilud.html',1,'sparskit']]], + ['iludp_1',['iludp',['../interfacesparskit_1_1iludp.html',1,'sparskit']]], + ['ilut_2',['ilut',['../interfacesparskit_1_1ilut.html',1,'sparskit']]], + ['ilutp_3',['ilutp',['../interfacesparskit_1_1ilutp.html',1,'sparskit']]], + ['indices_4',['indices',['../structlinalg_1_1msr__matrix.html#a123d2cb513b31589cc6bafb67c63a62a',1,'linalg::msr_matrix']]], + ['introduction_5',['Introduction',['../index.html#intro_sec',1,'']]] ]; diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js index 0cd9fce4..37b36d34 100644 --- a/docs/html/search/all_8.js +++ b/docs/html/search/all_8.js @@ -1,6 +1,94 @@ var searchData= [ - ['qr_5ffactor_0',['qr_factor',['../interfacelinalg_1_1qr__factor.html',1,'linalg']]], - ['qr_5frank1_5fupdate_1',['qr_rank1_update',['../interfacelinalg_1_1qr__rank1__update.html',1,'linalg']]], - ['qrupdate_2',['qrupdate',['../namespaceqrupdate.html',1,'']]] + ['la_5farray_5fsize_5ferror_0',['la_array_size_error',['../namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9',1,'linalg']]], + ['la_5fband_5fdiag_5fmtx_5fmult_1',['la_band_diag_mtx_mult',['../linalg_8h.html#a64c2c86dc85ca7aad74667f153ae0437',1,'linalg.h']]], + ['la_5fband_5fdiag_5fmtx_5fmult_5fcmplx_2',['la_band_diag_mtx_mult_cmplx',['../linalg_8h.html#a910a1ec23e1112487573f35765a421ca',1,'linalg.h']]], + ['la_5fband_5fmtx_5fvec_5fmult_3',['la_band_mtx_vec_mult',['../linalg_8h.html#ae48bdfb08cd35a8876b3dc879547686e',1,'linalg.h']]], + ['la_5fband_5fmtx_5fvec_5fmult_5fcmplx_4',['la_band_mtx_vec_mult_cmplx',['../linalg_8h.html#ac9e5ee0c20bacc19d1dab1c1182525f0',1,'linalg.h']]], + ['la_5fband_5fto_5ffull_5fmtx_5',['la_band_to_full_mtx',['../linalg_8h.html#adf4bdd1f9670b6636a55f606c5de72ea',1,'linalg.h']]], + ['la_5fband_5fto_5ffull_5fmtx_5fcmplx_6',['la_band_to_full_mtx_cmplx',['../linalg_8h.html#aa53e764ecb002d381d746edfa6b2fd8f',1,'linalg.h']]], + ['la_5fcholesky_5ffactor_7',['la_cholesky_factor',['../linalg_8h.html#a3967bc139cba341a513d1353bea62ac9',1,'linalg.h']]], + ['la_5fcholesky_5ffactor_5fcmplx_8',['la_cholesky_factor_cmplx',['../linalg_8h.html#a1734acc61ef569dfff9c83bcad566f67',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fdowndate_9',['la_cholesky_rank1_downdate',['../linalg_8h.html#a292e54c48a8e7f0203bf11f02844691f',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fdowndate_5fcmplx_10',['la_cholesky_rank1_downdate_cmplx',['../linalg_8h.html#a00c15ec713541d15eae1fd0b01897689',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fupdate_11',['la_cholesky_rank1_update',['../linalg_8h.html#abeb7ee58d4151498be96aa91432f296f',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fupdate_5fcmplx_12',['la_cholesky_rank1_update_cmplx',['../linalg_8h.html#af19ebf41be31ee92f657131a8fbf55a3',1,'linalg.h']]], + ['la_5fconvergence_5ferror_13',['la_convergence_error',['../namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7',1,'linalg']]], + ['la_5fdet_14',['la_det',['../linalg_8h.html#ac7b4894cd929a106e02a8e37a4d52913',1,'linalg.h']]], + ['la_5fdet_5fcmplx_15',['la_det_cmplx',['../linalg_8h.html#ace9edf6a878ee4dd0b220b75b7db6431',1,'linalg.h']]], + ['la_5fdiag_5fmtx_5fmult_16',['la_diag_mtx_mult',['../linalg_8h.html#a4b74177a8914b109e1bf3aa56c9d9cb7',1,'linalg.h']]], + ['la_5fdiag_5fmtx_5fmult_5fcmplx_17',['la_diag_mtx_mult_cmplx',['../linalg_8h.html#a63bec2daa56fdc4bbf3f45b67ea14f65',1,'linalg.h']]], + ['la_5fdiag_5fmtx_5fmult_5fmixed_18',['la_diag_mtx_mult_mixed',['../linalg_8h.html#a4d5bad18dcc8a52d9594cc21954c572d',1,'linalg.h']]], + ['la_5feigen_5fasymm_19',['la_eigen_asymm',['../linalg_8h.html#a9491626ab4b3664771e1282b61eeaa74',1,'linalg.h']]], + ['la_5feigen_5fcmplx_20',['la_eigen_cmplx',['../linalg_8h.html#ae5a16375c14c924836c33bafa747a1cf',1,'linalg.h']]], + ['la_5feigen_5fgen_21',['la_eigen_gen',['../linalg_8h.html#af3c6f1a45aee2f275d4b109c9bb660d2',1,'linalg.h']]], + ['la_5feigen_5fsymm_22',['la_eigen_symm',['../linalg_8h.html#ac208d5e6849972a77ef261f2e368868c',1,'linalg.h']]], + ['la_5fform_5flq_23',['la_form_lq',['../linalg_8h.html#ac54763802ad5c3966f8e14cdf93fdc96',1,'linalg.h']]], + ['la_5fform_5flq_5fcmplx_24',['la_form_lq_cmplx',['../linalg_8h.html#aa54b8d224976dca7ef384eed74f50bed',1,'linalg.h']]], + ['la_5fform_5flu_25',['la_form_lu',['../linalg_8h.html#a15774f6323c34d307c99b32ac4f188a7',1,'linalg.h']]], + ['la_5fform_5flu_5fcmplx_26',['la_form_lu_cmplx',['../linalg_8h.html#a73bea3ca338925cfa4a58bcaea726a14',1,'linalg.h']]], + ['la_5fform_5fqr_27',['la_form_qr',['../linalg_8h.html#afe39765d805c1d9ae93e9aa2f20d8548',1,'linalg.h']]], + ['la_5fform_5fqr_5fcmplx_28',['la_form_qr_cmplx',['../linalg_8h.html#a0338870fe1142f88c96db63495fec615',1,'linalg.h']]], + ['la_5fform_5fqr_5fcmplx_5fpvt_29',['la_form_qr_cmplx_pvt',['../linalg_8h.html#ad76e25c5eb98075e83cc9df493be5b38',1,'linalg.h']]], + ['la_5fform_5fqr_5fpvt_30',['la_form_qr_pvt',['../linalg_8h.html#aace787c5b11959a457b936ace4995033',1,'linalg.h']]], + ['la_5fhermitian_5ftranspose_31',['la_hermitian_transpose',['../namespacelinalg.html#a0e420096028b759a87f2f4f4306d202a',1,'linalg']]], + ['la_5finvalid_5finput_5ferror_32',['la_invalid_input_error',['../namespacelinalg.html#ace738355659bce2e9591473f0d543ef7',1,'linalg']]], + ['la_5finvalid_5foperation_5ferror_33',['la_invalid_operation_error',['../namespacelinalg.html#a4f47021e96cd813b568422a2eb3821bc',1,'linalg']]], + ['la_5finverse_34',['la_inverse',['../linalg_8h.html#a95d6ed56844c62d553b940091837014b',1,'linalg.h']]], + ['la_5finverse_5fcmplx_35',['la_inverse_cmplx',['../linalg_8h.html#a7a821b41c61670f5710214a4d9178998',1,'linalg.h']]], + ['la_5flq_5ffactor_36',['la_lq_factor',['../linalg_8h.html#a7b2048bb219e58f455175041558ac44f',1,'linalg.h']]], + ['la_5flq_5ffactor_5fcmplx_37',['la_lq_factor_cmplx',['../linalg_8h.html#a5e6786c40f8f91e5f16f06e92be71ffa',1,'linalg.h']]], + ['la_5flu_5ffactor_38',['la_lu_factor',['../linalg_8h.html#a248142a5f0826cddac5daf1c74f234a6',1,'linalg.h']]], + ['la_5flu_5ffactor_5fcmplx_39',['la_lu_factor_cmplx',['../linalg_8h.html#ace554b62c12a5d9a2434c8171c756c47',1,'linalg.h']]], + ['la_5fmatrix_5fformat_5ferror_40',['la_matrix_format_error',['../namespacelinalg.html#ad89b9d502b7c484df53f9b10b9545776',1,'linalg']]], + ['la_5fmtx_5fmult_41',['la_mtx_mult',['../linalg_8h.html#a968b10545320af7bbe1030867ae88e8c',1,'linalg.h']]], + ['la_5fmtx_5fmult_5fcmplx_42',['la_mtx_mult_cmplx',['../linalg_8h.html#aefefe80e13f74470d5afaf44b3a45e76',1,'linalg.h']]], + ['la_5fmult_5flq_43',['la_mult_lq',['../linalg_8h.html#ac575e10e20e9c2d8d40ed8df47179773',1,'linalg.h']]], + ['la_5fmult_5flq_5fcmplx_44',['la_mult_lq_cmplx',['../linalg_8h.html#adcb07293cf47d090dfb89c20837ca7b5',1,'linalg.h']]], + ['la_5fmult_5fqr_45',['la_mult_qr',['../linalg_8h.html#a95f921847131eaedd62a439490d2a801',1,'linalg.h']]], + ['la_5fmult_5fqr_5fcmplx_46',['la_mult_qr_cmplx',['../linalg_8h.html#acc25c0daa53c10ace21a61d78b2e79f3',1,'linalg.h']]], + ['la_5fno_5ferror_47',['la_no_error',['../namespacelinalg.html#aefdfc0979567e89aa3b8c599d3f766f4',1,'linalg']]], + ['la_5fno_5foperation_48',['la_no_operation',['../namespacelinalg.html#a665d131453840e869510e9e8d2f7f151',1,'linalg']]], + ['la_5fout_5fof_5fmemory_5ferror_49',['la_out_of_memory_error',['../namespacelinalg.html#abfb78ba61c0c2751f1c771c984469006',1,'linalg']]], + ['la_5fpinverse_50',['la_pinverse',['../linalg_8h.html#af7f8185c0f25ad3fb0b89cc98d77b3d6',1,'linalg.h']]], + ['la_5fpinverse_5fcmplx_51',['la_pinverse_cmplx',['../linalg_8h.html#a71ba1a09caca9d59a9d24b95c7ea749b',1,'linalg.h']]], + ['la_5fqr_5ffactor_52',['la_qr_factor',['../linalg_8h.html#a791d5221eb8ad4fcd106cb218590dfc9',1,'linalg.h']]], + ['la_5fqr_5ffactor_5fcmplx_53',['la_qr_factor_cmplx',['../linalg_8h.html#ae5ffa6e8d9c850bd41f43f7564bf6896',1,'linalg.h']]], + ['la_5fqr_5ffactor_5fcmplx_5fpvt_54',['la_qr_factor_cmplx_pvt',['../linalg_8h.html#a4a3f6dafe185c2985fc76aab3d0abb97',1,'linalg.h']]], + ['la_5fqr_5ffactor_5fpvt_55',['la_qr_factor_pvt',['../linalg_8h.html#a4bc671dad87b42ff285a4241322a3764',1,'linalg.h']]], + ['la_5fqr_5frank1_5fupdate_56',['la_qr_rank1_update',['../linalg_8h.html#a9b0639faf9ac0af9bbdb348b92746d5f',1,'linalg.h']]], + ['la_5fqr_5frank1_5fupdate_5fcmplx_57',['la_qr_rank1_update_cmplx',['../linalg_8h.html#acfbd42393c8b1931ff11bc4c7e858aef',1,'linalg.h']]], + ['la_5frank_58',['la_rank',['../linalg_8h.html#a089690d293303e30c6eef0bb1e982191',1,'linalg.h']]], + ['la_5frank1_5fupdate_59',['la_rank1_update',['../linalg_8h.html#ab346fed23fd61f02d65e09c795c26d74',1,'linalg.h']]], + ['la_5frank1_5fupdate_5fcmplx_60',['la_rank1_update_cmplx',['../linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15',1,'linalg.h']]], + ['la_5frank_5fcmplx_61',['la_rank_cmplx',['../linalg_8h.html#afdc9b7e6ffab89915a082c00ceac7258',1,'linalg.h']]], + ['la_5fsingular_5fmatrix_5ferror_62',['la_singular_matrix_error',['../namespacelinalg.html#af5dc9d60151bb81436b442525871c8c9',1,'linalg']]], + ['la_5fsolve_5fcholesky_63',['la_solve_cholesky',['../linalg_8h.html#a0dc578507a0cb6ada776142476383590',1,'linalg.h']]], + ['la_5fsolve_5fcholesky_5fcmplx_64',['la_solve_cholesky_cmplx',['../linalg_8h.html#a719ffdff56c8fa0875409c4f4e5e95cf',1,'linalg.h']]], + ['la_5fsolve_5fleast_5fsquares_65',['la_solve_least_squares',['../linalg_8h.html#a02eb049983dd41f2307bb52594fb210e',1,'linalg.h']]], + ['la_5fsolve_5fleast_5fsquares_5fcmplx_66',['la_solve_least_squares_cmplx',['../linalg_8h.html#ac3bb7b959d8cc7400e9b13290a895b64',1,'linalg.h']]], + ['la_5fsolve_5flq_67',['la_solve_lq',['../linalg_8h.html#a2c485d619c24435be713cf4356285e9a',1,'linalg.h']]], + ['la_5fsolve_5flq_5fcmplx_68',['la_solve_lq_cmplx',['../linalg_8h.html#a54ee9d9ab89b88b0ca682f70bc6c3c54',1,'linalg.h']]], + ['la_5fsolve_5flu_69',['la_solve_lu',['../linalg_8h.html#aae725d3247301d1163c58f89edff3d4b',1,'linalg.h']]], + ['la_5fsolve_5flu_5fcmplx_70',['la_solve_lu_cmplx',['../linalg_8h.html#aa067ac0d3f58e28371d413ab7419da74',1,'linalg.h']]], + ['la_5fsolve_5fqr_71',['la_solve_qr',['../linalg_8h.html#aefdc2e6758482d02a3aa7978f7d5efe0',1,'linalg.h']]], + ['la_5fsolve_5fqr_5fcmplx_72',['la_solve_qr_cmplx',['../linalg_8h.html#a0ff5f2519eb1d2af94e3b4a26dfb10fe',1,'linalg.h']]], + ['la_5fsolve_5fqr_5fcmplx_5fpvt_73',['la_solve_qr_cmplx_pvt',['../linalg_8h.html#ad0ee4a9c71de62911a71a342790f5070',1,'linalg.h']]], + ['la_5fsolve_5fqr_5fpvt_74',['la_solve_qr_pvt',['../linalg_8h.html#a62f97b4319f5574aef5e52bbacff14bb',1,'linalg.h']]], + ['la_5fsolve_5ftri_5fmtx_75',['la_solve_tri_mtx',['../linalg_8h.html#aed7b29bbff1472ebe805054eb9d8c6d4',1,'linalg.h']]], + ['la_5fsolve_5ftri_5fmtx_5fcmplx_76',['la_solve_tri_mtx_cmplx',['../linalg_8h.html#af87823d73fb5a319e4262594d147e38c',1,'linalg.h']]], + ['la_5fsort_5feigen_77',['la_sort_eigen',['../linalg_8h.html#abf5918abab8f97fc2ac5887e051ff493',1,'linalg.h']]], + ['la_5fsort_5feigen_5fcmplx_78',['la_sort_eigen_cmplx',['../linalg_8h.html#a090178a5f99a4b400da80481aad77757',1,'linalg.h']]], + ['la_5fsvd_79',['la_svd',['../linalg_8h.html#a56c0cea99a066e74c8fff9682d5ca92d',1,'linalg.h']]], + ['la_5fsvd_5fcmplx_80',['la_svd_cmplx',['../linalg_8h.html#afbffa0856d75c607a03d3dc7b5b1076e',1,'linalg.h']]], + ['la_5ftrace_81',['la_trace',['../linalg_8h.html#a7f611f8f3de7d56120c78e70671c7112',1,'linalg.h']]], + ['la_5ftrace_5fcmplx_82',['la_trace_cmplx',['../linalg_8h.html#a021fbb7fdccf557ec407a86bace43d85',1,'linalg.h']]], + ['la_5ftranspose_83',['la_transpose',['../namespacelinalg.html#a2b842a1fb17710d7ec2f117f5fdb2a59',1,'linalg']]], + ['la_5ftri_5fmtx_5fmult_84',['la_tri_mtx_mult',['../linalg_8h.html#ae7d70f1ef2a2824772e1bf0f726c257e',1,'linalg.h']]], + ['la_5ftri_5fmtx_5fmult_5fcmplx_85',['la_tri_mtx_mult_cmplx',['../linalg_8h.html#a02c464a9dd95298c91f431ae4d0773e9',1,'linalg.h']]], + ['linalg_86',['linalg',['../namespacelinalg.html',1,'linalg'],['../index.html',1,'linalg']]], + ['linalg_2eh_87',['linalg.h',['../linalg_8h.html',1,'']]], + ['lq_5ffactor_88',['lq_factor',['../interfacelinalg_1_1lq__factor.html',1,'linalg']]], + ['lu_5ffactor_89',['lu_factor',['../interfacelinalg_1_1lu__factor.html',1,'linalg']]], + ['lusol_90',['lusol',['../interfacesparskit_1_1lusol.html',1,'sparskit']]] ]; diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js index 686d365a..872369c1 100644 --- a/docs/html/search/all_9.js +++ b/docs/html/search/all_9.js @@ -1,6 +1,13 @@ var searchData= [ - ['rank1_5fupdate_0',['rank1_update',['../interfacelinalg_1_1rank1__update.html',1,'linalg']]], - ['recip_5fmult_5farray_1',['recip_mult_array',['../interfacelinalg_1_1recip__mult__array.html',1,'linalg']]], - ['rz_5ffactor_2',['rz_factor',['../interfacelinalg_1_1rz__factor.html',1,'linalg']]] + ['matmul_0',['matmul',['../interfacelinalg_1_1matmul.html',1,'linalg']]], + ['msr_5fmatrix_1',['msr_matrix',['../structlinalg_1_1msr__matrix.html',1,'linalg']]], + ['msrcsr_2',['msrcsr',['../interfacesparskit_1_1msrcsr.html',1,'sparskit']]], + ['mtx_5finverse_3',['mtx_inverse',['../interfacelinalg_1_1mtx__inverse.html',1,'linalg']]], + ['mtx_5fmult_4',['mtx_mult',['../interfacelinalg_1_1mtx__mult.html',1,'linalg']]], + ['mtx_5fpinverse_5',['mtx_pinverse',['../interfacelinalg_1_1mtx__pinverse.html',1,'linalg']]], + ['mtx_5frank_6',['mtx_rank',['../interfacelinalg_1_1mtx__rank.html',1,'linalg']]], + ['mult_5flq_7',['mult_lq',['../interfacelinalg_1_1mult__lq.html',1,'linalg']]], + ['mult_5fqr_8',['mult_qr',['../interfacelinalg_1_1mult__qr.html',1,'linalg']]], + ['mult_5frz_9',['mult_rz',['../interfacelinalg_1_1mult__rz.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js index 5136c9f3..7bca8e7c 100644 --- a/docs/html/search/all_a.js +++ b/docs/html/search/all_a.js @@ -1,14 +1,4 @@ var searchData= [ - ['solve_5fcholesky_0',['solve_cholesky',['../interfacelinalg_1_1solve__cholesky.html',1,'linalg']]], - ['solve_5fleast_5fsquares_1',['solve_least_squares',['../interfacelinalg_1_1solve__least__squares.html',1,'linalg']]], - ['solve_5fleast_5fsquares_5ffull_2',['solve_least_squares_full',['../interfacelinalg_1_1solve__least__squares__full.html',1,'linalg']]], - ['solve_5fleast_5fsquares_5fsvd_3',['solve_least_squares_svd',['../interfacelinalg_1_1solve__least__squares__svd.html',1,'linalg']]], - ['solve_5flq_4',['solve_lq',['../interfacelinalg_1_1solve__lq.html',1,'linalg']]], - ['solve_5flu_5',['solve_lu',['../interfacelinalg_1_1solve__lu.html',1,'linalg']]], - ['solve_5fqr_6',['solve_qr',['../interfacelinalg_1_1solve__qr.html',1,'linalg']]], - ['solve_5ftriangular_5fsystem_7',['solve_triangular_system',['../interfacelinalg_1_1solve__triangular__system.html',1,'linalg']]], - ['sort_8',['sort',['../interfacelinalg_1_1sort.html',1,'linalg']]], - ['svd_9',['svd',['../interfacelinalg_1_1svd.html',1,'linalg']]], - ['swap_10',['swap',['../interfacelinalg_1_1swap.html',1,'linalg']]] + ['nonzero_5fcount_0',['nonzero_count',['../interfacelinalg_1_1nonzero__count.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js index 90d19100..54ba44f3 100644 --- a/docs/html/search/all_b.js +++ b/docs/html/search/all_b.js @@ -1,5 +1,7 @@ var searchData= [ - ['trace_0',['trace',['../interfacelinalg_1_1trace.html',1,'linalg']]], - ['tri_5fmtx_5fmult_1',['tri_mtx_mult',['../interfacelinalg_1_1tri__mtx__mult.html',1,'linalg']]] + ['operator_28_2a_29_0',['operator(*)',['../interfacelinalg_1_1operator_07_5_08.html',1,'linalg']]], + ['operator_28_2b_29_1',['operator(+)',['../interfacelinalg_1_1operator_07_09_08.html',1,'linalg']]], + ['operator_28_2d_29_2',['operator(-)',['../interfacelinalg_1_1operator_07-_08.html',1,'linalg']]], + ['operator_28_2f_29_3',['operator(/)',['../interfacelinalg_1_1operator_07_2_08.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js index 81ee744d..3f0faf2a 100644 --- a/docs/html/search/all_c.js +++ b/docs/html/search/all_c.js @@ -1,33 +1,5 @@ var searchData= [ - ['zch1dn_0',['zch1dn',['../interfaceqrupdate_1_1zch1dn.html',1,'qrupdate']]], - ['zch1up_1',['zch1up',['../interfaceqrupdate_1_1zch1up.html',1,'qrupdate']]], - ['zdscal_2',['zdscal',['../interfaceblas_1_1zdscal.html',1,'blas']]], - ['zgbmv_3',['zgbmv',['../interfaceblas_1_1zgbmv.html',1,'blas']]], - ['zgeev_4',['zgeev',['../interfacelapack_1_1zgeev.html',1,'lapack']]], - ['zgelqf_5',['zgelqf',['../interfacelapack_1_1zgelqf.html',1,'lapack']]], - ['zgels_6',['zgels',['../interfacelapack_1_1zgels.html',1,'lapack']]], - ['zgelss_7',['zgelss',['../interfacelapack_1_1zgelss.html',1,'lapack']]], - ['zgelsy_8',['zgelsy',['../interfacelapack_1_1zgelsy.html',1,'lapack']]], - ['zgemm_9',['zgemm',['../interfaceblas_1_1zgemm.html',1,'blas']]], - ['zgemv_10',['zgemv',['../interfaceblas_1_1zgemv.html',1,'blas']]], - ['zgeqp3_11',['zgeqp3',['../interfacelapack_1_1zgeqp3.html',1,'lapack']]], - ['zgeqrf_12',['zgeqrf',['../interfacelapack_1_1zgeqrf.html',1,'lapack']]], - ['zgesvd_13',['zgesvd',['../interfacelapack_1_1zgesvd.html',1,'lapack']]], - ['zgetrf_14',['zgetrf',['../interfacelapack_1_1zgetrf.html',1,'lapack']]], - ['zgetri_15',['zgetri',['../interfacelapack_1_1zgetri.html',1,'lapack']]], - ['zgetrs_16',['zgetrs',['../interfacelapack_1_1zgetrs.html',1,'lapack']]], - ['zlaic1_17',['zlaic1',['../interfacelapack_1_1zlaic1.html',1,'lapack']]], - ['zpotrf_18',['zpotrf',['../interfacelapack_1_1zpotrf.html',1,'lapack']]], - ['zpotrs_19',['zpotrs',['../interfacelapack_1_1zpotrs.html',1,'lapack']]], - ['zqr1up_20',['zqr1up',['../interfaceqrupdate_1_1zqr1up.html',1,'qrupdate']]], - ['zscal_21',['zscal',['../interfaceblas_1_1zscal.html',1,'blas']]], - ['ztrsm_22',['ztrsm',['../interfaceblas_1_1ztrsm.html',1,'blas']]], - ['ztrsv_23',['ztrsv',['../interfaceblas_1_1ztrsv.html',1,'blas']]], - ['ztzrzf_24',['ztzrzf',['../interfacelapack_1_1ztzrzf.html',1,'lapack']]], - ['zunglq_25',['zunglq',['../interfacelapack_1_1zunglq.html',1,'lapack']]], - ['zungqr_26',['zungqr',['../interfacelapack_1_1zungqr.html',1,'lapack']]], - ['zunmlq_27',['zunmlq',['../interfacelapack_1_1zunmlq.html',1,'lapack']]], - ['zunmqr_28',['zunmqr',['../interfacelapack_1_1zunmqr.html',1,'lapack']]], - ['zunmrz_29',['zunmrz',['../interfacelapack_1_1zunmrz.html',1,'lapack']]] + ['pgmres_0',['pgmres',['../interfacesparskit_1_1pgmres.html',1,'sparskit']]], + ['pgmres_5fsolver_1',['pgmres_solver',['../interfacelinalg_1_1pgmres__solver.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js index 760107f9..0cd9fce4 100644 --- a/docs/html/search/all_d.js +++ b/docs/html/search/all_d.js @@ -1,6 +1,6 @@ var searchData= [ - ['values_0',['values',['../structlinalg__immutable_1_1eigen__results.html#abb60901ab160c6fd232cfb46ed0bf3cc',1,'linalg_immutable::eigen_results']]], - ['vectors_1',['vectors',['../structlinalg__immutable_1_1eigen__results.html#a982607b9c3ff93504bb4524dcd31a442',1,'linalg_immutable::eigen_results']]], - ['vt_2',['vt',['../structlinalg__immutable_1_1svd__results.html#af5c35f3392431179a5cb15d1cddf7cb1',1,'linalg_immutable::svd_results::vt()'],['../structlinalg__immutable_1_1svd__results__cmplx.html#af9e74638b38510fb24de3f3a6ea30de8',1,'linalg_immutable::svd_results_cmplx::vt()']]] + ['qr_5ffactor_0',['qr_factor',['../interfacelinalg_1_1qr__factor.html',1,'linalg']]], + ['qr_5frank1_5fupdate_1',['qr_rank1_update',['../interfacelinalg_1_1qr__rank1__update.html',1,'linalg']]], + ['qrupdate_2',['qrupdate',['../namespaceqrupdate.html',1,'']]] ]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js index a5b8bb0e..3fd38926 100644 --- a/docs/html/search/all_e.js +++ b/docs/html/search/all_e.js @@ -1,4 +1,7 @@ var searchData= [ - ['u_0',['u',['../structlinalg__immutable_1_1lu__results.html#ab1af96c7808037f63563e1bf912c4dad',1,'linalg_immutable::lu_results::u()'],['../structlinalg__immutable_1_1lu__results__cmplx.html#a7488afe2004b11c8fed4c517400fde98',1,'linalg_immutable::lu_results_cmplx::u()'],['../structlinalg__immutable_1_1svd__results.html#a582822c9765048fcb8632d72a6ed506a',1,'linalg_immutable::svd_results::u()'],['../structlinalg__immutable_1_1svd__results__cmplx.html#ae65cfdf6d19c3bbb3a7e425db266cb3c',1,'linalg_immutable::svd_results_cmplx::u()']]] + ['rank1_5fupdate_0',['rank1_update',['../interfacelinalg_1_1rank1__update.html',1,'linalg']]], + ['recip_5fmult_5farray_1',['recip_mult_array',['../interfacelinalg_1_1recip__mult__array.html',1,'linalg']]], + ['row_5findices_2',['row_indices',['../structlinalg_1_1csr__matrix.html#a1a2f379ce437fed824e6eca3627bd1de',1,'linalg::csr_matrix']]], + ['rz_5ffactor_3',['rz_factor',['../interfacelinalg_1_1rz__factor.html',1,'linalg']]] ]; diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js index 760107f9..5b68a3eb 100644 --- a/docs/html/search/all_f.js +++ b/docs/html/search/all_f.js @@ -1,6 +1,17 @@ var searchData= [ - ['values_0',['values',['../structlinalg__immutable_1_1eigen__results.html#abb60901ab160c6fd232cfb46ed0bf3cc',1,'linalg_immutable::eigen_results']]], - ['vectors_1',['vectors',['../structlinalg__immutable_1_1eigen__results.html#a982607b9c3ff93504bb4524dcd31a442',1,'linalg_immutable::eigen_results']]], - ['vt_2',['vt',['../structlinalg__immutable_1_1svd__results.html#af5c35f3392431179a5cb15d1cddf7cb1',1,'linalg_immutable::svd_results::vt()'],['../structlinalg__immutable_1_1svd__results__cmplx.html#af9e74638b38510fb24de3f3a6ea30de8',1,'linalg_immutable::svd_results_cmplx::vt()']]] + ['size_0',['size',['../interfacelinalg_1_1size.html',1,'linalg']]], + ['solve_5fcholesky_1',['solve_cholesky',['../interfacelinalg_1_1solve__cholesky.html',1,'linalg']]], + ['solve_5fleast_5fsquares_2',['solve_least_squares',['../interfacelinalg_1_1solve__least__squares.html',1,'linalg']]], + ['solve_5fleast_5fsquares_5ffull_3',['solve_least_squares_full',['../interfacelinalg_1_1solve__least__squares__full.html',1,'linalg']]], + ['solve_5fleast_5fsquares_5fsvd_4',['solve_least_squares_svd',['../interfacelinalg_1_1solve__least__squares__svd.html',1,'linalg']]], + ['solve_5flq_5',['solve_lq',['../interfacelinalg_1_1solve__lq.html',1,'linalg']]], + ['solve_5flu_6',['solve_lu',['../interfacelinalg_1_1solve__lu.html',1,'linalg']]], + ['solve_5fqr_7',['solve_qr',['../interfacelinalg_1_1solve__qr.html',1,'linalg']]], + ['solve_5ftriangular_5fsystem_8',['solve_triangular_system',['../interfacelinalg_1_1solve__triangular__system.html',1,'linalg']]], + ['sort_9',['sort',['../interfacelinalg_1_1sort.html',1,'linalg']]], + ['sparse_5fdirect_5fsolve_10',['sparse_direct_solve',['../interfacelinalg_1_1sparse__direct__solve.html',1,'linalg']]], + ['sparskit_11',['sparskit',['../namespacesparskit.html',1,'']]], + ['svd_12',['svd',['../interfacelinalg_1_1svd.html',1,'linalg']]], + ['swap_13',['swap',['../interfacelinalg_1_1swap.html',1,'linalg']]] ]; diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js index 2c474ecb..d6dd5479 100644 --- a/docs/html/search/classes_0.js +++ b/docs/html/search/classes_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['band_5fdiag_5fmtx_5fmult_0',['band_diag_mtx_mult',['../interfacelinalg_1_1band__diag__mtx__mult.html',1,'linalg']]], - ['band_5fmtx_5fmult_1',['band_mtx_mult',['../interfacelinalg_1_1band__mtx__mult.html',1,'linalg']]], - ['band_5fmtx_5fto_5ffull_5fmtx_2',['band_mtx_to_full_mtx',['../interfacelinalg_1_1band__mtx__to__full__mtx.html',1,'linalg']]] + ['amub_0',['amub',['../interfacesparskit_1_1amub.html',1,'sparskit']]], + ['aplb_1',['aplb',['../interfacesparskit_1_1aplb.html',1,'sparskit']]], + ['aplsb_2',['aplsb',['../interfacesparskit_1_1aplsb.html',1,'sparskit']]] ]; diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js index 23e04882..62e63f32 100644 --- a/docs/html/search/classes_1.js +++ b/docs/html/search/classes_1.js @@ -1,6 +1,8 @@ var searchData= [ - ['cholesky_5ffactor_0',['cholesky_factor',['../interfacelinalg_1_1cholesky__factor.html',1,'linalg']]], - ['cholesky_5frank1_5fdowndate_1',['cholesky_rank1_downdate',['../interfacelinalg_1_1cholesky__rank1__downdate.html',1,'linalg']]], - ['cholesky_5frank1_5fupdate_2',['cholesky_rank1_update',['../interfacelinalg_1_1cholesky__rank1__update.html',1,'linalg']]] + ['band_5fdiag_5fmtx_5fmult_0',['band_diag_mtx_mult',['../interfacelinalg_1_1band__diag__mtx__mult.html',1,'linalg']]], + ['band_5fmtx_5fmult_1',['band_mtx_mult',['../interfacelinalg_1_1band__mtx__mult.html',1,'linalg']]], + ['band_5fmtx_5fto_5ffull_5fmtx_2',['band_mtx_to_full_mtx',['../interfacelinalg_1_1band__mtx__to__full__mtx.html',1,'linalg']]], + ['banded_5fto_5fdense_3',['banded_to_dense',['../interfacelinalg_1_1banded__to__dense.html',1,'linalg']]], + ['bndcsr_4',['bndcsr',['../interfacesparskit_1_1bndcsr.html',1,'sparskit']]] ]; diff --git a/docs/html/search/classes_10.js b/docs/html/search/classes_10.js new file mode 100644 index 00000000..00bd9d8e --- /dev/null +++ b/docs/html/search/classes_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['trace_0',['trace',['../interfacelinalg_1_1trace.html',1,'linalg']]], + ['transpose_1',['transpose',['../interfacelinalg_1_1transpose.html',1,'linalg']]], + ['tri_5fmtx_5fmult_2',['tri_mtx_mult',['../interfacelinalg_1_1tri__mtx__mult.html',1,'linalg']]] +]; diff --git a/docs/html/search/classes_11.js b/docs/html/search/classes_11.js new file mode 100644 index 00000000..81ee744d --- /dev/null +++ b/docs/html/search/classes_11.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['zch1dn_0',['zch1dn',['../interfaceqrupdate_1_1zch1dn.html',1,'qrupdate']]], + ['zch1up_1',['zch1up',['../interfaceqrupdate_1_1zch1up.html',1,'qrupdate']]], + ['zdscal_2',['zdscal',['../interfaceblas_1_1zdscal.html',1,'blas']]], + ['zgbmv_3',['zgbmv',['../interfaceblas_1_1zgbmv.html',1,'blas']]], + ['zgeev_4',['zgeev',['../interfacelapack_1_1zgeev.html',1,'lapack']]], + ['zgelqf_5',['zgelqf',['../interfacelapack_1_1zgelqf.html',1,'lapack']]], + ['zgels_6',['zgels',['../interfacelapack_1_1zgels.html',1,'lapack']]], + ['zgelss_7',['zgelss',['../interfacelapack_1_1zgelss.html',1,'lapack']]], + ['zgelsy_8',['zgelsy',['../interfacelapack_1_1zgelsy.html',1,'lapack']]], + ['zgemm_9',['zgemm',['../interfaceblas_1_1zgemm.html',1,'blas']]], + ['zgemv_10',['zgemv',['../interfaceblas_1_1zgemv.html',1,'blas']]], + ['zgeqp3_11',['zgeqp3',['../interfacelapack_1_1zgeqp3.html',1,'lapack']]], + ['zgeqrf_12',['zgeqrf',['../interfacelapack_1_1zgeqrf.html',1,'lapack']]], + ['zgesvd_13',['zgesvd',['../interfacelapack_1_1zgesvd.html',1,'lapack']]], + ['zgetrf_14',['zgetrf',['../interfacelapack_1_1zgetrf.html',1,'lapack']]], + ['zgetri_15',['zgetri',['../interfacelapack_1_1zgetri.html',1,'lapack']]], + ['zgetrs_16',['zgetrs',['../interfacelapack_1_1zgetrs.html',1,'lapack']]], + ['zlaic1_17',['zlaic1',['../interfacelapack_1_1zlaic1.html',1,'lapack']]], + ['zpotrf_18',['zpotrf',['../interfacelapack_1_1zpotrf.html',1,'lapack']]], + ['zpotrs_19',['zpotrs',['../interfacelapack_1_1zpotrs.html',1,'lapack']]], + ['zqr1up_20',['zqr1up',['../interfaceqrupdate_1_1zqr1up.html',1,'qrupdate']]], + ['zscal_21',['zscal',['../interfaceblas_1_1zscal.html',1,'blas']]], + ['ztrsm_22',['ztrsm',['../interfaceblas_1_1ztrsm.html',1,'blas']]], + ['ztrsv_23',['ztrsv',['../interfaceblas_1_1ztrsv.html',1,'blas']]], + ['ztzrzf_24',['ztzrzf',['../interfacelapack_1_1ztzrzf.html',1,'lapack']]], + ['zunglq_25',['zunglq',['../interfacelapack_1_1zunglq.html',1,'lapack']]], + ['zungqr_26',['zungqr',['../interfacelapack_1_1zungqr.html',1,'lapack']]], + ['zunmlq_27',['zunmlq',['../interfacelapack_1_1zunmlq.html',1,'lapack']]], + ['zunmqr_28',['zunmqr',['../interfacelapack_1_1zunmqr.html',1,'lapack']]], + ['zunmrz_29',['zunmrz',['../interfacelapack_1_1zunmrz.html',1,'lapack']]] +]; diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js index 765b640d..afaf8ee5 100644 --- a/docs/html/search/classes_2.js +++ b/docs/html/search/classes_2.js @@ -1,39 +1,9 @@ var searchData= [ - ['dch1dn_0',['dch1dn',['../interfaceqrupdate_1_1dch1dn.html',1,'qrupdate']]], - ['dch1up_1',['dch1up',['../interfaceqrupdate_1_1dch1up.html',1,'qrupdate']]], - ['det_2',['det',['../interfacelinalg_1_1det.html',1,'linalg']]], - ['dgbmv_3',['dgbmv',['../interfaceblas_1_1dgbmv.html',1,'blas']]], - ['dgeev_4',['dgeev',['../interfacelapack_1_1dgeev.html',1,'lapack']]], - ['dgelqf_5',['dgelqf',['../interfacelapack_1_1dgelqf.html',1,'lapack']]], - ['dgels_6',['dgels',['../interfacelapack_1_1dgels.html',1,'lapack']]], - ['dgelss_7',['dgelss',['../interfacelapack_1_1dgelss.html',1,'lapack']]], - ['dgelsy_8',['dgelsy',['../interfacelapack_1_1dgelsy.html',1,'lapack']]], - ['dgemm_9',['dgemm',['../interfaceblas_1_1dgemm.html',1,'blas']]], - ['dgemv_10',['dgemv',['../interfaceblas_1_1dgemv.html',1,'blas']]], - ['dgeqp3_11',['dgeqp3',['../interfacelapack_1_1dgeqp3.html',1,'lapack']]], - ['dgeqrf_12',['dgeqrf',['../interfacelapack_1_1dgeqrf.html',1,'lapack']]], - ['dgesvd_13',['dgesvd',['../interfacelapack_1_1dgesvd.html',1,'lapack']]], - ['dgetrf_14',['dgetrf',['../interfacelapack_1_1dgetrf.html',1,'lapack']]], - ['dgetri_15',['dgetri',['../interfacelapack_1_1dgetri.html',1,'lapack']]], - ['dgetrs_16',['dgetrs',['../interfacelapack_1_1dgetrs.html',1,'lapack']]], - ['dggev_17',['dggev',['../interfacelapack_1_1dggev.html',1,'lapack']]], - ['diag_5fmtx_5fmult_18',['diag_mtx_mult',['../interfacelinalg_1_1diag__mtx__mult.html',1,'linalg']]], - ['dlaic1_19',['dlaic1',['../interfacelapack_1_1dlaic1.html',1,'lapack']]], - ['dlamch_20',['dlamch',['../interfacelapack_1_1dlamch.html',1,'lapack']]], - ['dlaset_21',['dlaset',['../interfacelapack_1_1dlaset.html',1,'lapack']]], - ['dlasrt_22',['dlasrt',['../interfacelapack_1_1dlasrt.html',1,'lapack']]], - ['dorglq_23',['dorglq',['../interfacelapack_1_1dorglq.html',1,'lapack']]], - ['dorgqr_24',['dorgqr',['../interfacelapack_1_1dorgqr.html',1,'lapack']]], - ['dormlq_25',['dormlq',['../interfacelapack_1_1dormlq.html',1,'lapack']]], - ['dormqr_26',['dormqr',['../interfacelapack_1_1dormqr.html',1,'lapack']]], - ['dormrz_27',['dormrz',['../interfacelapack_1_1dormrz.html',1,'lapack']]], - ['dpotrf_28',['dpotrf',['../interfacelapack_1_1dpotrf.html',1,'lapack']]], - ['dpotrs_29',['dpotrs',['../interfacelapack_1_1dpotrs.html',1,'lapack']]], - ['dqr1up_30',['dqr1up',['../interfaceqrupdate_1_1dqr1up.html',1,'qrupdate']]], - ['dscal_31',['dscal',['../interfaceblas_1_1dscal.html',1,'blas']]], - ['dsyev_32',['dsyev',['../interfacelapack_1_1dsyev.html',1,'lapack']]], - ['dtrsm_33',['dtrsm',['../interfaceblas_1_1dtrsm.html',1,'blas']]], - ['dtrsv_34',['dtrsv',['../interfaceblas_1_1dtrsv.html',1,'blas']]], - ['dtzrzf_35',['dtzrzf',['../interfacelapack_1_1dtzrzf.html',1,'lapack']]] + ['cholesky_5ffactor_0',['cholesky_factor',['../interfacelinalg_1_1cholesky__factor.html',1,'linalg']]], + ['cholesky_5frank1_5fdowndate_1',['cholesky_rank1_downdate',['../interfacelinalg_1_1cholesky__rank1__downdate.html',1,'linalg']]], + ['cholesky_5frank1_5fupdate_2',['cholesky_rank1_update',['../interfacelinalg_1_1cholesky__rank1__update.html',1,'linalg']]], + ['csr_5fmatrix_3',['csr_matrix',['../structlinalg_1_1csr__matrix.html',1,'linalg']]], + ['csrcsc2_4',['csrcsc2',['../interfacesparskit_1_1csrcsc2.html',1,'sparskit']]], + ['csrmsr_5',['csrmsr',['../interfacesparskit_1_1csrmsr.html',1,'sparskit']]] ]; diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js index 66cad2be..13834bf8 100644 --- a/docs/html/search/classes_3.js +++ b/docs/html/search/classes_3.js @@ -1,4 +1,41 @@ var searchData= [ - ['eigen_0',['eigen',['../interfacelinalg_1_1eigen.html',1,'linalg']]] + ['dch1dn_0',['dch1dn',['../interfaceqrupdate_1_1dch1dn.html',1,'qrupdate']]], + ['dch1up_1',['dch1up',['../interfaceqrupdate_1_1dch1up.html',1,'qrupdate']]], + ['ddot_2',['ddot',['../interfaceblas_1_1ddot.html',1,'blas']]], + ['dense_5fto_5fbanded_3',['dense_to_banded',['../interfacelinalg_1_1dense__to__banded.html',1,'linalg']]], + ['det_4',['det',['../interfacelinalg_1_1det.html',1,'linalg']]], + ['dgbmv_5',['dgbmv',['../interfaceblas_1_1dgbmv.html',1,'blas']]], + ['dgeev_6',['dgeev',['../interfacelapack_1_1dgeev.html',1,'lapack']]], + ['dgelqf_7',['dgelqf',['../interfacelapack_1_1dgelqf.html',1,'lapack']]], + ['dgels_8',['dgels',['../interfacelapack_1_1dgels.html',1,'lapack']]], + ['dgelss_9',['dgelss',['../interfacelapack_1_1dgelss.html',1,'lapack']]], + ['dgelsy_10',['dgelsy',['../interfacelapack_1_1dgelsy.html',1,'lapack']]], + ['dgemm_11',['dgemm',['../interfaceblas_1_1dgemm.html',1,'blas']]], + ['dgemv_12',['dgemv',['../interfaceblas_1_1dgemv.html',1,'blas']]], + ['dgeqp3_13',['dgeqp3',['../interfacelapack_1_1dgeqp3.html',1,'lapack']]], + ['dgeqrf_14',['dgeqrf',['../interfacelapack_1_1dgeqrf.html',1,'lapack']]], + ['dgesvd_15',['dgesvd',['../interfacelapack_1_1dgesvd.html',1,'lapack']]], + ['dgetrf_16',['dgetrf',['../interfacelapack_1_1dgetrf.html',1,'lapack']]], + ['dgetri_17',['dgetri',['../interfacelapack_1_1dgetri.html',1,'lapack']]], + ['dgetrs_18',['dgetrs',['../interfacelapack_1_1dgetrs.html',1,'lapack']]], + ['dggev_19',['dggev',['../interfacelapack_1_1dggev.html',1,'lapack']]], + ['diag_5fmtx_5fmult_20',['diag_mtx_mult',['../interfacelinalg_1_1diag__mtx__mult.html',1,'linalg']]], + ['dlaic1_21',['dlaic1',['../interfacelapack_1_1dlaic1.html',1,'lapack']]], + ['dlamch_22',['dlamch',['../interfacelapack_1_1dlamch.html',1,'lapack']]], + ['dlaset_23',['dlaset',['../interfacelapack_1_1dlaset.html',1,'lapack']]], + ['dlasrt_24',['dlasrt',['../interfacelapack_1_1dlasrt.html',1,'lapack']]], + ['dorglq_25',['dorglq',['../interfacelapack_1_1dorglq.html',1,'lapack']]], + ['dorgqr_26',['dorgqr',['../interfacelapack_1_1dorgqr.html',1,'lapack']]], + ['dormlq_27',['dormlq',['../interfacelapack_1_1dormlq.html',1,'lapack']]], + ['dormqr_28',['dormqr',['../interfacelapack_1_1dormqr.html',1,'lapack']]], + ['dormrz_29',['dormrz',['../interfacelapack_1_1dormrz.html',1,'lapack']]], + ['dpotrf_30',['dpotrf',['../interfacelapack_1_1dpotrf.html',1,'lapack']]], + ['dpotrs_31',['dpotrs',['../interfacelapack_1_1dpotrs.html',1,'lapack']]], + ['dqr1up_32',['dqr1up',['../interfaceqrupdate_1_1dqr1up.html',1,'qrupdate']]], + ['dscal_33',['dscal',['../interfaceblas_1_1dscal.html',1,'blas']]], + ['dsyev_34',['dsyev',['../interfacelapack_1_1dsyev.html',1,'lapack']]], + ['dtrsm_35',['dtrsm',['../interfaceblas_1_1dtrsm.html',1,'blas']]], + ['dtrsv_36',['dtrsv',['../interfaceblas_1_1dtrsv.html',1,'blas']]], + ['dtzrzf_37',['dtzrzf',['../interfacelapack_1_1dtzrzf.html',1,'lapack']]] ]; diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js index 6ac0a6ce..86cebc64 100644 --- a/docs/html/search/classes_4.js +++ b/docs/html/search/classes_4.js @@ -1,6 +1,5 @@ var searchData= [ - ['form_5flq_0',['form_lq',['../interfacelinalg_1_1form__lq.html',1,'linalg']]], - ['form_5flu_1',['form_lu',['../interfacelinalg_1_1form__lu.html',1,'linalg']]], - ['form_5fqr_2',['form_qr',['../interfacelinalg_1_1form__qr.html',1,'linalg']]] + ['eigen_0',['eigen',['../interfacelinalg_1_1eigen.html',1,'linalg']]], + ['extract_5fdiagonal_1',['extract_diagonal',['../interfacelinalg_1_1extract__diagonal.html',1,'linalg']]] ]; diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js index d81989f4..6ac0a6ce 100644 --- a/docs/html/search/classes_5.js +++ b/docs/html/search/classes_5.js @@ -1,5 +1,6 @@ var searchData= [ - ['lq_5ffactor_0',['lq_factor',['../interfacelinalg_1_1lq__factor.html',1,'linalg']]], - ['lu_5ffactor_1',['lu_factor',['../interfacelinalg_1_1lu__factor.html',1,'linalg']]] + ['form_5flq_0',['form_lq',['../interfacelinalg_1_1form__lq.html',1,'linalg']]], + ['form_5flu_1',['form_lu',['../interfacelinalg_1_1form__lu.html',1,'linalg']]], + ['form_5fqr_2',['form_qr',['../interfacelinalg_1_1form__qr.html',1,'linalg']]] ]; diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js index abc272a4..0d68e933 100644 --- a/docs/html/search/classes_6.js +++ b/docs/html/search/classes_6.js @@ -1,10 +1,5 @@ var searchData= [ - ['mtx_5finverse_0',['mtx_inverse',['../interfacelinalg_1_1mtx__inverse.html',1,'linalg']]], - ['mtx_5fmult_1',['mtx_mult',['../interfacelinalg_1_1mtx__mult.html',1,'linalg']]], - ['mtx_5fpinverse_2',['mtx_pinverse',['../interfacelinalg_1_1mtx__pinverse.html',1,'linalg']]], - ['mtx_5frank_3',['mtx_rank',['../interfacelinalg_1_1mtx__rank.html',1,'linalg']]], - ['mult_5flq_4',['mult_lq',['../interfacelinalg_1_1mult__lq.html',1,'linalg']]], - ['mult_5fqr_5',['mult_qr',['../interfacelinalg_1_1mult__qr.html',1,'linalg']]], - ['mult_5frz_6',['mult_rz',['../interfacelinalg_1_1mult__rz.html',1,'linalg']]] + ['getdia_0',['getdia',['../interfacesparskit_1_1getdia.html',1,'sparskit']]], + ['getelm_1',['getelm',['../interfacesparskit_1_1getelm.html',1,'sparskit']]] ]; diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js index 15a9615a..39788bf8 100644 --- a/docs/html/search/classes_7.js +++ b/docs/html/search/classes_7.js @@ -1,5 +1,7 @@ var searchData= [ - ['qr_5ffactor_0',['qr_factor',['../interfacelinalg_1_1qr__factor.html',1,'linalg']]], - ['qr_5frank1_5fupdate_1',['qr_rank1_update',['../interfacelinalg_1_1qr__rank1__update.html',1,'linalg']]] + ['ilud_0',['ilud',['../interfacesparskit_1_1ilud.html',1,'sparskit']]], + ['iludp_1',['iludp',['../interfacesparskit_1_1iludp.html',1,'sparskit']]], + ['ilut_2',['ilut',['../interfacesparskit_1_1ilut.html',1,'sparskit']]], + ['ilutp_3',['ilutp',['../interfacesparskit_1_1ilutp.html',1,'sparskit']]] ]; diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js index 686d365a..ffd21095 100644 --- a/docs/html/search/classes_8.js +++ b/docs/html/search/classes_8.js @@ -1,6 +1,6 @@ var searchData= [ - ['rank1_5fupdate_0',['rank1_update',['../interfacelinalg_1_1rank1__update.html',1,'linalg']]], - ['recip_5fmult_5farray_1',['recip_mult_array',['../interfacelinalg_1_1recip__mult__array.html',1,'linalg']]], - ['rz_5ffactor_2',['rz_factor',['../interfacelinalg_1_1rz__factor.html',1,'linalg']]] + ['lq_5ffactor_0',['lq_factor',['../interfacelinalg_1_1lq__factor.html',1,'linalg']]], + ['lu_5ffactor_1',['lu_factor',['../interfacelinalg_1_1lu__factor.html',1,'linalg']]], + ['lusol_2',['lusol',['../interfacesparskit_1_1lusol.html',1,'sparskit']]] ]; diff --git a/docs/html/search/classes_9.js b/docs/html/search/classes_9.js index 5136c9f3..872369c1 100644 --- a/docs/html/search/classes_9.js +++ b/docs/html/search/classes_9.js @@ -1,14 +1,13 @@ var searchData= [ - ['solve_5fcholesky_0',['solve_cholesky',['../interfacelinalg_1_1solve__cholesky.html',1,'linalg']]], - ['solve_5fleast_5fsquares_1',['solve_least_squares',['../interfacelinalg_1_1solve__least__squares.html',1,'linalg']]], - ['solve_5fleast_5fsquares_5ffull_2',['solve_least_squares_full',['../interfacelinalg_1_1solve__least__squares__full.html',1,'linalg']]], - ['solve_5fleast_5fsquares_5fsvd_3',['solve_least_squares_svd',['../interfacelinalg_1_1solve__least__squares__svd.html',1,'linalg']]], - ['solve_5flq_4',['solve_lq',['../interfacelinalg_1_1solve__lq.html',1,'linalg']]], - ['solve_5flu_5',['solve_lu',['../interfacelinalg_1_1solve__lu.html',1,'linalg']]], - ['solve_5fqr_6',['solve_qr',['../interfacelinalg_1_1solve__qr.html',1,'linalg']]], - ['solve_5ftriangular_5fsystem_7',['solve_triangular_system',['../interfacelinalg_1_1solve__triangular__system.html',1,'linalg']]], - ['sort_8',['sort',['../interfacelinalg_1_1sort.html',1,'linalg']]], - ['svd_9',['svd',['../interfacelinalg_1_1svd.html',1,'linalg']]], - ['swap_10',['swap',['../interfacelinalg_1_1swap.html',1,'linalg']]] + ['matmul_0',['matmul',['../interfacelinalg_1_1matmul.html',1,'linalg']]], + ['msr_5fmatrix_1',['msr_matrix',['../structlinalg_1_1msr__matrix.html',1,'linalg']]], + ['msrcsr_2',['msrcsr',['../interfacesparskit_1_1msrcsr.html',1,'sparskit']]], + ['mtx_5finverse_3',['mtx_inverse',['../interfacelinalg_1_1mtx__inverse.html',1,'linalg']]], + ['mtx_5fmult_4',['mtx_mult',['../interfacelinalg_1_1mtx__mult.html',1,'linalg']]], + ['mtx_5fpinverse_5',['mtx_pinverse',['../interfacelinalg_1_1mtx__pinverse.html',1,'linalg']]], + ['mtx_5frank_6',['mtx_rank',['../interfacelinalg_1_1mtx__rank.html',1,'linalg']]], + ['mult_5flq_7',['mult_lq',['../interfacelinalg_1_1mult__lq.html',1,'linalg']]], + ['mult_5fqr_8',['mult_qr',['../interfacelinalg_1_1mult__qr.html',1,'linalg']]], + ['mult_5frz_9',['mult_rz',['../interfacelinalg_1_1mult__rz.html',1,'linalg']]] ]; diff --git a/docs/html/search/classes_a.js b/docs/html/search/classes_a.js index 90d19100..7bca8e7c 100644 --- a/docs/html/search/classes_a.js +++ b/docs/html/search/classes_a.js @@ -1,5 +1,4 @@ var searchData= [ - ['trace_0',['trace',['../interfacelinalg_1_1trace.html',1,'linalg']]], - ['tri_5fmtx_5fmult_1',['tri_mtx_mult',['../interfacelinalg_1_1tri__mtx__mult.html',1,'linalg']]] + ['nonzero_5fcount_0',['nonzero_count',['../interfacelinalg_1_1nonzero__count.html',1,'linalg']]] ]; diff --git a/docs/html/search/classes_b.js b/docs/html/search/classes_b.js index 81ee744d..54ba44f3 100644 --- a/docs/html/search/classes_b.js +++ b/docs/html/search/classes_b.js @@ -1,33 +1,7 @@ var searchData= [ - ['zch1dn_0',['zch1dn',['../interfaceqrupdate_1_1zch1dn.html',1,'qrupdate']]], - ['zch1up_1',['zch1up',['../interfaceqrupdate_1_1zch1up.html',1,'qrupdate']]], - ['zdscal_2',['zdscal',['../interfaceblas_1_1zdscal.html',1,'blas']]], - ['zgbmv_3',['zgbmv',['../interfaceblas_1_1zgbmv.html',1,'blas']]], - ['zgeev_4',['zgeev',['../interfacelapack_1_1zgeev.html',1,'lapack']]], - ['zgelqf_5',['zgelqf',['../interfacelapack_1_1zgelqf.html',1,'lapack']]], - ['zgels_6',['zgels',['../interfacelapack_1_1zgels.html',1,'lapack']]], - ['zgelss_7',['zgelss',['../interfacelapack_1_1zgelss.html',1,'lapack']]], - ['zgelsy_8',['zgelsy',['../interfacelapack_1_1zgelsy.html',1,'lapack']]], - ['zgemm_9',['zgemm',['../interfaceblas_1_1zgemm.html',1,'blas']]], - ['zgemv_10',['zgemv',['../interfaceblas_1_1zgemv.html',1,'blas']]], - ['zgeqp3_11',['zgeqp3',['../interfacelapack_1_1zgeqp3.html',1,'lapack']]], - ['zgeqrf_12',['zgeqrf',['../interfacelapack_1_1zgeqrf.html',1,'lapack']]], - ['zgesvd_13',['zgesvd',['../interfacelapack_1_1zgesvd.html',1,'lapack']]], - ['zgetrf_14',['zgetrf',['../interfacelapack_1_1zgetrf.html',1,'lapack']]], - ['zgetri_15',['zgetri',['../interfacelapack_1_1zgetri.html',1,'lapack']]], - ['zgetrs_16',['zgetrs',['../interfacelapack_1_1zgetrs.html',1,'lapack']]], - ['zlaic1_17',['zlaic1',['../interfacelapack_1_1zlaic1.html',1,'lapack']]], - ['zpotrf_18',['zpotrf',['../interfacelapack_1_1zpotrf.html',1,'lapack']]], - ['zpotrs_19',['zpotrs',['../interfacelapack_1_1zpotrs.html',1,'lapack']]], - ['zqr1up_20',['zqr1up',['../interfaceqrupdate_1_1zqr1up.html',1,'qrupdate']]], - ['zscal_21',['zscal',['../interfaceblas_1_1zscal.html',1,'blas']]], - ['ztrsm_22',['ztrsm',['../interfaceblas_1_1ztrsm.html',1,'blas']]], - ['ztrsv_23',['ztrsv',['../interfaceblas_1_1ztrsv.html',1,'blas']]], - ['ztzrzf_24',['ztzrzf',['../interfacelapack_1_1ztzrzf.html',1,'lapack']]], - ['zunglq_25',['zunglq',['../interfacelapack_1_1zunglq.html',1,'lapack']]], - ['zungqr_26',['zungqr',['../interfacelapack_1_1zungqr.html',1,'lapack']]], - ['zunmlq_27',['zunmlq',['../interfacelapack_1_1zunmlq.html',1,'lapack']]], - ['zunmqr_28',['zunmqr',['../interfacelapack_1_1zunmqr.html',1,'lapack']]], - ['zunmrz_29',['zunmrz',['../interfacelapack_1_1zunmrz.html',1,'lapack']]] + ['operator_28_2a_29_0',['operator(*)',['../interfacelinalg_1_1operator_07_5_08.html',1,'linalg']]], + ['operator_28_2b_29_1',['operator(+)',['../interfacelinalg_1_1operator_07_09_08.html',1,'linalg']]], + ['operator_28_2d_29_2',['operator(-)',['../interfacelinalg_1_1operator_07-_08.html',1,'linalg']]], + ['operator_28_2f_29_3',['operator(/)',['../interfacelinalg_1_1operator_07_2_08.html',1,'linalg']]] ]; diff --git a/docs/html/search/classes_c.js b/docs/html/search/classes_c.js new file mode 100644 index 00000000..3f0faf2a --- /dev/null +++ b/docs/html/search/classes_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pgmres_0',['pgmres',['../interfacesparskit_1_1pgmres.html',1,'sparskit']]], + ['pgmres_5fsolver_1',['pgmres_solver',['../interfacelinalg_1_1pgmres__solver.html',1,'linalg']]] +]; diff --git a/docs/html/search/classes_d.js b/docs/html/search/classes_d.js new file mode 100644 index 00000000..15a9615a --- /dev/null +++ b/docs/html/search/classes_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['qr_5ffactor_0',['qr_factor',['../interfacelinalg_1_1qr__factor.html',1,'linalg']]], + ['qr_5frank1_5fupdate_1',['qr_rank1_update',['../interfacelinalg_1_1qr__rank1__update.html',1,'linalg']]] +]; diff --git a/docs/html/search/classes_e.js b/docs/html/search/classes_e.js new file mode 100644 index 00000000..686d365a --- /dev/null +++ b/docs/html/search/classes_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['rank1_5fupdate_0',['rank1_update',['../interfacelinalg_1_1rank1__update.html',1,'linalg']]], + ['recip_5fmult_5farray_1',['recip_mult_array',['../interfacelinalg_1_1recip__mult__array.html',1,'linalg']]], + ['rz_5ffactor_2',['rz_factor',['../interfacelinalg_1_1rz__factor.html',1,'linalg']]] +]; diff --git a/docs/html/search/classes_f.js b/docs/html/search/classes_f.js new file mode 100644 index 00000000..bcdd4196 --- /dev/null +++ b/docs/html/search/classes_f.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['size_0',['size',['../interfacelinalg_1_1size.html',1,'linalg']]], + ['solve_5fcholesky_1',['solve_cholesky',['../interfacelinalg_1_1solve__cholesky.html',1,'linalg']]], + ['solve_5fleast_5fsquares_2',['solve_least_squares',['../interfacelinalg_1_1solve__least__squares.html',1,'linalg']]], + ['solve_5fleast_5fsquares_5ffull_3',['solve_least_squares_full',['../interfacelinalg_1_1solve__least__squares__full.html',1,'linalg']]], + ['solve_5fleast_5fsquares_5fsvd_4',['solve_least_squares_svd',['../interfacelinalg_1_1solve__least__squares__svd.html',1,'linalg']]], + ['solve_5flq_5',['solve_lq',['../interfacelinalg_1_1solve__lq.html',1,'linalg']]], + ['solve_5flu_6',['solve_lu',['../interfacelinalg_1_1solve__lu.html',1,'linalg']]], + ['solve_5fqr_7',['solve_qr',['../interfacelinalg_1_1solve__qr.html',1,'linalg']]], + ['solve_5ftriangular_5fsystem_8',['solve_triangular_system',['../interfacelinalg_1_1solve__triangular__system.html',1,'linalg']]], + ['sort_9',['sort',['../interfacelinalg_1_1sort.html',1,'linalg']]], + ['sparse_5fdirect_5fsolve_10',['sparse_direct_solve',['../interfacelinalg_1_1sparse__direct__solve.html',1,'linalg']]], + ['svd_11',['svd',['../interfacelinalg_1_1svd.html',1,'linalg']]], + ['swap_12',['swap',['../interfacelinalg_1_1swap.html',1,'linalg']]] +]; diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js index 9d86f397..a133350f 100644 --- a/docs/html/search/functions_0.js +++ b/docs/html/search/functions_0.js @@ -1,78 +1,4 @@ var searchData= [ - ['la_5fband_5fdiag_5fmtx_5fmult_0',['la_band_diag_mtx_mult',['../linalg_8h.html#a64c2c86dc85ca7aad74667f153ae0437',1,'linalg.h']]], - ['la_5fband_5fdiag_5fmtx_5fmult_5fcmplx_1',['la_band_diag_mtx_mult_cmplx',['../linalg_8h.html#a910a1ec23e1112487573f35765a421ca',1,'linalg.h']]], - ['la_5fband_5fmtx_5fvec_5fmult_2',['la_band_mtx_vec_mult',['../linalg_8h.html#ae48bdfb08cd35a8876b3dc879547686e',1,'linalg.h']]], - ['la_5fband_5fmtx_5fvec_5fmult_5fcmplx_3',['la_band_mtx_vec_mult_cmplx',['../linalg_8h.html#ac9e5ee0c20bacc19d1dab1c1182525f0',1,'linalg.h']]], - ['la_5fband_5fto_5ffull_5fmtx_4',['la_band_to_full_mtx',['../linalg_8h.html#adf4bdd1f9670b6636a55f606c5de72ea',1,'linalg.h']]], - ['la_5fband_5fto_5ffull_5fmtx_5fcmplx_5',['la_band_to_full_mtx_cmplx',['../linalg_8h.html#aa53e764ecb002d381d746edfa6b2fd8f',1,'linalg.h']]], - ['la_5fcholesky_5ffactor_6',['la_cholesky_factor',['../linalg_8h.html#a3967bc139cba341a513d1353bea62ac9',1,'linalg.h']]], - ['la_5fcholesky_5ffactor_5fcmplx_7',['la_cholesky_factor_cmplx',['../linalg_8h.html#a1734acc61ef569dfff9c83bcad566f67',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fdowndate_8',['la_cholesky_rank1_downdate',['../linalg_8h.html#a292e54c48a8e7f0203bf11f02844691f',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fdowndate_5fcmplx_9',['la_cholesky_rank1_downdate_cmplx',['../linalg_8h.html#a00c15ec713541d15eae1fd0b01897689',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fupdate_10',['la_cholesky_rank1_update',['../linalg_8h.html#abeb7ee58d4151498be96aa91432f296f',1,'linalg.h']]], - ['la_5fcholesky_5frank1_5fupdate_5fcmplx_11',['la_cholesky_rank1_update_cmplx',['../linalg_8h.html#af19ebf41be31ee92f657131a8fbf55a3',1,'linalg.h']]], - ['la_5fdet_12',['la_det',['../linalg_8h.html#ac7b4894cd929a106e02a8e37a4d52913',1,'linalg.h']]], - ['la_5fdet_5fcmplx_13',['la_det_cmplx',['../linalg_8h.html#ace9edf6a878ee4dd0b220b75b7db6431',1,'linalg.h']]], - ['la_5fdiag_5fmtx_5fmult_14',['la_diag_mtx_mult',['../linalg_8h.html#a4b74177a8914b109e1bf3aa56c9d9cb7',1,'linalg.h']]], - ['la_5fdiag_5fmtx_5fmult_5fcmplx_15',['la_diag_mtx_mult_cmplx',['../linalg_8h.html#a63bec2daa56fdc4bbf3f45b67ea14f65',1,'linalg.h']]], - ['la_5fdiag_5fmtx_5fmult_5fmixed_16',['la_diag_mtx_mult_mixed',['../linalg_8h.html#a4d5bad18dcc8a52d9594cc21954c572d',1,'linalg.h']]], - ['la_5feigen_5fasymm_17',['la_eigen_asymm',['../linalg_8h.html#a9491626ab4b3664771e1282b61eeaa74',1,'linalg.h']]], - ['la_5feigen_5fcmplx_18',['la_eigen_cmplx',['../linalg_8h.html#ae5a16375c14c924836c33bafa747a1cf',1,'linalg.h']]], - ['la_5feigen_5fgen_19',['la_eigen_gen',['../linalg_8h.html#af3c6f1a45aee2f275d4b109c9bb660d2',1,'linalg.h']]], - ['la_5feigen_5fsymm_20',['la_eigen_symm',['../linalg_8h.html#ac208d5e6849972a77ef261f2e368868c',1,'linalg.h']]], - ['la_5fform_5flq_21',['la_form_lq',['../linalg_8h.html#ac54763802ad5c3966f8e14cdf93fdc96',1,'linalg.h']]], - ['la_5fform_5flq_5fcmplx_22',['la_form_lq_cmplx',['../linalg_8h.html#aa54b8d224976dca7ef384eed74f50bed',1,'linalg.h']]], - ['la_5fform_5flu_23',['la_form_lu',['../linalg_8h.html#a15774f6323c34d307c99b32ac4f188a7',1,'linalg.h']]], - ['la_5fform_5flu_5fcmplx_24',['la_form_lu_cmplx',['../linalg_8h.html#a73bea3ca338925cfa4a58bcaea726a14',1,'linalg.h']]], - ['la_5fform_5fqr_25',['la_form_qr',['../linalg_8h.html#afe39765d805c1d9ae93e9aa2f20d8548',1,'linalg.h']]], - ['la_5fform_5fqr_5fcmplx_26',['la_form_qr_cmplx',['../linalg_8h.html#a0338870fe1142f88c96db63495fec615',1,'linalg.h']]], - ['la_5fform_5fqr_5fcmplx_5fpvt_27',['la_form_qr_cmplx_pvt',['../linalg_8h.html#ad76e25c5eb98075e83cc9df493be5b38',1,'linalg.h']]], - ['la_5fform_5fqr_5fpvt_28',['la_form_qr_pvt',['../linalg_8h.html#aace787c5b11959a457b936ace4995033',1,'linalg.h']]], - ['la_5finverse_29',['la_inverse',['../linalg_8h.html#a95d6ed56844c62d553b940091837014b',1,'linalg.h']]], - ['la_5finverse_5fcmplx_30',['la_inverse_cmplx',['../linalg_8h.html#a7a821b41c61670f5710214a4d9178998',1,'linalg.h']]], - ['la_5flq_5ffactor_31',['la_lq_factor',['../linalg_8h.html#a7b2048bb219e58f455175041558ac44f',1,'linalg.h']]], - ['la_5flq_5ffactor_5fcmplx_32',['la_lq_factor_cmplx',['../linalg_8h.html#a5e6786c40f8f91e5f16f06e92be71ffa',1,'linalg.h']]], - ['la_5flu_5ffactor_33',['la_lu_factor',['../linalg_8h.html#a248142a5f0826cddac5daf1c74f234a6',1,'linalg.h']]], - ['la_5flu_5ffactor_5fcmplx_34',['la_lu_factor_cmplx',['../linalg_8h.html#ace554b62c12a5d9a2434c8171c756c47',1,'linalg.h']]], - ['la_5fmtx_5fmult_35',['la_mtx_mult',['../linalg_8h.html#a968b10545320af7bbe1030867ae88e8c',1,'linalg.h']]], - ['la_5fmtx_5fmult_5fcmplx_36',['la_mtx_mult_cmplx',['../linalg_8h.html#aefefe80e13f74470d5afaf44b3a45e76',1,'linalg.h']]], - ['la_5fmult_5flq_37',['la_mult_lq',['../linalg_8h.html#ac575e10e20e9c2d8d40ed8df47179773',1,'linalg.h']]], - ['la_5fmult_5flq_5fcmplx_38',['la_mult_lq_cmplx',['../linalg_8h.html#adcb07293cf47d090dfb89c20837ca7b5',1,'linalg.h']]], - ['la_5fmult_5fqr_39',['la_mult_qr',['../linalg_8h.html#a95f921847131eaedd62a439490d2a801',1,'linalg.h']]], - ['la_5fmult_5fqr_5fcmplx_40',['la_mult_qr_cmplx',['../linalg_8h.html#acc25c0daa53c10ace21a61d78b2e79f3',1,'linalg.h']]], - ['la_5fpinverse_41',['la_pinverse',['../linalg_8h.html#af7f8185c0f25ad3fb0b89cc98d77b3d6',1,'linalg.h']]], - ['la_5fpinverse_5fcmplx_42',['la_pinverse_cmplx',['../linalg_8h.html#a71ba1a09caca9d59a9d24b95c7ea749b',1,'linalg.h']]], - ['la_5fqr_5ffactor_43',['la_qr_factor',['../linalg_8h.html#a791d5221eb8ad4fcd106cb218590dfc9',1,'linalg.h']]], - ['la_5fqr_5ffactor_5fcmplx_44',['la_qr_factor_cmplx',['../linalg_8h.html#ae5ffa6e8d9c850bd41f43f7564bf6896',1,'linalg.h']]], - ['la_5fqr_5ffactor_5fcmplx_5fpvt_45',['la_qr_factor_cmplx_pvt',['../linalg_8h.html#a4a3f6dafe185c2985fc76aab3d0abb97',1,'linalg.h']]], - ['la_5fqr_5ffactor_5fpvt_46',['la_qr_factor_pvt',['../linalg_8h.html#a4bc671dad87b42ff285a4241322a3764',1,'linalg.h']]], - ['la_5fqr_5frank1_5fupdate_47',['la_qr_rank1_update',['../linalg_8h.html#a9b0639faf9ac0af9bbdb348b92746d5f',1,'linalg.h']]], - ['la_5fqr_5frank1_5fupdate_5fcmplx_48',['la_qr_rank1_update_cmplx',['../linalg_8h.html#acfbd42393c8b1931ff11bc4c7e858aef',1,'linalg.h']]], - ['la_5frank_49',['la_rank',['../linalg_8h.html#a089690d293303e30c6eef0bb1e982191',1,'linalg.h']]], - ['la_5frank1_5fupdate_50',['la_rank1_update',['../linalg_8h.html#ab346fed23fd61f02d65e09c795c26d74',1,'linalg.h']]], - ['la_5frank1_5fupdate_5fcmplx_51',['la_rank1_update_cmplx',['../linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15',1,'linalg.h']]], - ['la_5frank_5fcmplx_52',['la_rank_cmplx',['../linalg_8h.html#afdc9b7e6ffab89915a082c00ceac7258',1,'linalg.h']]], - ['la_5fsolve_5fcholesky_53',['la_solve_cholesky',['../linalg_8h.html#a0dc578507a0cb6ada776142476383590',1,'linalg.h']]], - ['la_5fsolve_5fcholesky_5fcmplx_54',['la_solve_cholesky_cmplx',['../linalg_8h.html#a719ffdff56c8fa0875409c4f4e5e95cf',1,'linalg.h']]], - ['la_5fsolve_5fleast_5fsquares_55',['la_solve_least_squares',['../linalg_8h.html#a02eb049983dd41f2307bb52594fb210e',1,'linalg.h']]], - ['la_5fsolve_5fleast_5fsquares_5fcmplx_56',['la_solve_least_squares_cmplx',['../linalg_8h.html#ac3bb7b959d8cc7400e9b13290a895b64',1,'linalg.h']]], - ['la_5fsolve_5flq_57',['la_solve_lq',['../linalg_8h.html#a2c485d619c24435be713cf4356285e9a',1,'linalg.h']]], - ['la_5fsolve_5flq_5fcmplx_58',['la_solve_lq_cmplx',['../linalg_8h.html#a54ee9d9ab89b88b0ca682f70bc6c3c54',1,'linalg.h']]], - ['la_5fsolve_5flu_59',['la_solve_lu',['../linalg_8h.html#aae725d3247301d1163c58f89edff3d4b',1,'linalg.h']]], - ['la_5fsolve_5flu_5fcmplx_60',['la_solve_lu_cmplx',['../linalg_8h.html#aa067ac0d3f58e28371d413ab7419da74',1,'linalg.h']]], - ['la_5fsolve_5fqr_61',['la_solve_qr',['../linalg_8h.html#aefdc2e6758482d02a3aa7978f7d5efe0',1,'linalg.h']]], - ['la_5fsolve_5fqr_5fcmplx_62',['la_solve_qr_cmplx',['../linalg_8h.html#a0ff5f2519eb1d2af94e3b4a26dfb10fe',1,'linalg.h']]], - ['la_5fsolve_5fqr_5fcmplx_5fpvt_63',['la_solve_qr_cmplx_pvt',['../linalg_8h.html#ad0ee4a9c71de62911a71a342790f5070',1,'linalg.h']]], - ['la_5fsolve_5fqr_5fpvt_64',['la_solve_qr_pvt',['../linalg_8h.html#a62f97b4319f5574aef5e52bbacff14bb',1,'linalg.h']]], - ['la_5fsolve_5ftri_5fmtx_65',['la_solve_tri_mtx',['../linalg_8h.html#aed7b29bbff1472ebe805054eb9d8c6d4',1,'linalg.h']]], - ['la_5fsolve_5ftri_5fmtx_5fcmplx_66',['la_solve_tri_mtx_cmplx',['../linalg_8h.html#af87823d73fb5a319e4262594d147e38c',1,'linalg.h']]], - ['la_5fsort_5feigen_67',['la_sort_eigen',['../linalg_8h.html#abf5918abab8f97fc2ac5887e051ff493',1,'linalg.h']]], - ['la_5fsort_5feigen_5fcmplx_68',['la_sort_eigen_cmplx',['../linalg_8h.html#a090178a5f99a4b400da80481aad77757',1,'linalg.h']]], - ['la_5fsvd_69',['la_svd',['../linalg_8h.html#a56c0cea99a066e74c8fff9682d5ca92d',1,'linalg.h']]], - ['la_5fsvd_5fcmplx_70',['la_svd_cmplx',['../linalg_8h.html#afbffa0856d75c607a03d3dc7b5b1076e',1,'linalg.h']]], - ['la_5ftrace_71',['la_trace',['../linalg_8h.html#a7f611f8f3de7d56120c78e70671c7112',1,'linalg.h']]], - ['la_5ftrace_5fcmplx_72',['la_trace_cmplx',['../linalg_8h.html#a021fbb7fdccf557ec407a86bace43d85',1,'linalg.h']]], - ['la_5ftri_5fmtx_5fmult_73',['la_tri_mtx_mult',['../linalg_8h.html#ae7d70f1ef2a2824772e1bf0f726c257e',1,'linalg.h']]], - ['la_5ftri_5fmtx_5fmult_5fcmplx_74',['la_tri_mtx_mult_cmplx',['../linalg_8h.html#a02c464a9dd95298c91f431ae4d0773e9',1,'linalg.h']]] + ['get_0',['get',['../structlinalg_1_1csr__matrix.html#ab2eeae025874561c37412f1ecd8bd2cf',1,'linalg::csr_matrix']]] ]; diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js index c5450b53..9d86f397 100644 --- a/docs/html/search/functions_1.js +++ b/docs/html/search/functions_1.js @@ -1,13 +1,78 @@ var searchData= [ - ['mat_5fcholesky_0',['mat_cholesky',['../namespacelinalg__immutable.html#a5876e7f21f20679fd6c0c84768061a30',1,'linalg_immutable']]], - ['mat_5fcholesky_5frank1_5fdowndate_1',['mat_cholesky_rank1_downdate',['../namespacelinalg__immutable.html#afb844327cadfdd08580c94cb1668c2a8',1,'linalg_immutable']]], - ['mat_5fcholesky_5frank1_5fupdate_2',['mat_cholesky_rank1_update',['../namespacelinalg__immutable.html#a83eaeadc3a3cc5d81c46824174e5a90b',1,'linalg_immutable']]], - ['mat_5fdet_3',['mat_det',['../namespacelinalg__immutable.html#ab7abd8e3fd4170b5b5dfad4448a651c9',1,'linalg_immutable']]], - ['mat_5finverse_4',['mat_inverse',['../namespacelinalg__immutable.html#a98f5b4e5de682d686cb763ab60fcde7f',1,'linalg_immutable']]], - ['mat_5fpinverse_5',['mat_pinverse',['../namespacelinalg__immutable.html#aaf39795f72fad79a38213893b850d793',1,'linalg_immutable']]], - ['mat_5fqr_6',['mat_qr',['../namespacelinalg__immutable.html#a8f1ba0ce9f8fbece16a512145bbc197f',1,'linalg_immutable']]], - ['mat_5fqr_5frank1_5fupdate_7',['mat_qr_rank1_update',['../namespacelinalg__immutable.html#a4b09077ad1495833919bab84b144b297',1,'linalg_immutable']]], - ['mat_5frank1_5fupdate_8',['mat_rank1_update',['../namespacelinalg__immutable.html#a9648fd41cc3ce8ec40f67236d274f9a8',1,'linalg_immutable']]], - ['mat_5fsvd_9',['mat_svd',['../namespacelinalg__immutable.html#a6236acadb527f7762e3e1c0ee3d9ca82',1,'linalg_immutable']]] + ['la_5fband_5fdiag_5fmtx_5fmult_0',['la_band_diag_mtx_mult',['../linalg_8h.html#a64c2c86dc85ca7aad74667f153ae0437',1,'linalg.h']]], + ['la_5fband_5fdiag_5fmtx_5fmult_5fcmplx_1',['la_band_diag_mtx_mult_cmplx',['../linalg_8h.html#a910a1ec23e1112487573f35765a421ca',1,'linalg.h']]], + ['la_5fband_5fmtx_5fvec_5fmult_2',['la_band_mtx_vec_mult',['../linalg_8h.html#ae48bdfb08cd35a8876b3dc879547686e',1,'linalg.h']]], + ['la_5fband_5fmtx_5fvec_5fmult_5fcmplx_3',['la_band_mtx_vec_mult_cmplx',['../linalg_8h.html#ac9e5ee0c20bacc19d1dab1c1182525f0',1,'linalg.h']]], + ['la_5fband_5fto_5ffull_5fmtx_4',['la_band_to_full_mtx',['../linalg_8h.html#adf4bdd1f9670b6636a55f606c5de72ea',1,'linalg.h']]], + ['la_5fband_5fto_5ffull_5fmtx_5fcmplx_5',['la_band_to_full_mtx_cmplx',['../linalg_8h.html#aa53e764ecb002d381d746edfa6b2fd8f',1,'linalg.h']]], + ['la_5fcholesky_5ffactor_6',['la_cholesky_factor',['../linalg_8h.html#a3967bc139cba341a513d1353bea62ac9',1,'linalg.h']]], + ['la_5fcholesky_5ffactor_5fcmplx_7',['la_cholesky_factor_cmplx',['../linalg_8h.html#a1734acc61ef569dfff9c83bcad566f67',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fdowndate_8',['la_cholesky_rank1_downdate',['../linalg_8h.html#a292e54c48a8e7f0203bf11f02844691f',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fdowndate_5fcmplx_9',['la_cholesky_rank1_downdate_cmplx',['../linalg_8h.html#a00c15ec713541d15eae1fd0b01897689',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fupdate_10',['la_cholesky_rank1_update',['../linalg_8h.html#abeb7ee58d4151498be96aa91432f296f',1,'linalg.h']]], + ['la_5fcholesky_5frank1_5fupdate_5fcmplx_11',['la_cholesky_rank1_update_cmplx',['../linalg_8h.html#af19ebf41be31ee92f657131a8fbf55a3',1,'linalg.h']]], + ['la_5fdet_12',['la_det',['../linalg_8h.html#ac7b4894cd929a106e02a8e37a4d52913',1,'linalg.h']]], + ['la_5fdet_5fcmplx_13',['la_det_cmplx',['../linalg_8h.html#ace9edf6a878ee4dd0b220b75b7db6431',1,'linalg.h']]], + ['la_5fdiag_5fmtx_5fmult_14',['la_diag_mtx_mult',['../linalg_8h.html#a4b74177a8914b109e1bf3aa56c9d9cb7',1,'linalg.h']]], + ['la_5fdiag_5fmtx_5fmult_5fcmplx_15',['la_diag_mtx_mult_cmplx',['../linalg_8h.html#a63bec2daa56fdc4bbf3f45b67ea14f65',1,'linalg.h']]], + ['la_5fdiag_5fmtx_5fmult_5fmixed_16',['la_diag_mtx_mult_mixed',['../linalg_8h.html#a4d5bad18dcc8a52d9594cc21954c572d',1,'linalg.h']]], + ['la_5feigen_5fasymm_17',['la_eigen_asymm',['../linalg_8h.html#a9491626ab4b3664771e1282b61eeaa74',1,'linalg.h']]], + ['la_5feigen_5fcmplx_18',['la_eigen_cmplx',['../linalg_8h.html#ae5a16375c14c924836c33bafa747a1cf',1,'linalg.h']]], + ['la_5feigen_5fgen_19',['la_eigen_gen',['../linalg_8h.html#af3c6f1a45aee2f275d4b109c9bb660d2',1,'linalg.h']]], + ['la_5feigen_5fsymm_20',['la_eigen_symm',['../linalg_8h.html#ac208d5e6849972a77ef261f2e368868c',1,'linalg.h']]], + ['la_5fform_5flq_21',['la_form_lq',['../linalg_8h.html#ac54763802ad5c3966f8e14cdf93fdc96',1,'linalg.h']]], + ['la_5fform_5flq_5fcmplx_22',['la_form_lq_cmplx',['../linalg_8h.html#aa54b8d224976dca7ef384eed74f50bed',1,'linalg.h']]], + ['la_5fform_5flu_23',['la_form_lu',['../linalg_8h.html#a15774f6323c34d307c99b32ac4f188a7',1,'linalg.h']]], + ['la_5fform_5flu_5fcmplx_24',['la_form_lu_cmplx',['../linalg_8h.html#a73bea3ca338925cfa4a58bcaea726a14',1,'linalg.h']]], + ['la_5fform_5fqr_25',['la_form_qr',['../linalg_8h.html#afe39765d805c1d9ae93e9aa2f20d8548',1,'linalg.h']]], + ['la_5fform_5fqr_5fcmplx_26',['la_form_qr_cmplx',['../linalg_8h.html#a0338870fe1142f88c96db63495fec615',1,'linalg.h']]], + ['la_5fform_5fqr_5fcmplx_5fpvt_27',['la_form_qr_cmplx_pvt',['../linalg_8h.html#ad76e25c5eb98075e83cc9df493be5b38',1,'linalg.h']]], + ['la_5fform_5fqr_5fpvt_28',['la_form_qr_pvt',['../linalg_8h.html#aace787c5b11959a457b936ace4995033',1,'linalg.h']]], + ['la_5finverse_29',['la_inverse',['../linalg_8h.html#a95d6ed56844c62d553b940091837014b',1,'linalg.h']]], + ['la_5finverse_5fcmplx_30',['la_inverse_cmplx',['../linalg_8h.html#a7a821b41c61670f5710214a4d9178998',1,'linalg.h']]], + ['la_5flq_5ffactor_31',['la_lq_factor',['../linalg_8h.html#a7b2048bb219e58f455175041558ac44f',1,'linalg.h']]], + ['la_5flq_5ffactor_5fcmplx_32',['la_lq_factor_cmplx',['../linalg_8h.html#a5e6786c40f8f91e5f16f06e92be71ffa',1,'linalg.h']]], + ['la_5flu_5ffactor_33',['la_lu_factor',['../linalg_8h.html#a248142a5f0826cddac5daf1c74f234a6',1,'linalg.h']]], + ['la_5flu_5ffactor_5fcmplx_34',['la_lu_factor_cmplx',['../linalg_8h.html#ace554b62c12a5d9a2434c8171c756c47',1,'linalg.h']]], + ['la_5fmtx_5fmult_35',['la_mtx_mult',['../linalg_8h.html#a968b10545320af7bbe1030867ae88e8c',1,'linalg.h']]], + ['la_5fmtx_5fmult_5fcmplx_36',['la_mtx_mult_cmplx',['../linalg_8h.html#aefefe80e13f74470d5afaf44b3a45e76',1,'linalg.h']]], + ['la_5fmult_5flq_37',['la_mult_lq',['../linalg_8h.html#ac575e10e20e9c2d8d40ed8df47179773',1,'linalg.h']]], + ['la_5fmult_5flq_5fcmplx_38',['la_mult_lq_cmplx',['../linalg_8h.html#adcb07293cf47d090dfb89c20837ca7b5',1,'linalg.h']]], + ['la_5fmult_5fqr_39',['la_mult_qr',['../linalg_8h.html#a95f921847131eaedd62a439490d2a801',1,'linalg.h']]], + ['la_5fmult_5fqr_5fcmplx_40',['la_mult_qr_cmplx',['../linalg_8h.html#acc25c0daa53c10ace21a61d78b2e79f3',1,'linalg.h']]], + ['la_5fpinverse_41',['la_pinverse',['../linalg_8h.html#af7f8185c0f25ad3fb0b89cc98d77b3d6',1,'linalg.h']]], + ['la_5fpinverse_5fcmplx_42',['la_pinverse_cmplx',['../linalg_8h.html#a71ba1a09caca9d59a9d24b95c7ea749b',1,'linalg.h']]], + ['la_5fqr_5ffactor_43',['la_qr_factor',['../linalg_8h.html#a791d5221eb8ad4fcd106cb218590dfc9',1,'linalg.h']]], + ['la_5fqr_5ffactor_5fcmplx_44',['la_qr_factor_cmplx',['../linalg_8h.html#ae5ffa6e8d9c850bd41f43f7564bf6896',1,'linalg.h']]], + ['la_5fqr_5ffactor_5fcmplx_5fpvt_45',['la_qr_factor_cmplx_pvt',['../linalg_8h.html#a4a3f6dafe185c2985fc76aab3d0abb97',1,'linalg.h']]], + ['la_5fqr_5ffactor_5fpvt_46',['la_qr_factor_pvt',['../linalg_8h.html#a4bc671dad87b42ff285a4241322a3764',1,'linalg.h']]], + ['la_5fqr_5frank1_5fupdate_47',['la_qr_rank1_update',['../linalg_8h.html#a9b0639faf9ac0af9bbdb348b92746d5f',1,'linalg.h']]], + ['la_5fqr_5frank1_5fupdate_5fcmplx_48',['la_qr_rank1_update_cmplx',['../linalg_8h.html#acfbd42393c8b1931ff11bc4c7e858aef',1,'linalg.h']]], + ['la_5frank_49',['la_rank',['../linalg_8h.html#a089690d293303e30c6eef0bb1e982191',1,'linalg.h']]], + ['la_5frank1_5fupdate_50',['la_rank1_update',['../linalg_8h.html#ab346fed23fd61f02d65e09c795c26d74',1,'linalg.h']]], + ['la_5frank1_5fupdate_5fcmplx_51',['la_rank1_update_cmplx',['../linalg_8h.html#a3c958fe274f8d1663dd0188455a5fe15',1,'linalg.h']]], + ['la_5frank_5fcmplx_52',['la_rank_cmplx',['../linalg_8h.html#afdc9b7e6ffab89915a082c00ceac7258',1,'linalg.h']]], + ['la_5fsolve_5fcholesky_53',['la_solve_cholesky',['../linalg_8h.html#a0dc578507a0cb6ada776142476383590',1,'linalg.h']]], + ['la_5fsolve_5fcholesky_5fcmplx_54',['la_solve_cholesky_cmplx',['../linalg_8h.html#a719ffdff56c8fa0875409c4f4e5e95cf',1,'linalg.h']]], + ['la_5fsolve_5fleast_5fsquares_55',['la_solve_least_squares',['../linalg_8h.html#a02eb049983dd41f2307bb52594fb210e',1,'linalg.h']]], + ['la_5fsolve_5fleast_5fsquares_5fcmplx_56',['la_solve_least_squares_cmplx',['../linalg_8h.html#ac3bb7b959d8cc7400e9b13290a895b64',1,'linalg.h']]], + ['la_5fsolve_5flq_57',['la_solve_lq',['../linalg_8h.html#a2c485d619c24435be713cf4356285e9a',1,'linalg.h']]], + ['la_5fsolve_5flq_5fcmplx_58',['la_solve_lq_cmplx',['../linalg_8h.html#a54ee9d9ab89b88b0ca682f70bc6c3c54',1,'linalg.h']]], + ['la_5fsolve_5flu_59',['la_solve_lu',['../linalg_8h.html#aae725d3247301d1163c58f89edff3d4b',1,'linalg.h']]], + ['la_5fsolve_5flu_5fcmplx_60',['la_solve_lu_cmplx',['../linalg_8h.html#aa067ac0d3f58e28371d413ab7419da74',1,'linalg.h']]], + ['la_5fsolve_5fqr_61',['la_solve_qr',['../linalg_8h.html#aefdc2e6758482d02a3aa7978f7d5efe0',1,'linalg.h']]], + ['la_5fsolve_5fqr_5fcmplx_62',['la_solve_qr_cmplx',['../linalg_8h.html#a0ff5f2519eb1d2af94e3b4a26dfb10fe',1,'linalg.h']]], + ['la_5fsolve_5fqr_5fcmplx_5fpvt_63',['la_solve_qr_cmplx_pvt',['../linalg_8h.html#ad0ee4a9c71de62911a71a342790f5070',1,'linalg.h']]], + ['la_5fsolve_5fqr_5fpvt_64',['la_solve_qr_pvt',['../linalg_8h.html#a62f97b4319f5574aef5e52bbacff14bb',1,'linalg.h']]], + ['la_5fsolve_5ftri_5fmtx_65',['la_solve_tri_mtx',['../linalg_8h.html#aed7b29bbff1472ebe805054eb9d8c6d4',1,'linalg.h']]], + ['la_5fsolve_5ftri_5fmtx_5fcmplx_66',['la_solve_tri_mtx_cmplx',['../linalg_8h.html#af87823d73fb5a319e4262594d147e38c',1,'linalg.h']]], + ['la_5fsort_5feigen_67',['la_sort_eigen',['../linalg_8h.html#abf5918abab8f97fc2ac5887e051ff493',1,'linalg.h']]], + ['la_5fsort_5feigen_5fcmplx_68',['la_sort_eigen_cmplx',['../linalg_8h.html#a090178a5f99a4b400da80481aad77757',1,'linalg.h']]], + ['la_5fsvd_69',['la_svd',['../linalg_8h.html#a56c0cea99a066e74c8fff9682d5ca92d',1,'linalg.h']]], + ['la_5fsvd_5fcmplx_70',['la_svd_cmplx',['../linalg_8h.html#afbffa0856d75c607a03d3dc7b5b1076e',1,'linalg.h']]], + ['la_5ftrace_71',['la_trace',['../linalg_8h.html#a7f611f8f3de7d56120c78e70671c7112',1,'linalg.h']]], + ['la_5ftrace_5fcmplx_72',['la_trace_cmplx',['../linalg_8h.html#a021fbb7fdccf557ec407a86bace43d85',1,'linalg.h']]], + ['la_5ftri_5fmtx_5fmult_73',['la_tri_mtx_mult',['../linalg_8h.html#ae7d70f1ef2a2824772e1bf0f726c257e',1,'linalg.h']]], + ['la_5ftri_5fmtx_5fmult_5fcmplx_74',['la_tri_mtx_mult_cmplx',['../linalg_8h.html#a02c464a9dd95298c91f431ae4d0773e9',1,'linalg.h']]] ]; diff --git a/docs/html/search/namespaces_3.js b/docs/html/search/namespaces_3.js new file mode 100644 index 00000000..e99569f0 --- /dev/null +++ b/docs/html/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sparskit_0',['sparskit',['../namespacesparskit.html',1,'']]] +]; diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js index 0090d495..35d35ff9 100644 --- a/docs/html/search/searchdata.js +++ b/docs/html/search/searchdata.js @@ -1,11 +1,11 @@ var indexSectionsWithContent = { - 0: "bcdefilmqrstz", - 1: "bcdeflmqrstz", - 2: "blq", + 0: "abcdefgilmnopqrstvz", + 1: "abcdefgilmnopqrstz", + 2: "blqs", 3: "l", - 4: "l", - 5: "l", + 4: "gl", + 5: "cilrv", 6: "l" }; diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js index 5dd8e2c7..bed433a4 100644 --- a/docs/html/search/variables_0.js +++ b/docs/html/search/variables_0.js @@ -1,14 +1,4 @@ var searchData= [ - ['la_5farray_5fsize_5ferror_0',['la_array_size_error',['../namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9',1,'linalg']]], - ['la_5fconvergence_5ferror_1',['la_convergence_error',['../namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7',1,'linalg']]], - ['la_5fhermitian_5ftranspose_2',['la_hermitian_transpose',['../namespacelinalg.html#a0e420096028b759a87f2f4f4306d202a',1,'linalg']]], - ['la_5finvalid_5finput_5ferror_3',['la_invalid_input_error',['../namespacelinalg.html#ace738355659bce2e9591473f0d543ef7',1,'linalg']]], - ['la_5finvalid_5foperation_5ferror_4',['la_invalid_operation_error',['../namespacelinalg.html#a4f47021e96cd813b568422a2eb3821bc',1,'linalg']]], - ['la_5fmatrix_5fformat_5ferror_5',['la_matrix_format_error',['../namespacelinalg.html#ad89b9d502b7c484df53f9b10b9545776',1,'linalg']]], - ['la_5fno_5ferror_6',['la_no_error',['../namespacelinalg.html#aefdfc0979567e89aa3b8c599d3f766f4',1,'linalg']]], - ['la_5fno_5foperation_7',['la_no_operation',['../namespacelinalg.html#a665d131453840e869510e9e8d2f7f151',1,'linalg']]], - ['la_5fout_5fof_5fmemory_5ferror_8',['la_out_of_memory_error',['../namespacelinalg.html#abfb78ba61c0c2751f1c771c984469006',1,'linalg']]], - ['la_5fsingular_5fmatrix_5ferror_9',['la_singular_matrix_error',['../namespacelinalg.html#af5dc9d60151bb81436b442525871c8c9',1,'linalg']]], - ['la_5ftranspose_10',['la_transpose',['../namespacelinalg.html#a2b842a1fb17710d7ec2f117f5fdb2a59',1,'linalg']]] + ['column_5findices_0',['column_indices',['../structlinalg_1_1csr__matrix.html#acb77b1101f32cefe10e1d15fdd87d307',1,'linalg::csr_matrix']]] ]; diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js index f0e2a425..705b1aa4 100644 --- a/docs/html/search/variables_1.js +++ b/docs/html/search/variables_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['p_0',['p',['../structlinalg__immutable_1_1lu__results.html#ae1e1fd78123e04a2be4f1bfd25ddddb1',1,'linalg_immutable::lu_results::p()'],['../structlinalg__immutable_1_1lu__results__cmplx.html#a99d03bc910361aab08d17fcc4aaa960d',1,'linalg_immutable::lu_results_cmplx::p()'],['../structlinalg__immutable_1_1qr__results.html#a053899b9dffba08b5052544c13d4983c',1,'linalg_immutable::qr_results::p()'],['../structlinalg__immutable_1_1qr__results__cmplx.html#a782d54320ca646427702d5f2e0a9372f',1,'linalg_immutable::qr_results_cmplx::p()']]] + ['indices_0',['indices',['../structlinalg_1_1msr__matrix.html#a123d2cb513b31589cc6bafb67c63a62a',1,'linalg::msr_matrix']]] ]; diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js index 4201d28a..5dd8e2c7 100644 --- a/docs/html/search/variables_2.js +++ b/docs/html/search/variables_2.js @@ -1,4 +1,14 @@ var searchData= [ - ['q_0',['q',['../structlinalg__immutable_1_1qr__results.html#a91547ec8def57c0cc59271ccf59b3a01',1,'linalg_immutable::qr_results::q()'],['../structlinalg__immutable_1_1qr__results__cmplx.html#a7fa839ced2d020c61550d5b6cff9bb69',1,'linalg_immutable::qr_results_cmplx::q()']]] + ['la_5farray_5fsize_5ferror_0',['la_array_size_error',['../namespacelinalg.html#a7974856c0c0c76e6f1f2098a1eb7eac9',1,'linalg']]], + ['la_5fconvergence_5ferror_1',['la_convergence_error',['../namespacelinalg.html#ac691dea40873ac2a70c8b44c933774a7',1,'linalg']]], + ['la_5fhermitian_5ftranspose_2',['la_hermitian_transpose',['../namespacelinalg.html#a0e420096028b759a87f2f4f4306d202a',1,'linalg']]], + ['la_5finvalid_5finput_5ferror_3',['la_invalid_input_error',['../namespacelinalg.html#ace738355659bce2e9591473f0d543ef7',1,'linalg']]], + ['la_5finvalid_5foperation_5ferror_4',['la_invalid_operation_error',['../namespacelinalg.html#a4f47021e96cd813b568422a2eb3821bc',1,'linalg']]], + ['la_5fmatrix_5fformat_5ferror_5',['la_matrix_format_error',['../namespacelinalg.html#ad89b9d502b7c484df53f9b10b9545776',1,'linalg']]], + ['la_5fno_5ferror_6',['la_no_error',['../namespacelinalg.html#aefdfc0979567e89aa3b8c599d3f766f4',1,'linalg']]], + ['la_5fno_5foperation_7',['la_no_operation',['../namespacelinalg.html#a665d131453840e869510e9e8d2f7f151',1,'linalg']]], + ['la_5fout_5fof_5fmemory_5ferror_8',['la_out_of_memory_error',['../namespacelinalg.html#abfb78ba61c0c2751f1c771c984469006',1,'linalg']]], + ['la_5fsingular_5fmatrix_5ferror_9',['la_singular_matrix_error',['../namespacelinalg.html#af5dc9d60151bb81436b442525871c8c9',1,'linalg']]], + ['la_5ftranspose_10',['la_transpose',['../namespacelinalg.html#a2b842a1fb17710d7ec2f117f5fdb2a59',1,'linalg']]] ]; diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js index 30a4e410..1e0a7566 100644 --- a/docs/html/search/variables_3.js +++ b/docs/html/search/variables_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['r_0',['r',['../structlinalg__immutable_1_1qr__results.html#aeeea31b1fad256f5fcc2462b2990d56b',1,'linalg_immutable::qr_results::r()'],['../structlinalg__immutable_1_1qr__results__cmplx.html#a9382745395a25db425c5de89c33df2cd',1,'linalg_immutable::qr_results_cmplx::r()']]] + ['row_5findices_0',['row_indices',['../structlinalg_1_1csr__matrix.html#a1a2f379ce437fed824e6eca3627bd1de',1,'linalg::csr_matrix']]] ]; diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js index 2a4689c8..3f9b2fe2 100644 --- a/docs/html/search/variables_4.js +++ b/docs/html/search/variables_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['s_0',['s',['../structlinalg__immutable_1_1svd__results.html#acbc05e1d170351bbfcd4cd1f089c81d8',1,'linalg_immutable::svd_results::s()'],['../structlinalg__immutable_1_1svd__results__cmplx.html#a66544dafaacf2b5465e6b1c55d804fff',1,'linalg_immutable::svd_results_cmplx::s()']]] + ['values_0',['values',['../structlinalg_1_1csr__matrix.html#ad83ad0af16fdc69c396cce5925471bd5',1,'linalg::csr_matrix::values'],['../structlinalg_1_1msr__matrix.html#a8e692d3479f3562935e60b771ec91e75',1,'linalg::msr_matrix::values']]] ]; diff --git a/docs/html/sparskit_8f90_source.html b/docs/html/sparskit_8f90_source.html new file mode 100644 index 00000000..70f56d61 --- /dev/null +++ b/docs/html/sparskit_8f90_source.html @@ -0,0 +1,327 @@ + + + + + + + +linalg: D:/Code/linalg/src/sparskit.f90 Source File + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparskit.f90
+
+
+
1
+
3module sparskit
+
4 implicit none
+
5
+
6 ! BLASSM.F
+
7 interface
+
8
+
+
31 subroutine amub(nrow, ncol, job, a, ja, ia, b, jb, ib, c, jc, ic, &
+
32 nzmax, iw, ierr)
+
33 use iso_fortran_env, only : int32, real64
+
34 integer(int32), intent(in) :: nrow, ncol, job, nzmax
+
35 integer(int32), intent(in) :: ja(*), ia(nrow+1), jb(*), ib(*)
+
36 integer(int32), intent(out) :: jc(*), ic(*), iw(ncol), ierr
+
37 real(real64), intent(in) :: a(*), b(*)
+
38 real(real64), intent(out) :: c(*)
+
+
39 end subroutine
+
40
+
+
63 subroutine aplb(nrow, ncol, job, a, ja, ia, b, jb, ib, c, jc, ic, &
+
64 nzmax, iw, ierr)
+
65 use iso_fortran_env, only : int32, real64
+
66 integer(int32), intent(in) :: nrow, ncol, job, nzmax
+
67 integer(int32), intent(in) :: ja(*), ia(nrow+1), jb(*), ib(nrow+1)
+
68 real(real64), intent(in) :: a(*), b(*)
+
69 real(real64), intent(out) :: c(*)
+
70 integer(int32), intent(out) :: jc(*), ic(nrow+1), iw(ncol), ierr
+
+
71 end subroutine
+
72
+
+
96 subroutine aplsb(nrow, ncol, a, ja, ia, s, b, jb, ib, c, jc, ic, &
+
97 nzmax, iw, ierr)
+
98 use iso_fortran_env, only : int32, real64
+
99 integer(int32), intent(in) :: nrow, ncol, nzmax
+
100 integer(int32), intent(in) :: ja(*), ia(nrow+1), jb(*), ib(nrow+1)
+
101 integer(int32), intent(out) :: ierr
+
102 integer(int32), intent(out) :: jc(*), ic(nrow+1), iw(ncol)
+
103 real(real64), intent(in) :: s
+
104 real(real64), intent(in) :: a(*), b(*)
+
105 real(real64), intent(out) :: c(*)
+
+
106 end subroutine
+
107 end interface
+
108
+
109 ! FORMATS.F
+
110 interface
+
111
+
+
124 subroutine csrcsc2(n, n2, job, ipos, a, ja, ia, a0, ja0, ia0)
+
125 use iso_fortran_env, only : int32, real64
+
126 integer(int32), intent(in) :: n, n2, job, ipos, ja(*), ia(n+1)
+
127 integer(int32), intent(out) :: ja0(*), ia0(n2+1)
+
128 real(real64), intent(in) :: a(*)
+
129 real(real64), intent(out) :: a0(*)
+
+
130 end subroutine
+
131
+
+
150 subroutine bndcsr(n, abd, nabd, lowd, ml, mu, a, ja, ia, len, ierr)
+
151 use iso_fortran_env, only : int32, real64
+
152 integer(int32), intent(in) :: n, nabd, lowd, ml, mu, len
+
153 real(real64), intent(in) :: abd(nabd,*)
+
154 real(real64), intent(out) :: a(*)
+
155 integer(int32), intent(out) :: ia(n+1), ja(*), ierr
+
+
156 end subroutine
+
157
+
+
170 subroutine csrmsr(n, a, ja, ia, ao, jao, wk, iwk)
+
171 use iso_fortran_env, only : int32, real64
+
172 integer(int32), intent(in) :: n
+
173 integer(int32), intent(inout) :: ja(*), ia(n+1)
+
174 integer(int32), intent(out) :: jao(*), iwk(n+1)
+
175 real(real64), intent(inout) :: a(*)
+
176 real(real64), intent(out) :: ao(*), wk(n)
+
+
177 end subroutine
+
178
+
+
191 subroutine msrcsr(n, a, ja, ao, jao, iao, wk, iwk)
+
192 use iso_fortran_env, only : int32, real64
+
193 integer(int32), intent(in) :: n, ja(*)
+
194 integer(int32), intent(out) :: jao(*), iao(n+1), iwk(n+1)
+
195 real(real64), intent(in) :: a(*)
+
196 real(real64), intent(out) :: ao(*), wk(n)
+
+
197 end subroutine
+
198 end interface
+
199
+
200 ! UNARY.F
+
201 interface
+
202
+
+
214 function getelm(i, j, a, ja, ia, iadd, sorted) result(rst)
+
215 use iso_fortran_env, only : int32, real64
+
216 integer(int32), intent(in) :: i, j, ia(*), ja(*)
+
217 real(real64), intent(in) :: a(*)
+
218 integer(int32), intent(out) :: iadd
+
219 logical, intent(in) :: sorted
+
220 real(real64) :: rst
+
+
221 end function
+
222
+
+
234 subroutine getdia(nrow, ncol, job, a, ja, ia, len, diag, idiag, ioff)
+
235 use iso_fortran_env, only : int32, real64
+
236 integer(int32), intent(in) :: nrow, ncol, job, ja(*), ia(*), ioff
+
237 integer(int32), intent(out) :: len, idiag(*)
+
238 real(real64), intent(in) :: a(*)
+
239 real(real64), intent(out) :: diag(*)
+
+
240 end subroutine
+
241 end interface
+
242
+
243 ! ILUT.F
+
244 interface
+
245
+
+
277 subroutine ilut(n, a, ja, ia, lfil, droptol, alu, jlu, ju, iwk, w, &
+
278 jw, ierr)
+
279 use iso_fortran_env, only : int32, real64
+
280 integer(int32), intent(in) :: n, ja(*), ia(n+1), lfil, iwk
+
281 integer(int32), intent(out) :: jlu(*), ju(n), jw(2*n), ierr
+
282 real(real64), intent(in) :: a(*), droptol
+
283 real(real64), intent(out) :: alu(*), w(n+1)
+
+
284 end subroutine
+
285
+
+
343 subroutine ilutp(n, a, ja, ia, lfil, droptol, permtol, mbloc, alu, &
+
344 jlu, ju, iwk, w, jw, iperm, ierr)
+
345 use iso_fortran_env, only : int32, real64
+
346 integer(int32), intent(in) :: n, lfil, iwk, mbloc
+
347 integer(int32), intent(inout) :: ja(*), ia(n+1)
+
348 integer(int32), intent(out) :: jlu(*), ju(n), jw(2*n), &
+
349 iperm(2*n), ierr
+
350 real(real64), intent(in) :: droptol, permtol
+
351 real(real64), intent(inout) :: a(*)
+
352 real(real64), intent(out) :: alu(*), w(n+1)
+
+
353 end subroutine
+
354
+
+
386 subroutine ilud(n, a, ja, ia, alph, tol, alu, jlu, ju, iwk, w, jw, ierr)
+
387 use iso_fortran_env, only : int32, real64
+
388 integer(int32), intent(in) :: n, iwk, ja(*), ia(n+1)
+
389 integer(int32), intent(out) :: jlu(*), ju(n), jw(2*n), ierr
+
390 real(real64), intent(in) :: a(*), alph, tol
+
391 real(real64), intent(out) :: alu(*), w(2*n)
+
+
392 end subroutine
+
393
+
+
433 subroutine iludp(n, a, ja, ia, alph, droptol, permtol, mbloc, alu, &
+
434 jlu, ju, iwk, w, jw, iperm, ierr)
+
435 use iso_fortran_env, only : int32, real64
+
436 integer(int32), intent(in) :: n, iwk, mbloc
+
437 integer(int32), intent(inout) :: ja(*), ia(n+1)
+
438 integer(int32), intent(out) :: jlu(*), ju(n), jw(2*n), iperm(2*n), &
+
439 ierr
+
440 real(real64), intent(in) :: alph, droptol, permtol
+
441 real(real64), intent(inout) :: a(*)
+
442 real(real64), intent(out) :: alu(*), w(2*n)
+
+
443 end subroutine
+
444
+
+
474 subroutine pgmres(n, im, rhs, sol, vv, eps, maxits, iout, aa, ja, ia, &
+
475 alu, jlu, ju, ierr)
+
476 use iso_fortran_env, only : int32, real64
+
477 integer(int32), intent(in) :: n, im, maxits, iout, ja(*), ia(n+1), &
+
478 jlu(*), ju(n)
+
479 integer(int32), intent(out) :: ierr
+
480 real(real64), intent(in) :: aa(*), eps, alu(*)
+
481 real(real64), intent(inout) :: rhs(n), sol(n)
+
482 real(real64), intent(out) :: vv(n,*)
+
+
483 end subroutine
+
484
+
+
493 subroutine lusol(n, y, x, alu, jlu, ju)
+
494 use iso_fortran_env, only : int32, real64
+
495 integer(int32), intent(in) :: n, jlu(*), ju(*)
+
496 real(real64), intent(in) :: y(n), alu(*)
+
497 real(real64), intent(out) :: x(n)
+
+
498 end subroutine
+
499 end interface
+
500end module
+
Computes the matrix product: C = A * B.
Definition sparskit.f90:31
+
Computes the matrix sum: C = A + B, where the matrices are given in CSR format.
Definition sparskit.f90:63
+
Computes the matrix sum: C = A + s * B, where the matrices are given in CSR format.
Definition sparskit.f90:96
+
Converts the LINPACK, BLAS, LAPACK banded matrix format into a CSR format.
Definition sparskit.f90:150
+
Converts a CSR matrix into a CSC matrix (transposition).
Definition sparskit.f90:124
+
Converts a CSR matrix to an MSR matrix.
Definition sparskit.f90:170
+
Extracts the diagonal from a matrix.
Definition sparskit.f90:234
+
Gets element A(i,j) of matrix A for any pair (i,j).
Definition sparskit.f90:214
+
Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping stra...
Definition sparskit.f90:386
+
Computes the incomplete LU factorization of a sparse matrix in CSR format with standard dropping stra...
Definition sparskit.f90:433
+
Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mec...
Definition sparskit.f90:277
+
Computes the incomplete LU factorization of a sparse matrix in CSR format using a dual truncation mec...
Definition sparskit.f90:343
+
Solves the LU-factored system (LU) x = y.
Definition sparskit.f90:493
+
Converts and MSR matrix to a CSR matrix.
Definition sparskit.f90:191
+
An ILUT preconditioned GMRES algorithm. This routine utilizes the L and U matrices generated by the I...
Definition sparskit.f90:474
+
An interface to the SPARSKIT library available at https://www-users.cse.umn.edu/~saad/software/SPARSK...
Definition sparskit.f90:3
+
+
+ + + + diff --git a/docs/html/structlinalg_1_1csr__matrix-members.html b/docs/html/structlinalg_1_1csr__matrix-members.html new file mode 100644 index 00000000..221a8ecf --- /dev/null +++ b/docs/html/structlinalg_1_1csr__matrix-members.html @@ -0,0 +1,121 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::csr_matrix Member List
+
+
+ +

This is the complete list of members for linalg::csr_matrix, including all inherited members.

+ + + + + +
column_indiceslinalg::csr_matrix
getcsr_get_elementlinalg::csr_matrix
row_indiceslinalg::csr_matrix
valueslinalg::csr_matrix
+
+ + + + diff --git a/docs/html/structlinalg_1_1csr__matrix.html b/docs/html/structlinalg_1_1csr__matrix.html new file mode 100644 index 00000000..f3f0d62d --- /dev/null +++ b/docs/html/structlinalg_1_1csr__matrix.html @@ -0,0 +1,222 @@ + + + + + + + +linalg: linalg::csr_matrix Type Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::csr_matrix Type Reference
+
+
+ +

A sparse matrix stored in compressed sparse row (CSR) format. + More...

+ + + + + +

+Public Member Functions

procedure, public get csr_get_element
 Gets the requested element from the matrix.
 
+ + + + + + + + + + +

+Public Attributes

integer(int32), dimension(:), allocatable row_indices
 An M+1 element array containing the indices in V an JA at which the requested row starts.
 
integer(int32), dimension(:), allocatable column_indices
 An NNZ-element array, where NNZ is the number of non-zero values, containing the column indices of each value.
 
real(real64), dimension(:), allocatable values
 An NNZ-element array, where NNZ is the number of non-zero values, containing the non-zero values of the matrix.
 
+

Detailed Description

+

A sparse matrix stored in compressed sparse row (CSR) format.

+ +

Definition at line 232 of file linalg.f90.

+

Member Function/Subroutine Documentation

+ +

◆ get()

+ +
+
+ + + + +
procedure, public linalg::csr_matrix::get
+
+ +

Gets the requested element from the matrix.

+ +

Definition at line 246 of file linalg.f90.

+ +
+
+

Member Data Documentation

+ +

◆ column_indices

+ +
+
+ + + + +
integer(int32), dimension(:), allocatable linalg::csr_matrix::column_indices
+
+ +

An NNZ-element array, where NNZ is the number of non-zero values, containing the column indices of each value.

+ +

Definition at line 238 of file linalg.f90.

+ +
+
+ +

◆ row_indices

+ +
+
+ + + + +
integer(int32), dimension(:), allocatable linalg::csr_matrix::row_indices
+
+ +

An M+1 element array containing the indices in V an JA at which the requested row starts.

+ +

Definition at line 235 of file linalg.f90.

+ +
+
+ +

◆ values

+ +
+
+ + + + +
real(real64), dimension(:), allocatable linalg::csr_matrix::values
+
+ +

An NNZ-element array, where NNZ is the number of non-zero values, containing the non-zero values of the matrix.

+ +

Definition at line 241 of file linalg.f90.

+ +
+
+
The documentation for this type was generated from the following file: +
+
+ + + + diff --git a/docs/html/structlinalg_1_1csr__matrix.js b/docs/html/structlinalg_1_1csr__matrix.js new file mode 100644 index 00000000..13f0066b --- /dev/null +++ b/docs/html/structlinalg_1_1csr__matrix.js @@ -0,0 +1,7 @@ +var structlinalg_1_1csr__matrix = +[ + [ "get", "structlinalg_1_1csr__matrix.html#ab2eeae025874561c37412f1ecd8bd2cf", null ], + [ "column_indices", "structlinalg_1_1csr__matrix.html#acb77b1101f32cefe10e1d15fdd87d307", null ], + [ "row_indices", "structlinalg_1_1csr__matrix.html#a1a2f379ce437fed824e6eca3627bd1de", null ], + [ "values", "structlinalg_1_1csr__matrix.html#ad83ad0af16fdc69c396cce5925471bd5", null ] +]; \ No newline at end of file diff --git a/docs/html/structlinalg_1_1msr__matrix-members.html b/docs/html/structlinalg_1_1msr__matrix-members.html new file mode 100644 index 00000000..4d766f0f --- /dev/null +++ b/docs/html/structlinalg_1_1msr__matrix-members.html @@ -0,0 +1,119 @@ + + + + + + + +linalg: Member List + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
linalg::msr_matrix Member List
+
+
+ +

This is the complete list of members for linalg::msr_matrix, including all inherited members.

+ + + +
indiceslinalg::msr_matrix
valueslinalg::msr_matrix
+
+ + + + diff --git a/docs/html/structlinalg_1_1msr__matrix.html b/docs/html/structlinalg_1_1msr__matrix.html new file mode 100644 index 00000000..753c075e --- /dev/null +++ b/docs/html/structlinalg_1_1msr__matrix.html @@ -0,0 +1,175 @@ + + + + + + + +linalg: linalg::msr_matrix Type Reference + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
linalg 1.8.0 +
+
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
linalg::msr_matrix Type Reference
+
+
+ +

A sparse matrix stored in modified sparse row format. This format is convenient for situations where the diagonal is fully populated. + More...

+ + + + + + + + +

+Public Attributes

integer(int32), dimension(:), allocatable indices
 An NNZ-element array containing the index information.
 
real(real64), dimension(:), allocatable values
 An NNZ-element array containing the non-zero values from the matrix. The first MIN(M,N) elements contain the diagonal.
 
+

Detailed Description

+

A sparse matrix stored in modified sparse row format. This format is convenient for situations where the diagonal is fully populated.

+ +

Definition at line 252 of file linalg.f90.

+

Member Data Documentation

+ +

◆ indices

+ +
+
+ + + + +
integer(int32), dimension(:), allocatable linalg::msr_matrix::indices
+
+ +

An NNZ-element array containing the index information.

+ +

Definition at line 254 of file linalg.f90.

+ +
+
+ +

◆ values

+ +
+
+ + + + +
real(real64), dimension(:), allocatable linalg::msr_matrix::values
+
+ +

An NNZ-element array containing the non-zero values from the matrix. The first MIN(M,N) elements contain the diagonal.

+ +

Definition at line 257 of file linalg.f90.

+ +
+
+
The documentation for this type was generated from the following file: +
+
+ + + + diff --git a/docs/html/structlinalg_1_1msr__matrix.js b/docs/html/structlinalg_1_1msr__matrix.js new file mode 100644 index 00000000..32900313 --- /dev/null +++ b/docs/html/structlinalg_1_1msr__matrix.js @@ -0,0 +1,5 @@ +var structlinalg_1_1msr__matrix = +[ + [ "indices", "structlinalg_1_1msr__matrix.html#a123d2cb513b31589cc6bafb67c63a62a", null ], + [ "values", "structlinalg_1_1msr__matrix.html#a8e692d3479f3562935e60b771ec91e75", null ] +]; \ No newline at end of file