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
| 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.
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.
I will merge the PR after that 🙂
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