Author: cedricwalter
Date: Mon Nov 4 21:27:12 2013
New Revision: 1538772
URL: http://svn.apache.org/r1538772
Log:
Bug 54535: Bug in INTERCEPT and SLOPE, review and integration test added to
FormulaEvalTestData.xls
Modified:
poi/trunk/src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIntercept.java
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSlope.java
poi/trunk/test-data/spreadsheet/FormulaEvalTestData.xls
Modified:
poi/trunk/src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java?rev=1538772&r1=1538771&r2=1538772&view=diff
==============================================================================
---
poi/trunk/src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java
(original)
+++
poi/trunk/src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java
Mon Nov 4 21:27:12 2013
@@ -68,7 +68,7 @@ public final class LinearRegressionFunct
super(1);
_value = value;
}
- @Override
+
protected ValueEval getItemInternal(int index) {
return _value;
}
@@ -80,7 +80,7 @@ public final class LinearRegressionFunct
super(1);
_ref = ref;
}
- @Override
+
protected ValueEval getItemInternal(int index) {
return _ref.getInnerValueEval();
}
@@ -95,7 +95,7 @@ public final class LinearRegressionFunct
_ae = ae;
_width = ae.getWidth();
}
- @Override
+
protected ValueEval getItemInternal(int index) {
int rowIx = index / _width;
int colIx = index % _width;
@@ -114,8 +114,8 @@ public final class LinearRegressionFunct
ValueEval arg0, ValueEval arg1) {
double result;
try {
- ValueVector vvX = createValueVector(arg0);
- ValueVector vvY = createValueVector(arg1);
+ ValueVector vvY = createValueVector(arg0);
+ ValueVector vvX = createValueVector(arg1);
int size = vvX.getSize();
if (size == 0 || vvY.getSize() != size) {
return ErrorEval.NA;
@@ -137,7 +137,6 @@ public final class LinearRegressionFunct
ErrorEval firstXerr = null;
ErrorEval firstYerr = null;
boolean accumlatedSome = false;
- double result = 0.0;
// first pass: read in data, compute xbar and ybar
double sumx = 0.0, sumy = 0.0;
Modified:
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIntercept.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIntercept.java?rev=1538772&r1=1538771&r2=1538772&view=diff
==============================================================================
---
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIntercept.java
(original)
+++
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIntercept.java
Mon Nov 4 21:27:12 2013
@@ -59,7 +59,7 @@ public final class TestIntercept extends
public void testBasic() {
Double exp = Math.pow(10, 7.5);
- ValueEval[] xValues = {
+ ValueEval[] yValues = {
new NumberEval(3+exp),
new NumberEval(4+exp),
new NumberEval(2+exp),
@@ -67,9 +67,9 @@ public final class TestIntercept extends
new NumberEval(4+exp),
new NumberEval(7+exp),
};
- ValueEval areaEvalX = createAreaEval(xValues);
+ ValueEval areaEvalY = createAreaEval(yValues);
- ValueEval[] yValues = {
+ ValueEval[] xValues = {
new NumberEval(1),
new NumberEval(2),
new NumberEval(3),
@@ -77,7 +77,7 @@ public final class TestIntercept extends
new NumberEval(5),
new NumberEval(6),
};
- ValueEval areaEvalY = createAreaEval(yValues);
+ ValueEval areaEvalX = createAreaEval(xValues);
confirm(INTERCEPT, areaEvalX, areaEvalY, -24516534.39905822);
// Excel 2010 gives -24516534.3990583
}
@@ -86,9 +86,9 @@ public final class TestIntercept extends
* number of items in array is not limited to 30
*/
public void testLargeArrays() {
- ValueEval[] xValues = createMockNumberArray(100, 3); //
[1,2,0,1,2,0,...,0,1]
- xValues[0] = new NumberEval(2.0); // Changes first element to 2
- ValueEval[] yValues = createMockNumberArray(100, 101); //
[1,2,3,4,...,99,100]
+ ValueEval[] yValues = createMockNumberArray(100, 3); //
[1,2,0,1,2,0,...,0,1]
+ yValues[0] = new NumberEval(2.0); // Changes first element to 2
+ ValueEval[] xValues = createMockNumberArray(100, 101); //
[1,2,3,4,...,99,100]
confirm(INTERCEPT, createAreaEval(xValues),
createAreaEval(yValues), 51.74384236453202);
// Excel 2010 gives 51.74384236453200
@@ -136,8 +136,8 @@ public final class TestIntercept extends
confirmError(areaEvalX, areaEvalX, ErrorEval.REF_INVALID);
// search for errors array by array, not pair by pair
- confirmError(areaEvalX, areaEvalY, ErrorEval.REF_INVALID);
- confirmError(areaEvalY, areaEvalX, ErrorEval.NULL_INTERSECTION);
+ confirmError(areaEvalX, areaEvalY, ErrorEval.NULL_INTERSECTION);
+ confirmError(areaEvalY, areaEvalX, ErrorEval.REF_INVALID);
}
/**
Modified:
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSlope.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSlope.java?rev=1538772&r1=1538771&r2=1538772&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSlope.java
(original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSlope.java
Mon Nov 4 21:27:12 2013
@@ -54,7 +54,7 @@ public final class TestSlope extends Tes
public void testBasic() {
Double exp = Math.pow(10, 7.5);
- ValueEval[] xValues = {
+ ValueEval[] yValues = {
new NumberEval(3+exp),
new NumberEval(4+exp),
new NumberEval(2+exp),
@@ -62,9 +62,9 @@ public final class TestSlope extends Tes
new NumberEval(4+exp),
new NumberEval(7+exp),
};
- ValueEval areaEvalX = createAreaEval(xValues);
+ ValueEval areaEvalY = createAreaEval(yValues);
- ValueEval[] yValues = {
+ ValueEval[] xValues = {
new NumberEval(1),
new NumberEval(2),
new NumberEval(3),
@@ -72,7 +72,7 @@ public final class TestSlope extends Tes
new NumberEval(5),
new NumberEval(6),
};
- ValueEval areaEvalY = createAreaEval(yValues);
+ ValueEval areaEvalX = createAreaEval(xValues);
confirm(SLOPE, areaEvalX, areaEvalY, 0.7752808988764045);
// Excel 2010 gives 0.775280898876405
}
@@ -81,9 +81,9 @@ public final class TestSlope extends Tes
* number of items in array is not limited to 30
*/
public void testLargeArrays() {
- ValueEval[] xValues = createMockNumberArray(100, 3); //
[1,2,0,1,2,0,...,0,1]
- xValues[0] = new NumberEval(2.0); // Changes first element to 2
- ValueEval[] yValues = createMockNumberArray(100, 101); //
[1,2,3,4,...,99,100]
+ ValueEval[] yValues = createMockNumberArray(100, 3); //
[1,2,0,1,2,0,...,0,1]
+ yValues[0] = new NumberEval(2.0); // Changes first element to 2
+ ValueEval[] xValues = createMockNumberArray(100, 101); //
[1,2,3,4,...,99,100]
confirm(SLOPE, createAreaEval(xValues),
createAreaEval(yValues), -1.231527093596059);
// Excel 2010 gives -1.23152709359606
@@ -131,7 +131,7 @@ public final class TestSlope extends Tes
confirmError(areaEvalX, areaEvalX, ErrorEval.REF_INVALID);
// search for errors array by array, not pair by pair
- confirmError(areaEvalX, areaEvalY, ErrorEval.REF_INVALID);
- confirmError(areaEvalY, areaEvalX, ErrorEval.NULL_INTERSECTION);
+ confirmError(areaEvalX, areaEvalY, ErrorEval.NULL_INTERSECTION);
+ confirmError(areaEvalY, areaEvalX, ErrorEval.REF_INVALID);
}
}
Modified: poi/trunk/test-data/spreadsheet/FormulaEvalTestData.xls
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/FormulaEvalTestData.xls?rev=1538772&r1=1538771&r2=1538772&view=diff
==============================================================================
Binary files - no diff available.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]