Skip to content

Commit

Permalink
deploy: a541801
Browse files Browse the repository at this point in the history
  • Loading branch information
perazz committed Feb 2, 2025
1 parent e36995e commit bb56f54
Show file tree
Hide file tree
Showing 14 changed files with 149 additions and 27 deletions.
12 changes: 6 additions & 6 deletions annotated.html
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,8 @@
<tr id="row_1_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__cholesky.html" target="_self">la_cholesky</a></td><td class="desc">Cholesky factorization of a matrix, based on LAPACK <a class="el" href="interfacela__lapack_1_1potrf.html">POTRF</a> functions </td></tr>
<tr id="row_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__cholesky_1_1chol.html" target="_self">chol</a></td><td class="desc">Computes the Cholesky factorization \( A = L \cdot L^T \), or \( A = U^T \cdot U \) </td></tr>
<tr id="row_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__cholesky_1_1cholesky.html" target="_self">cholesky</a></td><td class="desc">Computes the Cholesky factorization \( A = L \cdot L^T \), or \( A = U^T \cdot U \) </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="dynsection.toggleFolder('2_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__determinant.html" target="_self">la_determinant</a></td><td class="desc"></td></tr>
<tr id="row_2_0_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__determinant_1_1det.html" target="_self">det</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="dynsection.toggleFolder('2_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__determinant.html" target="_self">la_determinant</a></td><td class="desc">Determinant of a rectangular matrix </td></tr>
<tr id="row_2_0_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__determinant_1_1det.html" target="_self">det</a></td><td class="desc">Compute the determinant of a rectangular matrix </td></tr>
<tr id="row_3_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__eig.html" target="_self">la_eig</a></td><td class="desc">Eigenvalues and Eigenvectors </td></tr>
<tr id="row_3_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__eig_1_1eig.html" target="_self">eig</a></td><td class="desc">Eigendecomposition of a square matrix, returning eigenvalues and optionally eigenvectors </td></tr>
<tr id="row_3_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__eig_1_1eigh.html" target="_self">eigh</a></td><td class="desc">Eigendecomposition of a real symmetric or complex Hermitian matrix </td></tr>
Expand All @@ -181,8 +181,8 @@
<tr id="row_5_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__inverse_1_1inv.html" target="_self">inv</a></td><td class="desc">Compute the inverse of a square matrix </td></tr>
<tr id="row_5_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__inverse_1_1invert.html" target="_self">invert</a></td><td class="desc"></td></tr>
<tr id="row_5_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__inverse_1_1operator_07_8inv_8_08.html" target="_self">operator(.inv.)</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_6_" class="arrow" onclick="dynsection.toggleFolder('6_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__lapack.html" target="_self">la_lapack</a></td><td class="desc"></td></tr>
<tr id="row_6_0_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__lapack_1_1bbcsd.html" target="_self">bbcsd</a></td><td class="desc">BBCSD: computes the CS decomposition of a unitary matrix in bidiagonal-block form, [ B11 | B12 0 0 ] [ 0 | 0 -I 0 ] X = [-------------&mdash;] [ B21 | B22 0 0 ] [ 0 | 0 0 I ] [ C | -S 0 0 ] [ U1 | ] [ 0 | 0 -I 0 ] [ V1 | ]**H = [------&mdash;] [------------&mdash;] [------&mdash;] . [ | U2 ] [ S | C 0 0 ] [ | V2 ] [ 0 | 0 0 I ] X is M-by-M, its top-left block is P-by-Q, and Q must be no larger than P, M-P, or M-Q. (If Q is not the smallest index, then X must be transposed and/or permuted. This can be done in constant time using the TRANS and SIGNS options. See CUNCSD for details.) The bidiagonal matrices B11, B12, B21, and B22 are represented implicitly by angles THETA(1:Q) and PHI(1:Q-1). The unitary matrices U1, U2, V1T, and V2T are input/output. The input matrices are pre- or post-multiplied by the appropriate singular vector matrices </td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_6_" class="arrow" onclick="dynsection.toggleFolder('6_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__lapack.html" target="_self">la_lapack</a></td><td class="desc">Kind-agnostic LAPACK interface linking to internal or external implementations </td></tr>
<tr id="row_6_0_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__lapack_1_1bbcsd.html" target="_self">bbcsd</a></td><td class="desc">BBCSD computes the CS decomposition of a unitary matrix in bidiagonal-block form </td></tr>
<tr id="row_6_1_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__lapack_1_1bdsdc.html" target="_self">bdsdc</a></td><td class="desc">BDSDC: computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B: B = U * S * VT, using a divide and conquer method, where S is a diagonal matrix with non-negative diagonal elements (the singular values of B), and U and VT are orthogonal matrices of left and right singular vectors, respectively. BDSDC can be used to compute all singular values, and optionally, singular vectors or singular vectors in compact form. This code makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none. See DLASD3 for details. The code currently calls DLASDQ if singular values only are desired. However, it can be slightly modified to compute singular values using the divide and conquer method </td></tr>
<tr id="row_6_2_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__lapack_1_1bdsqr.html" target="_self">bdsqr</a></td><td class="desc">BDSQR: computes the singular values and, optionally, the right and/or left singular vectors from the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B using the implicit zero-shift QR algorithm. The SVD of B has the form B = Q * S * P**H where S is the diagonal matrix of singular values, Q is an orthogonal matrix of left singular vectors, and P is an orthogonal matrix of right singular vectors. If left singular vectors are requested, this subroutine actually returns U*Q instead of Q, and, if right singular vectors are requested, this subroutine returns P**H*VT instead of P**H, for given complex input matrices U and VT. When U and VT are the unitary matrices that reduce a general matrix A to bidiagonal form: A = U*B*VT, as computed by CGEBRD, then A = (U*Q) * S * (P**H*VT) is the SVD of A. Optionally, the subroutine may also compute Q**H*C for a given complex input matrix C. See "Computing Small Singular Values of Bidiagonal Matrices With
Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan, LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11, no. 5, pp. 873-912, Sept 1990) and "Accurate singular values and differential qd algorithms," by B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics Department, University of California at Berkeley, July 1992 for a detailed description of the algorithm </td></tr>
Expand Down Expand Up @@ -710,10 +710,10 @@
<tr id="row_7_11_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__lapack__aux_1_1la__select__z.html" target="_self">la_select_z</a></td><td class="desc"></td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_8_" class="arrow" onclick="dynsection.toggleFolder('8_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__least__squares.html" target="_self">la_least_squares</a></td><td class="desc">Least squares solution interface </td></tr>
<tr id="row_8_0_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__least__squares_1_1lstsq.html" target="_self">lstsq</a></td><td class="desc">Compute a least squares solution to system \( A \cdot x = b \), i.e. such that the 2-norm \( \|b - A \cdot x\| \) is minimized </td></tr>
<tr id="row_9_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_9_" class="arrow" onclick="dynsection.toggleFolder('9_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__norms.html" target="_self">la_norms</a></td><td class="desc"></td></tr>
<tr id="row_9_" class="odd"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_9_" class="arrow" onclick="dynsection.toggleFolder('9_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__norms.html" target="_self">la_norms</a></td><td class="desc">Matrix and Vector norms </td></tr>
<tr id="row_9_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__norms_1_1get__norm.html" target="_self">get_norm</a></td><td class="desc">Vector norm: subroutine interface </td></tr>
<tr id="row_9_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__norms_1_1mnorm.html" target="_self">mnorm</a></td><td class="desc">Matrix norm: function interface </td></tr>
<tr id="row_9_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__norms_1_1norm.html" target="_self">norm</a></td><td class="desc">Vector norm: function interface </td></tr>
<tr id="row_9_2_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__norms_1_1norm.html" target="_self">norm</a></td><td class="desc">Compute the norm of a vector or matrix using LAPACK-based routines </td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_10_" class="arrow" onclick="dynsection.toggleFolder('10_')">&#9658;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacela__pseudoinverse.html" target="_self">la_pseudoinverse</a></td><td class="desc"></td></tr>
<tr id="row_10_0_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__pseudoinverse_1_1operator_07_8pinv_8_08.html" target="_self">operator(.pinv.)</a></td><td class="desc">Compute the pseudo-inverse of a matrix using the <code>.pinv.</code> operator </td></tr>
<tr id="row_10_1_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacela__pseudoinverse_1_1pinv.html" target="_self">pinv</a></td><td class="desc">Compute the pseudo-inverse of a matrix </td></tr>
Expand Down
6 changes: 3 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -983,7 +983,7 @@ <h3><a class="anchor" id="autotoc_md177"></a>
</ul>
<h1><a class="anchor" id="autotoc_md178"></a>
BLAS, LAPACK</h1>
<p>Modern Fortran modules with full explicit typing features are available as modules <code><a class="el" href="namespacela__blas.html" title="Precision-agnostic BLAS interface.">la_blas</a></code> and <code><a class="el" href="namespacela__lapack.html">la_lapack</a></code>. The reference Fortran-77 library, forked from Release 3.10.1, was automatically processed and modernized. The following refactorings are applied:</p><ul>
<p>Modern Fortran modules with full explicit typing features are available as modules <code><a class="el" href="namespacela__blas.html" title="Precision-agnostic BLAS interface.">la_blas</a></code> and <code><a class="el" href="namespacela__lapack.html" title="Kind-agnostic LAPACK interface linking to internal or external implementations.">la_lapack</a></code>. The reference Fortran-77 library, forked from Release 3.10.1, was automatically processed and modernized. The following refactorings are applied:</p><ul>
<li>All datatypes and accuracy constants standardized into a module (<code>stdlib</code>-compatible names)</li>
<li>Both libraries available for 32, 64 and 128-bit floats</li>
<li>Free format, lower-case style</li>
Expand All @@ -1009,7 +1009,7 @@ <h1><a class="anchor" id="autotoc_md179"></a>
<div class="line">fortran-lapack = { git=&quot;https://github.com/perazz/fortran-lapack.git&quot;, preprocess.cpp.macros=[&quot;LA_EXTERNAL_BLAS&quot;, &quot;LA_EXTERNAL_LAPACK&quot;] }</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md180"></a>
Extension to external BLAS/LAPACK libraries</h1>
<p>Generic interfaces to most BLAS/LAPACK functions are exposed to modules <code><a class="el" href="namespacela__blas.html" title="Precision-agnostic BLAS interface.">la_blas</a></code> and <code><a class="el" href="namespacela__lapack.html">la_lapack</a></code>. These interfaces drop the initial letter to wrap a precision-agnostic version. For example, <code>axpy</code> is a precision-agnostic interface to <code>saxpy</code>, <code>daxpy</code>, <code>caxpy</code>, <code>zaxpy</code>, <code>qaxpy</code>, <code>waxpy</code>. The naming convention is:</p>
<p>Generic interfaces to most BLAS/LAPACK functions are exposed to modules <code><a class="el" href="namespacela__blas.html" title="Precision-agnostic BLAS interface.">la_blas</a></code> and <code><a class="el" href="namespacela__lapack.html" title="Kind-agnostic LAPACK interface linking to internal or external implementations.">la_lapack</a></code>. These interfaces drop the initial letter to wrap a precision-agnostic version. For example, <code>axpy</code> is a precision-agnostic interface to <code>saxpy</code>, <code>daxpy</code>, <code>caxpy</code>, <code>zaxpy</code>, <code>qaxpy</code>, <code>waxpy</code>. The naming convention is:</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">32-bit </th><th class="markdownTableHeadNone">64-bit </th><th class="markdownTableHeadNone">128-bit </th></tr>
Expand All @@ -1018,7 +1018,7 @@ <h1><a class="anchor" id="autotoc_md179"></a>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">complex </td><td class="markdownTableBodyNone"><code>c</code> </td><td class="markdownTableBodyNone"><code>z</code> </td><td class="markdownTableBodyNone"><code>w</code> </td></tr>
</table>
<p>All public interfaces in <code><a class="el" href="namespacela__blas.html" title="Precision-agnostic BLAS interface.">la_blas</a></code> and <code><a class="el" href="namespacela__lapack.html">la_lapack</a></code> allow seamless linking against external libraries via a simple pre-processor flag. When an external library is available, just define macros <code>LA_EXTERNAL_BLAS</code> and <code>LA_EXTERNAL_LAPACK</code>. The kind-agnostic interface will just point to the external function. All such interfaces follow this template: <br />
<p>All public interfaces in <code><a class="el" href="namespacela__blas.html" title="Precision-agnostic BLAS interface.">la_blas</a></code> and <code><a class="el" href="namespacela__lapack.html" title="Kind-agnostic LAPACK interface linking to internal or external implementations.">la_lapack</a></code> allow seamless linking against external libraries via a simple pre-processor flag. When an external library is available, just define macros <code>LA_EXTERNAL_BLAS</code> and <code>LA_EXTERNAL_LAPACK</code>. The kind-agnostic interface will just point to the external function. All such interfaces follow this template: <br />
</p>
<div class="fragment"><div class="line"><span class="keyword">interface</span> axpy</div>
<div class="line"><span class="preprocessor">#ifdef LA_EXTERNAL_BLAS</span></div>
Expand Down
Loading

0 comments on commit bb56f54

Please sign in to comment.