Skip to content
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

Documentation of FiveArg() #236

Open
ruairidhs opened this issue Sep 15, 2024 · 1 comment
Open

Documentation of FiveArg() #236

ruairidhs opened this issue Sep 15, 2024 · 1 comment

Comments

@ruairidhs
Copy link

If we set the trait FiveArg(), is it also necessary to implement the three argument mul!? Something like:

LinearMaps.MulStyle(A::MyMap) = FiveArg()

function LinearMaps._unsafe_mul!(y, A::MyMap, x::AbstractVector, α, β)
    ...
end

LinearMaps._unsafe_mul!(y, A::MyMap, x::AbstractVector) = LinearMaps._unsafe_mul!(y, A, x, 1, 0)

If so, it would be useful to note this in the "Custom Maps" section of the documentation.
If you don't need to do this then I have some other issue... :)

@dkarrasch
Copy link
Member

Sorry for my slow response. That's a good question, I haven't looked things in here for quite a while. It seems that within this package, even the FiveArg() types have the three-arg _unsafe_mul! defined, but that may be "by tradition" or "by necessity". I think we introduced it to indicate whether or not one can do multiply-and-add in-place, without allocating the intermediate multiplication result. I never thought about it in terms of "saving" the three-arg method.

If you don't, which issue comes up?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants