-
Notifications
You must be signed in to change notification settings - Fork 33
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
Add mul!
for matrices
#330
Conversation
I think we should only overload mul!, transpose and adjoint for now. We support the other ones later. |
Okay, how about the 5-argument |
We can just support the 3-args mul! for now with operator-matrix products. It's only what we need for Krylov.jl. |
I added the minimal amount of changes and the minimal tests, can you approve the workflows? |
@amontoison at your disposal to add more code, tests or docs depending on what you see fit in the review |
Is it working with |
Yes! julia> using Krylov, LinearOperators
julia> A, B = rand(2, 2), rand(2, 2);
julia> block_gmres(A, B)
([0.711998925881128 -0.31790146670357355; 1.0257506949284791 3.3662342660807827], SimpleStats
niter: 1
solved: true
inconsistent: false
residuals: []
Aresiduals: []
κ₂(A): []
timer: 189.24μs
status: solution good enough given atol and rtol
)
julia> block_gmres(LinearOperator(A), B)
([0.711998925881128 -0.31790146670357355; 1.0257506949284791 3.3662342660807827], SimpleStats
niter: 1
solved: true
inconsistent: false
residuals: []
Aresiduals: []
κ₂(A): []
timer: 521.58ms
status: solution good enough given atol and rtol
) |
src/special-operators.jl
Outdated
@@ -289,3 +289,5 @@ function BlockDiagonalOperator(ops...; S = promote_type(storage_type.(ops)...)) | |||
args5 = all((has_args5(op) for op ∈ ops)) | |||
CompositeLinearOperator(T, nrow, ncol, symm, herm, prod!, tprod!, ctprod!, args5, S = S) | |||
end | |||
|
|||
# TODO: overload the above for matrices? |
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.
Can you remove this comment and open the issue for some functionalities that are not supported with matrices?
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.
I will merge the PR after that 🙂
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.
Comment removed, issue opened in #331
Goal: to fix #322 by adding
mul!(res::AbstractMatrix, op::LinearOperator, m::AbstractMatrix)
In practice, there are lots of things to overload and I don't know if you want to do all of them. I also don't know how you want to test this new functionality. But anyway, here's a first draft (without tests) to get the discussion started