Skip to content

linalg: Eigenvalues and Eigenvectors #816

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 35 commits into from
Jun 30, 2024
Merged
Changes from 6 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7d390f7
add source
perazz May 16, 2024
430c89c
remove `goto`s
perazz May 16, 2024
7645a45
exclude unsupported `xdp`
perazz May 16, 2024
6ce5172
submodule
perazz May 16, 2024
2d58c68
add tests
perazz May 16, 2024
15b73fc
test: remove `xdp`
perazz May 16, 2024
b5f7f21
add examples: `eig`, `eigh`, `eigvals`, `eigvalsh`
perazz May 16, 2024
892308f
fix: `module` procedures
perazz May 16, 2024
1ebf374
add documentation
perazz May 16, 2024
f9279b3
specs: `eig`, `eigh`
perazz May 16, 2024
56d89a8
specs: `eigvals`, `eigvalsh`
perazz May 16, 2024
f13e75d
clarify svd
perazz Jun 5, 2024
34bb7d7
Update doc/specs/stdlib_linalg.md
perazz Jun 5, 2024
cdef45f
remove `(sp)` from the examples
perazz Jun 5, 2024
fe1c89e
Update doc/specs/stdlib_linalg.md
perazz Jun 5, 2024
65099e3
Update doc/specs/stdlib_linalg.md
perazz Jun 5, 2024
0e13fe5
kind -> precision
perazz Jun 5, 2024
d0f385a
Update doc/specs/stdlib_linalg.md
perazz Jun 5, 2024
acd93b9
Merge branch 'eigenvalues' of github.com:perazz/stdlib into eigenvalues
perazz Jun 5, 2024
36c8d5a
fix `sp` in example
perazz Jun 5, 2024
e6aa0f5
Option to output `real` eigenvalues only
perazz Jun 5, 2024
17ebed2
reorganize `if(present(x))`
perazz Jun 21, 2024
bac3187
no negated checks
perazz Jun 21, 2024
4f503f7
copy_a: simplify
perazz Jun 21, 2024
34284cb
Merge branch 'master' into eigenvalues
perazz Jun 21, 2024
f232a76
typo
perazz Jun 21, 2024
d19425a
fix intel `module subroutine` error
perazz Jun 21, 2024
cc95fc4
Update doc/specs/stdlib_linalg.md
perazz Jun 26, 2024
18b95af
Update doc/specs/stdlib_linalg.md
perazz Jun 26, 2024
1fb2ba9
Update doc/specs/stdlib_linalg.md
perazz Jun 26, 2024
f5303bf
Update doc/specs/stdlib_linalg.md
perazz Jun 26, 2024
66f1f17
Update doc/specs/stdlib_linalg.md
perazz Jun 26, 2024
5501b83
example_eigh: v->vectors
perazz Jun 26, 2024
59f3b34
Merge branch 'eigenvalues' of github.com:perazz/stdlib into eigenvalues
perazz Jun 26, 2024
d433869
fix vectors
perazz Jun 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions doc/specs/stdlib_linalg.md
Original file line number Diff line number Diff line change
Expand Up @@ -958,7 +958,7 @@ This subroutine computes the solution to the eigendecomposition \( A \cdot \bar{
where \( A \) is a square, full-rank, `real` symmetric \( A = A^T \) or `complex` Hermitian \( A = A^H \) matrix.

Result array `lambda` returns the `real` eigenvalues of \( A \). The user can request the orthogonal eigenvectors
to be returned: on output `vectors` may contain the matrix of eigenvectors, returned as a columns.
to be returned: on output `vectors` may contain the matrix of eigenvectors, returned as a column.

Normally, only the lower triangular part of \( A \) is accessed. On input, `logical` flag `upper_a`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Normally, only the lower triangular part of \( A \) is accessed. On input, `logical` flag `upper_a`
As default, only the lower triangular part of \( A \) is accessed. On input, `logical` flag `upper_a`

allows the user to request what triangular part of the matrix should be used.
Expand All @@ -977,7 +977,7 @@ The solver is based on LAPACK's `*SYEV` and `*HEEV` backends.

`vectors` (optional): Shall be a rank-2 array of the same type, size and kind as `a`, containing the eigenvectors of `a`. It is an `intent(out)` argument.

`upper_a` (optional): Shall be an input `logical` flag. if `.true.`, the upper triangular part of `a` will be accessed. Otherwise, the lower triangular part will be accessed. It is an `intent(in)` argument.
`upper_a` (optional): Shall be an input `logical` flag. If `.true.`, the upper triangular part of `a` will be accessed. Otherwise, the lower triangular part will be accessed. It is an `intent(in)` argument.

`overwrite_a` (optional): Shall be an input `logical` flag. If `.true.`, input matrix `a` will be used as temporary storage and overwritten. This avoids internal data allocation. This is an `intent(in)` argument.

Expand Down Expand Up @@ -1015,7 +1015,7 @@ The solver is based on LAPACK's `*GEEV` backends.

### Arguments

`a` : `real` or `complex` square array containing the coefficient matrix. It is normally an `intent(in)` argument.
`a` : `real` or `complex` square array containing the coefficient matrix. It is an `intent(in)` argument.

`err` (optional): Shall be a `type(linalg_state_type)` value. This is an `intent(out)` argument.

Expand Down Expand Up @@ -1055,9 +1055,9 @@ The solver is based on LAPACK's `*SYEV` and `*HEEV` backends.

### Arguments

`a` : `real` or `complex` square array containing the coefficient matrix. It is normally an `intent(in)` argument.
`a` : `real` or `complex` square array containing the coefficient matrix. It is an `intent(in)` argument.

`upper_a` (optional): Shall be an input logical flag. if `.true.`, the upper triangular part of `a` will be used accessed. Otherwise, the lower triangular part will be accessed (default). It is an `intent(in)` argument.
`upper_a` (optional): Shall be an input logical flag. If `.true.`, the upper triangular part of `a` will be used accessed. Otherwise, the lower triangular part will be accessed (default). It is an `intent(in)` argument.

`err` (optional): Shall be a `type(linalg_state_type)` value. This is an `intent(out)` argument.

Expand Down
Loading