[
https://issues.apache.org/jira/browse/MATH-765?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Leandro Ariel Pezzente updated MATH-765:
----------------------------------------
Comment: was deleted
(was: Gilles , do you know if MIT License is compatibles with APL 2.0 ?)
> Refactoring the vector and matrix classes
> -----------------------------------------
>
> Key: MATH-765
> URL: https://issues.apache.org/jira/browse/MATH-765
> Project: Commons Math
> Issue Type: Improvement
> Affects Versions: 4.0
> Reporter: Sébastien Brisard
> Labels: api-change, linear
>
> {panel:title=Warning|borderStyle=solid}
> This is not a bug report, but rather a summary of all discussions which have
> taken place on the mailing list regarding the refactoring of the vector and
> matrix classes. Indeed, it has been argued many times that the {{RealVector}}
> and {{RealMatrix}} interfaces are really cluttered, and could benefit from
> other approaches (like functional programming).
> The description of this ticket will be updated as the discussion progresses
> on the mailing-list, and new JIRA tickets will be created to carry out the
> "real" work. {color:red}In order to keep this ticket tidy, contributors
> should refrain from commenting on this website. Instead, messages should be
> posted on the dev mailing-list{color}.
> {panel}
> h1. The current API (version 3.0)
> In this section, the current interfaces for vectors and matrices are
> compared. Vectors and matrices are two mathematical objects which are very
> close in nature. Their implementations should therefore be as similar as
> possible. The methods will be sorted as follows
> * methods reflecting the mathematical structure of vector space: addition,
> multiplication by a scalar, matrix-vector product, ...
> * methods reflecting the mathematical structure of euclidean space
> * ...
> h2. Methods reflecting the mathematical structure of vector space
> h3. List of the methods
> || {{RealVector}} || {{RealMatrix}}
> || Comments ||
> | {{RealVector add(RealVector v)}} | {{RealMatrix add(RealMatrix m)}}
> | |
> | {{int getDimension()}} | {{int getRowDimension()}},\\ {{int
> getColumnDimension()}} | |
> | {{RealVector mapMultiply(double d)}} | {{scalarMultiply(double d)}}
> | (1) |
> | | {{double getTrace()}}
> | |
> | | {{multiply(RealMatrix m)}}
> | |
> | | {{double[] operate(double[])}}
> | (2) |
> | | {{RealVector operate(RealVector)}}
> | |
> | | {{RealMatrix power(int p)}}
> | |
> | | {{double[] preMultiply(double[])}}
> | (2) |
> | | {{RealMatrix
> preMultiply(RealMatrix)}} | |
> | | {{RealVector
> preMultiply(RealVector)}} | |
> | | {{RealMatrix transpose()}}
> | |
> h3. Comments on the above methods
> h4. Comment (1)
> {{RealVector RealVector.mapMultiply(double)}} and {{RealMatrix
> RealMatrix.scalarMultiply(double)}} perform essentially the same task.
> Readibility of the classes would be improved if they add the same name. This
> is very important since these methods reflect the fact that the space of
> vectors as well as the space of matrices are two vector spaces.
> h4. Comment (2)
> Prior to the release of version 3.0, all methods involving taking as
> argument, or returning, {{double[]}} representing vectors were removed. The
> rationale for this is that calling {{new ArrayRealVector(double[], false)}}
> is very easy, and comes at virtually no cost (see MATH-653 and MATH-660). It
> might be worth considering the same simplification for the {{RealMatrix}}
> interface.
> h2. Methods reflecting the mathematical structure of euclidean space
> h2. Constructors, factory methods and related methods
> h2. Manipulation of entries
> h2. Various norms
> h2. Functional-programming-like methods
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira