You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2018/08/10 13:20:46 UTC
[2/3] [math] for a large number of params, avoid copying array.
for a large number of params, avoid copying array.
also fixes an incorrect javadoc comment.
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/f90d2926
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/f90d2926
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/f90d2926
Branch: refs/heads/master
Commit: f90d29262b10669d0ac21292314130778411e49e
Parents: eb57d6d
Author: adrian <ad...@aporter.org>
Authored: Thu May 17 13:03:47 2018 -0400
Committer: adrian <ad...@aporter.org>
Committed: Thu Jun 28 14:40:09 2018 -0400
----------------------------------------------------------------------
...DifferentiatorMultivariateJacobianFunction.java | 13 ++++++-------
...entiatorVectorMultivariateJacobianFunction.java | 17 ++++++++---------
2 files changed, 14 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/f90d2926/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorMultivariateJacobianFunction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorMultivariateJacobianFunction.java b/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorMultivariateJacobianFunction.java
index 313571d..12ebcf5 100644
--- a/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorMultivariateJacobianFunction.java
+++ b/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorMultivariateJacobianFunction.java
@@ -64,8 +64,9 @@ public class DifferentiatorMultivariateJacobianFunction implements MultivariateJ
*/
@Override
public Pair<RealVector, RealMatrix> value(RealVector point) {
+ double[] testArray = point.toArray();
ArrayRealVector value = new ArrayRealVector(1);
- value.setEntry(0, function.value(point.toArray()));
+ value.setEntry(0, function.value(testArray));
RealMatrix jacobian = new Array2DRowRealMatrix(1, point.getDimension());
for(int column = 0; column < point.getDimension(); column++) {
@@ -73,15 +74,13 @@ public class DifferentiatorMultivariateJacobianFunction implements MultivariateJ
double originalPoint = point.getEntry(column);
double partialDerivative = getPartialDerivative(testPoint -> {
- point.setEntry(columnFinal, testPoint);
+ testArray[columnFinal] = testPoint;
- double testPointOutput = function.value(point.toArray());
-
- point.setEntry(columnFinal, originalPoint); //set it back
-
- return testPointOutput;
+ return function.value(testArray);
}, originalPoint);
+ testArray[column] = originalPoint; //set it back
+
jacobian.setEntry(0, column, partialDerivative);
}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/f90d2926/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorVectorMultivariateJacobianFunction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorVectorMultivariateJacobianFunction.java b/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorVectorMultivariateJacobianFunction.java
index 2f8295a..05e1267 100644
--- a/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorVectorMultivariateJacobianFunction.java
+++ b/src/main/java/org/apache/commons/math4/fitting/leastsquares/DifferentiatorVectorMultivariateJacobianFunction.java
@@ -51,8 +51,8 @@ public class DifferentiatorVectorMultivariateJacobianFunction implements Multiva
* @param function the function to turn into a jacobian
* @param differentiator the differentiator to find the derivative
*
- * This version that works with MultivariateFunction
- * @see DifferentiatorVectorMultivariateJacobianFunction for version that works with MultivariateVectorFunction
+ * This version that works with MultivariateVectorFunction
+ * @see DifferentiatorMultivariateJacobianFunction for version that works with MultivariateFunction
*/
public DifferentiatorVectorMultivariateJacobianFunction(MultivariateVectorFunction function, UnivariateVectorFunctionDifferentiator differentiator) {
this.function = function;
@@ -64,7 +64,8 @@ public class DifferentiatorVectorMultivariateJacobianFunction implements Multiva
*/
@Override
public Pair<RealVector, RealMatrix> value(RealVector point) {
- RealVector value = new ArrayRealVector(function.value(point.toArray()));
+ double[] testArray = point.toArray();
+ RealVector value = new ArrayRealVector(function.value(testArray));
RealMatrix jacobian = new Array2DRowRealMatrix(value.getDimension(), point.getDimension());
for(int column = 0; column < point.getDimension(); column++) {
@@ -72,15 +73,13 @@ public class DifferentiatorVectorMultivariateJacobianFunction implements Multiva
double originalPoint = point.getEntry(column);
double[] partialDerivatives = getPartialDerivative(testPoint -> {
- point.setEntry(columnFinal, testPoint);
+ testArray[columnFinal] = testPoint;
- double[] testPointValue = function.value(point.toArray());
-
- point.setEntry(columnFinal, originalPoint); //set it back
-
- return testPointValue;
+ return function.value(testArray);
}, originalPoint);
+ testArray[column] = originalPoint; //set it back
+
jacobian.setColumn(column, partialDerivatives);
}