[ 
https://issues.apache.org/jira/browse/MATH-613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13063406#comment-13063406
 ] 

Phil Steitz commented on MATH-613:
----------------------------------

Sorry, I missed the earlier comment on the name. Regarding whether or not to 
implement the general version, I would like to know if others have actual use 
cases in mind.  Ted mentioned in the earlier thread that Colt had a similar 
API.  I am curious how it was actually used, beyond the canonical linear 
combination example that led to this suggestion. Can anyone think of practical 
use cases for the general versions?

Regarding the name, I did mean "combine."  I don't personally see a problem 
using "combine" here as well as FunctionUtils in the analysis package, as the 
objects are different.  But if we need to add something, I would add "with" - 
i.e. "combineWith" and "combineWithSelf."

Don't allow me to prematurely nix the general case, though. I just want some 
indication that the slightly more complex (hence less approachable) API has 
enough usefulness to justify it.

> Equivalent of Blas DAXPY
> ------------------------
>
>                 Key: MATH-613
>                 URL: https://issues.apache.org/jira/browse/MATH-613
>             Project: Commons Math
>          Issue Type: New Feature
>    Affects Versions: 3.0
>            Reporter: Sébastien Brisard
>            Priority: Minor
>              Labels: linear, vector
>
> In Blas, the method {{DAXPY}} computes an in-place linear combination of two 
> vectors. More precisely, a call to {{DAXPY(a, x, y)}} updates vector {{y}} 
> with the value of {{a * x + y}}. This can lead to very compact code, which I 
> feel the need for in Commons-Math. However, DAXPY also has its limitations. 
> For example, it cannot perform the other combination {{y <- x + a * y}}.
> I think it would be useful that {{RealVector}} had a method for computing {{a 
> * this + b * y}}, and storing the result in {{this}}. In the spirit of the 
> {{mapToSelf}} method, I propose to create two new methods in {{Interface 
> RealVector}}
> {noformat}RealVector map(BivariateRealFunction f, RealVector y){noformat}
> and
> {noformat}RealVector mapToSelf(BivariateRealFunction f, RealVector 
> y){noformat}
> The former would return a new vector {{v}} such that
> {noformat}v[i] <- f(this[i], y[i])}}{noformat}
> and the latter would update {{this}},
> {noformat}this[i] <- f(this[i], y[i]){noformat}
> Emulating {{DAXPY}} would then simply be a matter of implementing the 
> appropriate bivariate function.
> While we are at it, how about
> {noformat}RealVector map(TrivariateRealFunction f, RealVector y, RealVector 
> z){noformat}
> {noformat}RealVector mapToSelf(TrivariateRealFunction f, RealVector y, 
> RealVector z){noformat}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to