You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ps...@apache.org on 2005/10/16 05:29:22 UTC
svn commit: r322442 - in /jakarta/commons/proper/math/trunk: ./
src/java/org/apache/commons/math/analysis/
src/java/org/apache/commons/math/complex/
src/java/org/apache/commons/math/linear/
src/java/org/apache/commons/math/stat/descriptive/moment/ src/...
Author: psteitz
Date: Sat Oct 15 20:29:14 2005
New Revision: 322442
URL: http://svn.apache.org/viewcvs?rev=322442&view=rev
Log:
Merging bug fixes in r267517:r321515 from MATH_1_1 branch.
Modified:
jakarta/commons/proper/math/trunk/maven.xml
jakarta/commons/proper/math/trunk/project.xml
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/BisectionSolver.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/complex/Complex.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/Skewness.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Max.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Min.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Percentile.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/MathUtils.java
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/ResizableDoubleArray.java
jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/complex/ComplexTest.java
jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/StatUtilsTest.java
jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MaxTest.java
jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MinTest.java
jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/util/MathUtilsTest.java
jakarta/commons/proper/math/trunk/xdocs/changes.xml
Modified: jakarta/commons/proper/math/trunk/maven.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/maven.xml?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/maven.xml (original)
+++ jakarta/commons/proper/math/trunk/maven.xml Sat Oct 15 20:29:14 2005
@@ -47,6 +47,8 @@
<preGoal name="dist:build-src">
<copy todir="${maven.dist.src.assembly.dir}">
+ <fileset file='${basedir}/checkstyle.xml'/>
+ <fileset file='${basedir}/license-header.txt'/>
<fileset file='${basedir}/NOTICE.txt'/>
<fileset file='${basedir}/RELEASE-NOTES.txt'/>
</copy>
Modified: jakarta/commons/proper/math/trunk/project.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/project.xml?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/project.xml (original)
+++ jakarta/commons/proper/math/trunk/project.xml Sat Oct 15 20:29:14 2005
@@ -84,6 +84,11 @@
<name>1.1</name>
<tag>MATH_1_1_RC1</tag>
</version>
+ <version>
+ <id>1.1-RC3</id>
+ <name>1.1</name>
+ <tag>MATH_1_1_RC3</tag>
+ </version>
</versions>
<developers>
<developer>
@@ -140,6 +145,9 @@
</contributor>
<contributor>
<name>Christopher Schuck</name>
+ </contributor>
+ <contributor>
+ <name>Mauro Talevi</name>
</contributor>
<contributor>
<name>Kim van der Linde</name>
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/BisectionSolver.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/BisectionSolver.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/BisectionSolver.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/BisectionSolver.java Sat Oct 15 20:29:14 2005
@@ -87,7 +87,6 @@
if (fm * fmin > 0.0) {
// max and m bracket the root.
min = m;
- fmin = fm;
} else {
// min and m bracket the root.
max = m;
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/complex/Complex.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/complex/Complex.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/complex/Complex.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/complex/Complex.java Sat Oct 15 20:29:14 2005
@@ -17,6 +17,7 @@
package org.apache.commons.math.complex;
import java.io.Serializable;
+import org.apache.commons.math.util.MathUtils;
/**
* Representation of a Complex number - a number which has both a
@@ -33,7 +34,7 @@
/** The square root of -1. A number representing "0.0 + 1.0i".*/
public static final Complex I = new Complex(0.0, 1.0);
- /** A complex number representing "(Double.NaN) + (Double.NaN)i" */
+ /** A complex number analogous to {@link java.lang.Double#NaN} */
public static final Complex NaN = new Complex(Double.NaN, Double.NaN);
/** A complex number representing "1.0 + 0.0i" */
@@ -147,9 +148,16 @@
}
/**
- * Test for the equality of two Complex objects. If both the
- * real and imaginary parts of two Complex numbers are exactly
- * the same, the two Complex objects are considered to be equal.
+ * Test for the equality of two Complex objects.
+ * <p>
+ * If both the real and imaginary parts of two Complex numbers
+ * are exactly the same, and neither is <code>Double.NaN</code>, the two
+ * Complex objects are considered to be equal.
+ * <p>
+ * All <code>NaN</code> values are considered to be equal - i.e, if either
+ * (or both) real and imaginary parts of the complex number are equal
+ * to Double.NaN, the complex number is equal to
+ * <code>Complex.NaN</code>.
*
* @param other Object to test for equality to this
* @return true if two Complex objects are equal, false if
@@ -164,20 +172,39 @@
ret = true;
} else if (other == null) {
ret = false;
- } else {
+ } else {
try {
Complex rhs = (Complex)other;
+ if (rhs.isNaN()) {
+ ret = this.isNaN();
+ } else {
ret = (Double.doubleToRawLongBits(real) ==
Double.doubleToRawLongBits(rhs.getReal())) &&
(Double.doubleToRawLongBits(imaginary) ==
Double.doubleToRawLongBits(rhs.getImaginary()));
+ }
} catch (ClassCastException ex) {
// ignore exception
ret = false;
}
}
-
+
return ret;
+ }
+
+ /**
+ * Get a hashCode for the complex number.
+ * <p>
+ * All NaN values have the same hash code.
+ *
+ * @return a hash code value for this object
+ */
+ public int hashCode() {
+ if (isNaN()) {
+ return 7;
+ }
+ return 37 * (17 * MathUtils.hash(imaginary) +
+ MathUtils.hash(real));
}
/**
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/linear/RealMatrixImpl.java Sat Oct 15 20:29:14 2005
@@ -871,7 +871,8 @@
/**
* Returns true iff <code>object</code> is a
* <code>RealMatrixImpl</code> instance with the same dimensions as this
- * and all corresponding matrix entries are equal.
+ * and all corresponding matrix entries are equal. Corresponding entries
+ * are compared using {@link java.lang.Double#doubleToLongBits(double)}
*
* @param object the object to test equality against.
* @return true if object equals this
@@ -891,7 +892,8 @@
}
for (int row = 0; row < nRows; row++) {
for (int col = 0; col < nCols; col++) {
- if (data[row][col] != m.getEntry(row, col)) {
+ if (Double.doubleToLongBits(data[row][col]) !=
+ Double.doubleToLongBits(m.getEntry(row, col))) {
return false;
}
}
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/Skewness.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/Skewness.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/Skewness.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/Skewness.java Sat Oct 15 20:29:14 2005
@@ -91,15 +91,13 @@
return Double.NaN;
}
double variance = moment.m2 / (double) (moment.n - 1);
- double skewness = Double.NaN;
if (variance < 10E-20) {
- skewness = 0.0;
+ return 0.0d;
} else {
double n0 = (double) moment.getN();
- skewness = (n0 * moment.m3) /
+ return (n0 * moment.m3) /
((n0 - 1) * (n0 -2) * Math.sqrt(variance) * variance);
}
- return skewness;
}
/**
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Max.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Max.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Max.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Max.java Sat Oct 15 20:29:14 2005
@@ -112,7 +112,9 @@
if (test(values, begin, length)) {
max = values[begin];
for (int i = begin; i < begin + length; i++) {
- max = (max > values[i]) ? max : values[i];
+ if (!Double.isNaN(values[i])) {
+ max = (max > values[i]) ? max : values[i];
+ }
}
}
return max;
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Min.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Min.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Min.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Min.java Sat Oct 15 20:29:14 2005
@@ -114,7 +114,9 @@
if (test(values, begin, length)) {
min = values[begin];
for (int i = begin; i < begin + length; i++) {
- min = (min < values[i]) ? min : values[i];
+ if (!Double.isNaN(values[i])) {
+ min = (min < values[i]) ? min : values[i];
+ }
}
}
return min;
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Percentile.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Percentile.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Percentile.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/rank/Percentile.java Sat Oct 15 20:29:14 2005
@@ -186,13 +186,13 @@
if ((p > 100) || (p <= 0)) {
throw new IllegalArgumentException("invalid quantile value: " + p);
}
- double n = (double) length;
- if (n == 0) {
+ if (length == 0) {
return Double.NaN;
}
- if (n == 1) {
+ if (length == 1) {
return values[begin]; // always return single value for n = 1
}
+ double n = (double) length;
double pos = p * (n + 1) / 100;
double fpos = Math.floor(pos);
int intPos = (int) fpos;
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/MathUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/MathUtils.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/MathUtils.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/MathUtils.java Sat Oct 15 20:29:14 2005
@@ -733,7 +733,7 @@
public static int subAndCheck(int x, int y) {
long s = (long)x - (long)y;
if (s < Integer.MIN_VALUE || s > Integer.MAX_VALUE) {
- throw new ArithmeticException("overflow: add");
+ throw new ArithmeticException("overflow: subtract");
}
return (int)s;
}
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/ResizableDoubleArray.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/ResizableDoubleArray.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/ResizableDoubleArray.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/util/ResizableDoubleArray.java Sat Oct 15 20:29:14 2005
@@ -451,21 +451,19 @@
* @throws ArrayIndexOutOfBoundsException if <code>index</code> is less than
* zero or is greater than <code>getNumElements() - 1</code>.
*/
- public double getElement(int index) {
- double value = Double.NaN;
+ public synchronized double getElement(int index) {
if (index >= numElements) {
String msg =
"The index specified: " + index +
" is larger than the current number of elements";
throw new ArrayIndexOutOfBoundsException(msg);
} else if (index >= 0) {
- value = internalArray[startIndex + index];
+ return internalArray[startIndex + index];
} else {
String msg =
"Elements cannot be retrieved from a negative array index";
throw new ArrayIndexOutOfBoundsException(msg);
}
- return value;
}
/**
@@ -475,7 +473,7 @@
* array have no effect on this <code>ResizableArray.</code>
* @return the double array.
*/
- public double[] getElements() {
+ public synchronized double[] getElements() {
double[] elementArray = new double[numElements];
System.arraycopy( internalArray, startIndex, elementArray, 0,
numElements);
@@ -517,7 +515,7 @@
*
* @return the length of the internal storage array.
*/
- int getInternalLength() {
+ synchronized int getInternalLength() {
return (internalArray.length);
}
@@ -527,7 +525,7 @@
*
* @return number of elements
*/
- public int getNumElements() {
+ public synchronized int getNumElements() {
return (numElements);
}
@@ -542,7 +540,7 @@
*
* @return the internal storage array used by this object
*/
- public double[] getValues() {
+ public synchronized double[] getValues() {
return (internalArray);
}
@@ -683,7 +681,7 @@
*
* @return starting index
*/
- public int start() {
+ public synchronized int start() {
return startIndex;
}
Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/complex/ComplexTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/complex/ComplexTest.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/complex/ComplexTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/complex/ComplexTest.java Sat Oct 15 20:29:14 2005
@@ -161,4 +161,25 @@
Complex y = new Complex(0.0, 0.0 + Double.MIN_VALUE);
assertFalse(x.equals(y));
}
+
+ public void testEqualsNaN() {
+ Complex realNaN = new Complex(Double.NaN, 0.0);
+ Complex imaginaryNaN = new Complex(0.0, Double.NaN);
+ Complex complexNaN = Complex.NaN;
+ assertTrue(realNaN.equals(imaginaryNaN));
+ assertTrue(imaginaryNaN.equals(complexNaN));
+ assertTrue(realNaN.equals(complexNaN));
+ }
+
+ public void testHashCode() {
+ Complex x = new Complex(0.0, 0.0);
+ Complex y = new Complex(0.0, 0.0 + Double.MIN_VALUE);
+ assertFalse(x.hashCode()==y.hashCode());
+ y = new Complex(0.0 + Double.MIN_VALUE, 0.0);
+ assertFalse(x.hashCode()==y.hashCode());
+ Complex realNaN = new Complex(Double.NaN, 0.0);
+ Complex imaginaryNaN = new Complex(0.0, Double.NaN);
+ assertEquals(realNaN.hashCode(), imaginaryNaN.hashCode());
+ assertEquals(imaginaryNaN.hashCode(), Complex.NaN.hashCode());
+ }
}
Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/StatUtilsTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/StatUtilsTest.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/StatUtilsTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/StatUtilsTest.java Sat Oct 15 20:29:14 2005
@@ -42,6 +42,7 @@
private double skewness = 0;
private double kurtosis = 0.5;
private double tolerance = 10E-15;
+ private double nan = Double.NaN;
public StatUtilsTest(String name) {
super(name);
@@ -296,6 +297,22 @@
// test many
x = new double[] {one, two, two, three};
TestUtils.assertEquals(three, StatUtils.max(x, 1, 3), tolerance);
+
+ // test first nan is ignored
+ x = new double[] {nan, two, three};
+ TestUtils.assertEquals(three, StatUtils.max(x), tolerance);
+
+ // test middle nan is ignored
+ x = new double[] {one, nan, three};
+ TestUtils.assertEquals(three, StatUtils.max(x), tolerance);
+
+ // test last nan is ignored
+ x = new double[] {one, two, nan};
+ TestUtils.assertEquals(two, StatUtils.max(x), tolerance);
+
+ // test all nan returns nan
+ x = new double[] {nan, nan, nan};
+ TestUtils.assertEquals(nan, StatUtils.max(x), tolerance);
}
public void testMin() {
@@ -319,6 +336,22 @@
// test many
x = new double[] {one, two, two, three};
TestUtils.assertEquals(two, StatUtils.min(x, 1, 3), tolerance);
+
+ // test first nan is ignored
+ x = new double[] {nan, two, three};
+ TestUtils.assertEquals(two, StatUtils.min(x), tolerance);
+
+ // test middle nan is ignored
+ x = new double[] {one, nan, three};
+ TestUtils.assertEquals(one, StatUtils.min(x), tolerance);
+
+ // test last nan is ignored
+ x = new double[] {one, two, nan};
+ TestUtils.assertEquals(one, StatUtils.min(x), tolerance);
+
+ // test all nan returns nan
+ x = new double[] {nan, nan, nan};
+ TestUtils.assertEquals(nan, StatUtils.min(x), tolerance);
}
public void testPercentile() {
Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MaxTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MaxTest.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MaxTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MaxTest.java Sat Oct 15 20:29:14 2005
@@ -72,4 +72,13 @@
assertEquals(Double.POSITIVE_INFINITY, max.evaluate(testArray), 0);
}
+ public void testNaNs() {
+ Max max = new Max();
+ double nan = Double.NaN;
+ assertEquals(3d, max.evaluate(new double[]{nan, 2d, 3d}), 0);
+ assertEquals(3d, max.evaluate(new double[]{1d, nan, 3d}), 0);
+ assertEquals(2d, max.evaluate(new double[]{1d, 2d, nan}), 0);
+ assertTrue(Double.isNaN(max.evaluate(new double[]{nan, nan, nan})));
+ }
+
}
Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MinTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MinTest.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MinTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/stat/descriptive/rank/MinTest.java Sat Oct 15 20:29:14 2005
@@ -72,4 +72,13 @@
assertEquals(Double.NEGATIVE_INFINITY, min.evaluate(testArray), 0);
}
+ public void testNaNs() {
+ Min min = new Min();
+ double nan = Double.NaN;
+ assertEquals(2d, min.evaluate(new double[]{nan, 2d, 3d}), 0);
+ assertEquals(1d, min.evaluate(new double[]{1d, nan, 3d}), 0);
+ assertEquals(1d, min.evaluate(new double[]{1d, 2d, nan}), 0);
+ assertTrue(Double.isNaN(min.evaluate(new double[]{nan, nan, nan})));
+ }
+
}
Modified: jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/util/MathUtilsTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/util/MathUtilsTest.java?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/util/MathUtilsTest.java (original)
+++ jakarta/commons/proper/math/trunk/src/test/org/apache/commons/math/util/MathUtilsTest.java Sat Oct 15 20:29:14 2005
@@ -46,9 +46,11 @@
assertEquals(big, MathUtils.addAndCheck(big, 0));
try {
int res = MathUtils.addAndCheck(big, 1);
+ fail("Expecting ArithmeticException");
} catch (ArithmeticException ex) {}
try {
int res = MathUtils.addAndCheck(bigNeg, -1);
+ fail("Expecting ArithmeticException");
} catch (ArithmeticException ex) {}
}
@@ -58,9 +60,11 @@
assertEquals(big, MathUtils.mulAndCheck(big, 1));
try {
int res = MathUtils.mulAndCheck(big, 2);
+ fail("Expecting ArithmeticException");
} catch (ArithmeticException ex) {}
try {
int res = MathUtils.mulAndCheck(bigNeg, 2);
+ fail("Expecting ArithmeticException");
} catch (ArithmeticException ex) {}
}
@@ -70,10 +74,23 @@
assertEquals(big, MathUtils.subAndCheck(big, 0));
try {
int res = MathUtils.subAndCheck(big, -1);
+ fail("Expecting ArithmeticException");
} catch (ArithmeticException ex) {}
try {
int res = MathUtils.subAndCheck(bigNeg, 1);
+ fail("Expecting ArithmeticException");
} catch (ArithmeticException ex) {}
+ }
+
+ public void testSubAndCheckErrorMessage() {
+ int big = Integer.MAX_VALUE;
+ int bigNeg = Integer.MIN_VALUE;
+ try {
+ int res = MathUtils.subAndCheck(big, -1);
+ fail("Expecting ArithmeticException");
+ } catch (ArithmeticException ex) {
+ assertEquals("overflow: subtract", ex.getMessage());
+ }
}
public void testBinomialCoefficient() {
Modified: jakarta/commons/proper/math/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/math/trunk/xdocs/changes.xml?rev=322442&r1=322441&r2=322442&view=diff
==============================================================================
--- jakarta/commons/proper/math/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/math/trunk/xdocs/changes.xml Sat Oct 15 20:29:14 2005
@@ -50,11 +50,37 @@
and numerical utilities, and a PRNG pluggability framework making it
possible to replace the JDK-supplied random number generator in
commons-math (and elsewhere) with alternative PRNG implementations.">
- <action dev="psteitz" type="fix" issue="36450" due-to="Keith McDonald">
+ <action dev="psteitz" type="fix" issue="37019" due-to="Mauro Talevi">
+ Fixed incorrect NaN handling in o.a.m.s.d.rank.Min, Max
+ </action>
+ <action dev="psteitz" type="fix" issue="36491">
+ Changed RealMatrixImpl.equals to use Double.doubleToLongBits to compare
+ corresponding matrix entries.
+ </action>
+ <action dev="psteitz" type="fix" issue="36491">
+ Eliminated floating point equals comparison in Percentile.evaluate.
+ </action>
+ <action dev="psteitz" type="fix" issue="36491">
+ Eliminated unnecessary assignment statements in Skewness.getResult
+ method.
+ </action>
+ <action dev="psteitz" type="fix" issue="36491">
+ Synchronized getters in ResizeableDoubleArray.
+ </action>
+ <action dev="psteitz" type="fix" issue="36491">
+ Eliminated unnecessary assignment statement in BisectionSolver.solve
+ method.
+ </action>
+ <action dev="psteitz" type="fix" issue="36491">
+ Implemented hashCode in the Complex class and changed the semantics of
+ equals to make all instances with real or imaginary part NaN equal.
+ </action>
+ <action dev="psteitz" type="fix" issue="36450" due-to="Keith McDonald">
Fixed bin index overflow problem in EmpiricalDistributionImpl.
</action>
<action dev="brentworden" type="fix" issue="36232" due-to="Xiaogang Zhang">
- Added protection against numerical overflow and underflow in the isBracketing method.
+ Added protection against numerical overflow and underflow in the
+ isBracketing method.
</action>
<action dev="brentworden" type="fix" issue="36300" due-to="Nikhil Gupte">
Fixed division by zero error in rounding methods.
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org