Skip to content

Exponential of a matrix #968

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

Open
wants to merge 37 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
b0a74b1
Working implementation of expm.
loiseaujc Mar 27, 2025
fa36f33
Improved implementation + error handling.
loiseaujc Mar 27, 2025
d8b1857
Added docstring for the interface.
loiseaujc Mar 27, 2025
4089d18
Specs + example.
loiseaujc Mar 27, 2025
c6857bc
Update doc/specs/stdlib_linalg.md
loiseaujc Mar 30, 2025
4310db5
Replace matmul with gemm.
loiseaujc Mar 31, 2025
59ffb20
Error handling tests.
loiseaujc Mar 31, 2025
56474e1
Merge branch 'matrix_exponential' into master
loiseaujc Jul 3, 2025
75e0892
Merge pull request #2 from loiseaujc/master
loiseaujc Jul 3, 2025
8d6a3f9
Remove tests for failure to pinpoint seg fault.
loiseaujc Jul 3, 2025
65ad5f2
Pinpointing why the expm test fails.
loiseaujc Jul 3, 2025
cc3f1f2
Revert "Pinpointing why the expm test fails."
loiseaujc Jul 3, 2025
28bb69b
Remove print statement.
loiseaujc Jul 3, 2025
f479582
Change operator norm to standard norm for error checking.
loiseaujc Jul 3, 2025
b092515
Fix import
loiseaujc Jul 3, 2025
1bb1e01
Make use of stdlib_constants to avoid redefining some variables.
loiseaujc Jul 4, 2025
3ebdf9e
Replaced matmul with gemm.
loiseaujc Jul 4, 2025
f99e804
merge trick replacing if i == j.
loiseaujc Jul 8, 2025
8acc8de
Merge branch 'master'
loiseaujc Jul 8, 2025
34745cb
Make use of the new handle_gesv_info function.
loiseaujc Jul 8, 2025
534a88d
Define log(2.0) as a constant.
loiseaujc Jul 8, 2025
d97043d
Specify integer kind in size function.
loiseaujc Jul 8, 2025
a381d0b
subroutine driver and interface (in-place and out-of-place)
loiseaujc Jul 9, 2025
1bc6427
Fixed error handling.
loiseaujc Jul 9, 2025
531261a
Looking for the msys2-build error
loiseaujc Jul 9, 2025
3941673
Revert "Looking for the msys2-build error"
loiseaujc Jul 9, 2025
3b9c77d
Print computed matrix for reference.
loiseaujc Jul 9, 2025
2258de3
Revert "Print computed matrix for reference."
loiseaujc Jul 9, 2025
ae14bb5
Looking for the mysys2-build error.
loiseaujc Jul 9, 2025
1fb76b2
Revert "Looking for the mysys2-build error."
loiseaujc Jul 9, 2025
5eb6b47
Looking for mysys2-build error.
loiseaujc Jul 9, 2025
ed0a4e0
Jose's fix for the expm tests.
loiseaujc Jul 15, 2025
8d561ca
Update doc/specs/stdlib_linalg.md
loiseaujc Jul 15, 2025
22b8686
Update doc/specs/stdlib_linalg.md
loiseaujc Jul 15, 2025
c3ed61a
Update src/stdlib_linalg_matrix_functions.fypp
loiseaujc Jul 15, 2025
40e35d5
Fix typo.
loiseaujc Jul 15, 2025
7e8cca3
Merge branch 'master' into matrix_exponential
jalvesz Jul 19, 2025
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
6 changes: 3 additions & 3 deletions src/stdlib_linalg_matrix_functions.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ contains
lda = size(A, 1, kind=ilp) ; n = size(A, 2, kind=ilp)
lde = size(E, 1, kind=ilp) ; ne = size(E, 2, kind=ilp)

if (lda<1 .or. n<1 .or. lda<n .or. lde<n .or. ne<n) then
if (lda<1 .or. n<1 .or. lda/=n .or. lde/=n .or. ne/=n) then
err0 = linalg_state_type(this,LINALG_VALUE_ERROR, &
'invalid matrix sizes: A=',[lda,n], &
' E=',[lde,ne])
'invalid matrix sizes: A must be square (lda=', lda, ', n=', n, '), &
' E must be square (lde=', lde, ', ne=', ne, ')')
else
E(:n, :n) = A(:n, :n) ; call stdlib_linalg_${ri}$_expm_inplace(E, order, err0)
endif
Expand Down
Loading