-
Notifications
You must be signed in to change notification settings - Fork 2
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
Updates in Lapack Utility #311
Conversation
shishiousan
commented
May 17, 2024
- adding GE_EigenValueMethods
- adding GE_EigenValueMethods
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shishiousan instead of COMPLEX(DFP) please use COMPLEX(DFPC) (this is a minor correction)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shishiousan
instead of using array with intent(out), use intent(inout). In this case, you can get the size of output array (which is allocated by the user before calling the routine). If you use intent(out) on an array, you can not get correct information of array size (even if it is allocated by user before calling the routine)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shishiousan Please change display to Display (functions and subroutine should start from upper case) (This is a minor issue)
- minor changes
@vickysharma0812 |
lrwork = 2 * n | ||
ALLOCATE (At(lda, n), vl(ldvl, n), vr(ldvr, n), & | ||
work(lwork), rwork(lrwork)) | ||
At = A |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you make a copy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vickysharma0812
This is because GEEV
destroy the A
I can add optional boolean argument like destroy
to switch making copy.
For example
INTERFACE GetEigVals
MODULE SUBROUTINE deigvals(A, lam, destroy)
REAL(DFP), INTENT(IN) :: A(:, :)
COMPLEX(DFPC), INTENT(INOUT) :: lam(:)
LOGICAL(LGT), OPTIONAL, INTENT(IN) :: destroy
! default true
END SUBROUTINE deigvals
END INTERFACE GetEigVals
How do you think ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shishiousan Awesome 👍