Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/OutOfRangeException.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/OutOfRangeException.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/OutOfRangeException.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/OutOfRangeException.java Thu Sep 30 12:55:02 2010 @@ -17,6 +17,7 @@ package org.apache.commons.math.exception; import org.apache.commons.math.exception.util.LocalizedFormats; +import org.apache.commons.math.exception.util.Localizable; /** * Exception to be thrown when some argument is out of range. @@ -44,10 +45,28 @@ public class OutOfRangeException extends public OutOfRangeException(Number wrong, Number lo, Number hi) { - super(LocalizedFormats.OUT_OF_RANGE_SIMPLE, wrong, lo, hi); + this(null, wrong, lo, hi); + } + + /** + * Construct an exception from the mismatched dimensions with a + * specific context information. + * + * @param specific Context information. + * @param wrong Requested value. + * @param lo Lower bound. + * @param hi Higher bound. + */ + public OutOfRangeException(Localizable specific, + Number wrong, + Number lo, + Number hi) { + super(specific, LocalizedFormats.OUT_OF_RANGE_SIMPLE, + wrong, lo, hi); this.lo = lo; this.hi = hi; } + /** * @return the lower bound. */
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/LocalizedFormats.java Thu Sep 30 12:55:02 2010 @@ -174,6 +174,7 @@ public enum LocalizedFormats implements BETA("beta"), /* keep */ NOT_POSITIVE_COLUMNDIMENSION("invalid column dimension: {0} (must be positive)"), NOT_POSITIVE_DEFINITE_MATRIX("not positive definite matrix"), + DEGREES_OF_FREEDOM("degrees of freedom ({0})"), /* keep */ NOT_POSITIVE_DEGREES_OF_FREEDOM("degrees of freedom must be positive ({0})"), NOT_POSITIVE_ELEMENT_AT_INDEX("element {0} is not positive: {1}"), NOT_POSITIVE_EXPONENT("invalid exponent {0} (must be positive)"), @@ -190,7 +191,9 @@ public enum LocalizedFormats implements NOT_POSITIVE_ROW_DIMENSION("invalid row dimension: {0} (must be positive)"), NOT_POSITIVE_SAMPLE_SIZE("sample size must be positive ({0})"), NOT_POSITIVE_SCALE("scale must be positive ({0})"), + SCALE("scale ({0})"), /* keep */ NOT_POSITIVE_SHAPE("shape must be positive ({0})"), + SHAPE("shape ({0})"), /* keep */ NOT_POSITIVE_STANDARD_DEVIATION("standard deviation must be positive ({0})"), STANDARD_DEVIATION("standard deviation ({0})"), /* keep */ NOT_POSITIVE_UPPER_BOUND("upper bound must be positive ({0})"), @@ -238,6 +241,7 @@ public enum LocalizedFormats implements OBSERVED_COUNTS_BOTTH_ZERO_FOR_ENTRY("observed counts are both zero for entry {0}"), OUT_OF_BOUNDS_QUANTILE_VALUE("out of bounds quantile value: {0}, must be in (0, 100]"), OUT_OF_BOUND_SIGNIFICANCE_LEVEL("out of bounds significance level {0}, must be between {1} and {2}"), + SIGNIFICANCE_LEVEL("significance level ({0})"), /* keep */ OUT_OF_ORDER_ABSCISSA_ARRAY("the abscissae array must be sorted in a strictly increasing order, but the {0}-th element is {1} whereas {2}-th is {3}"), OUT_OF_RANGE_ROOT_OF_UNITY_INDEX("out of range root of unity index {0} (must be in [{1};{2}])"), OUT_OF_RANGE_SIMPLE("{0} out of [{1}, {2}] range"), /* keep */ Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/TTestImpl.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/TTestImpl.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/TTestImpl.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/inference/TTestImpl.java Thu Sep 30 12:55:02 2010 @@ -17,7 +17,9 @@ package org.apache.commons.math.stat.inference; import org.apache.commons.math.MathException; -import org.apache.commons.math.MathRuntimeException; +import org.apache.commons.math.exception.OutOfRangeException; +import org.apache.commons.math.exception.NullArgumentException; +import org.apache.commons.math.exception.NumberIsTooSmallException; import org.apache.commons.math.distribution.TDistribution; import org.apache.commons.math.distribution.TDistributionImpl; import org.apache.commons.math.exception.util.LocalizedFormats; @@ -34,28 +36,6 @@ import org.apache.commons.math.util.Fast * @version $Revision$ $Date$ */ public class TTestImpl implements TTest { - - /** Distribution used to compute inference statistics. */ - private TDistribution distribution; - - /** - * Default constructor. - */ - public TTestImpl() { - this(new TDistributionImpl(1.0)); - } - - /** - * Create a test instance using the given distribution for computing - * inference statistics. - * @param t distribution used to compute inference statistics. - * @since 1.2 - */ - public TTestImpl(TDistribution t) { - super(); - setDistribution(t); - } - /** * Computes a paired, 2-sample t-statistic based on the data in the input * arrays. The t-statistic returned is equivalent to what would be returned by @@ -82,8 +62,8 @@ public class TTestImpl implements TTest checkSampleData(sample2); double meanDifference = StatUtils.meanDifference(sample1, sample2); return t(meanDifference, 0, - StatUtils.varianceDifference(sample1, sample2, meanDifference), - sample1.length); + StatUtils.varianceDifference(sample1, sample2, meanDifference), + sample1.length); } /** @@ -873,8 +853,9 @@ public class TTestImpl implements TTest * @throws MathException if an error occurs performing the test */ public boolean tTest(StatisticalSummary sampleStats1, - StatisticalSummary sampleStats2, double alpha) - throws IllegalArgumentException, MathException { + StatisticalSummary sampleStats2, + double alpha) + throws MathException { checkSignificanceLevel(alpha); return tTest(sampleStats1, sampleStats2) < alpha; } @@ -956,9 +937,9 @@ public class TTestImpl implements TTest * @throws MathException if an error occurs computing the p-value */ protected double tTest(double m, double mu, double v, double n) - throws MathException { + throws MathException { double t = FastMath.abs(t(m, mu, v, n)); - distribution.setDegreesOfFreedom(n - 1); + TDistribution distribution = new TDistributionImpl(n - 1); return 2.0 * distribution.cumulativeProbability(-t); } @@ -977,13 +958,14 @@ public class TTestImpl implements TTest * @return p-value * @throws MathException if an error occurs computing the p-value */ - protected double tTest(double m1, double m2, double v1, double v2, - double n1, double n2) - throws MathException { + protected double tTest(double m1, double m2, + double v1, double v2, + double n1, double n2) + throws MathException { double t = FastMath.abs(t(m1, m2, v1, v2, n1, n2)); double degreesOfFreedom = 0; degreesOfFreedom = df(v1, v2, n1, n2); - distribution.setDegreesOfFreedom(degreesOfFreedom); + TDistribution distribution = new TDistributionImpl(degreesOfFreedom); return 2.0 * distribution.cumulativeProbability(-t); } @@ -1002,61 +984,60 @@ public class TTestImpl implements TTest * @return p-value * @throws MathException if an error occurs computing the p-value */ - protected double homoscedasticTTest(double m1, double m2, double v1, - double v2, double n1, double n2) - throws MathException { + protected double homoscedasticTTest(double m1, double m2, + double v1, double v2, + double n1, double n2) + throws MathException { double t = FastMath.abs(homoscedasticT(m1, m2, v1, v2, n1, n2)); double degreesOfFreedom = n1 + n2 - 2; - distribution.setDegreesOfFreedom(degreesOfFreedom); + TDistribution distribution = new TDistributionImpl(degreesOfFreedom); return 2.0 * distribution.cumulativeProbability(-t); } /** - * Modify the distribution used to compute inference statistics. - * @param value the new distribution - * @since 1.2 - */ - public void setDistribution(TDistribution value) { - distribution = value; - } - - /** Check significance level. + * Check significance level. + * * @param alpha significance level - * @exception IllegalArgumentException if significance level is out of bounds + * @throws OutOfRangeException if the significance level is out of bounds. */ - private void checkSignificanceLevel(final double alpha) - throws IllegalArgumentException { - if ((alpha <= 0) || (alpha > 0.5)) { - throw MathRuntimeException.createIllegalArgumentException( - LocalizedFormats.OUT_OF_BOUND_SIGNIFICANCE_LEVEL, - alpha, 0.0, 0.5); + private void checkSignificanceLevel(final double alpha) { + if (alpha <= 0 || alpha > 0.5) { + throw new OutOfRangeException(LocalizedFormats.SIGNIFICANCE_LEVEL, + alpha, 0.0, 0.5); } } - /** Check sample data. - * @param data sample data - * @exception IllegalArgumentException if there is not enough sample data - */ - private void checkSampleData(final double[] data) - throws IllegalArgumentException { - if ((data == null) || (data.length < 2)) { - throw MathRuntimeException.createIllegalArgumentException( - LocalizedFormats.INSUFFICIENT_DATA_FOR_T_STATISTIC, - (data == null) ? 0 : data.length); + /** + * Check sample data. + * + * @param data Sample data. + * @throws NullArgumentException if {...@code data} is {...@code null}. + * @throws NumberIsTooSmallException if there is not enough sample data. + */ + private void checkSampleData(final double[] data) { + if (data == null) { + throw new NullArgumentException(); + } + if (data.length < 2) { + throw new NumberIsTooSmallException(LocalizedFormats.INSUFFICIENT_DATA_FOR_T_STATISTIC, + data.length, 2, true); } } - /** Check sample data. - * @param stat statistical summary - * @exception IllegalArgumentException if there is not enough sample data - */ - private void checkSampleData(final StatisticalSummary stat) - throws IllegalArgumentException { - if ((stat == null) || (stat.getN() < 2)) { - throw MathRuntimeException.createIllegalArgumentException( - LocalizedFormats.INSUFFICIENT_DATA_FOR_T_STATISTIC, - (stat == null) ? 0 : stat.getN()); + /** + * Check sample data. + * + * @param stat Statistical summary. + * @throws NullArgumentException if {...@code data} is {...@code null}. + * @throws NumberIsTooSmallException if there is not enough sample data. + */ + private void checkSampleData(final StatisticalSummary stat) { + if (stat == null) { + throw new NullArgumentException(); + } + if (stat.getN() < 2) { + throw new NumberIsTooSmallException(LocalizedFormats.INSUFFICIENT_DATA_FOR_T_STATISTIC, + stat.getN(), 2, true); } } - } Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/regression/SimpleRegression.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/regression/SimpleRegression.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/regression/SimpleRegression.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/stat/regression/SimpleRegression.java Thu Sep 30 12:55:02 2010 @@ -19,7 +19,7 @@ package org.apache.commons.math.stat.reg import java.io.Serializable; import org.apache.commons.math.MathException; -import org.apache.commons.math.MathRuntimeException; +import org.apache.commons.math.exception.OutOfRangeException; import org.apache.commons.math.distribution.TDistribution; import org.apache.commons.math.distribution.TDistributionImpl; import org.apache.commons.math.exception.util.LocalizedFormats; @@ -93,18 +93,19 @@ public class SimpleRegression implements * Create an empty SimpleRegression instance */ public SimpleRegression() { - this(new TDistributionImpl(1.0)); + this(1); } /** * Create an empty SimpleRegression using the given distribution object to * compute inference statistics. - * @param t the distribution used to compute inference statistics. - * @since 1.2 + * + * @param degrees Number of degrees of freedom of the distribution used + * to compute inference statistics. + * @since 2.2 */ - public SimpleRegression(TDistribution t) { - super(); - setDistribution(t); + public SimpleRegression(int degrees) { + distribution = new TDistributionImpl(degrees); } /** @@ -138,7 +139,7 @@ public class SimpleRegression implements n++; if (n > 2) { - distribution.setDegreesOfFreedom(n - 2); + distribution = new TDistributionImpl(n - 2); } } @@ -170,7 +171,7 @@ public class SimpleRegression implements n--; if (n > 2) { - distribution.setDegreesOfFreedom(n - 2); + distribution = new TDistributionImpl(n - 2); } } } @@ -549,9 +550,8 @@ public class SimpleRegression implements public double getSlopeConfidenceInterval(double alpha) throws MathException { if (alpha >= 1 || alpha <= 0) { - throw MathRuntimeException.createIllegalArgumentException( - LocalizedFormats.OUT_OF_BOUND_SIGNIFICANCE_LEVEL, - alpha, 0.0, 1.0); + throw new OutOfRangeException(LocalizedFormats.SIGNIFICANCE_LEVEL, + alpha, 0, 1); } return getSlopeStdErr() * distribution.inverseCumulativeProbability(1d - alpha / 2d); @@ -606,18 +606,4 @@ public class SimpleRegression implements private double getRegressionSumSquares(double slope) { return slope * slope * sumXX; } - - /** - * Modify the distribution used to compute inference statistics. - * @param value the new distribution - * @since 1.2 - */ - public void setDistribution(TDistribution value) { - distribution = value; - - // modify degrees of freedom - if (n > 2) { - distribution.setDegreesOfFreedom(n - 2); - } - } } Modified: commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties (original) +++ commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties Thu Sep 30 12:55:02 2010 @@ -147,6 +147,7 @@ BETA = beta NOT_POSITIVE_COLUMNDIMENSION = nombre de colonnes invalide : {0} (doit \u00eatre positif) NOT_POSITIVE_DEFINITE_MATRIX = matrice non d\u00e9finie positive NOT_POSITIVE_DEGREES_OF_FREEDOM = les degr\u00e9s de libert\u00e9 doivent \u00eatre positifs ({0}) +DEGREES_OF_FREEDOM = degr\u00e9s de libert\u00e9 ({0}) NOT_POSITIVE_ELEMENT_AT_INDEX = l''\u00e9l\u00e9ment {0} n''est pas positif : {1} NOT_POSITIVE_EXPONENT = exposant {0} invalide (doit \u00eatre positif) NOT_POSITIVE_LENGTH = la longueur doit \u00eatre positive ({0}) @@ -162,7 +163,9 @@ NOT_POSITIVE_POPULATION_SIZE = la taille NOT_POSITIVE_ROW_DIMENSION = nombre de lignes invalide : {0} (doit \u00eatre positif) NOT_POSITIVE_SAMPLE_SIZE = la taille de l''\u00e9chantillon doit \u00eatre positive ({0}) NOT_POSITIVE_SCALE = l''\u00e9chelle doit \u00eatre positive ({0}) +SCALE = facteur d''\u00e9chelle ({0}) NOT_POSITIVE_SHAPE = le facteur de forme doit \u00eatre positif ({0}) +SHAPE = facteur de forme ({0}) NOT_POSITIVE_STANDARD_DEVIATION = l''\u00e9cart type doit \u00eatre positif ({0}) STANDARD_DEVIATION = \u00e9cart type NOT_POSITIVE_UPPER_BOUND = la borne sup\u00e9rieure doit \u00eatre positive ({0}) @@ -210,6 +213,7 @@ OBSERVED_COUNTS_ALL_ZERO = aucune occurr OBSERVED_COUNTS_BOTTH_ZERO_FOR_ENTRY = les occurrences observ\u00e9es sont toutes deux nulles pour l''entr\u00e9e {0} OUT_OF_BOUNDS_QUANTILE_VALUE = valeur de quantile {0} hors bornes, doit \u00eatre dans l''intervalle ]0, 100] OUT_OF_BOUND_SIGNIFICANCE_LEVEL = niveau de signification {0} hors domaine, doit \u00eatre entre {1} et {2} +SIGNIFICANCE_LEVEL = niveau de signification ({0}) OUT_OF_ORDER_ABSCISSA_ARRAY = les abscisses doivent \u00eatre en ordre strictement croissant, mais l''\u00e9l\u00e9ment {0} vaut {1} alors que l''\u00e9l\u00e9ment {2} vaut {3} OUT_OF_RANGE_ROOT_OF_UNITY_INDEX = l''indice de racine de l''unit\u00e9 {0} est hors du domaine autoris\u00e9 [{1};{2}] OUT_OF_RANGE_SIMPLE = {0} hors du domaine [{1}, {2}] Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/site/xdoc/changes.xml (original) +++ commons/proper/math/trunk/src/site/xdoc/changes.xml Thu Sep 30 12:55:02 2010 @@ -53,7 +53,7 @@ The <action> type attribute can be add,u --> <release version="3.0" date="TBD" description="TBD"> <action dev="erans" type="fix" issue="MATH-349"> - "ChiSquaredDistributionImpl" and "PoissonDistributionImpl" are immutable. + All distribution classes (in package "distribution") are immutable. </action> <action dev="erans" type="update" issue="MATH-195"> Created "MatrixDimensionMismatch" to replace "InvalidMatrixException" Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/CauchyDistributionTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/CauchyDistributionTest.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/CauchyDistributionTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/CauchyDistributionTest.java Thu Sep 30 12:55:02 2010 @@ -18,6 +18,7 @@ package org.apache.commons.math.distribution; import org.apache.commons.math.util.FastMath; +import org.apache.commons.math.exception.NotStrictlyPositiveException; /** * Test cases for CauchyDistribution. @@ -85,32 +86,27 @@ public class CauchyDistributionTest exte public void testMedian() { CauchyDistribution distribution = (CauchyDistribution) getDistribution(); - double expected = FastMath.random(); - distribution.setMedian(expected); - assertEquals(expected, distribution.getMedian(), 0.0); + assertEquals(1.2, distribution.getMedian(), 0.0); } public void testScale() { CauchyDistribution distribution = (CauchyDistribution) getDistribution(); - double expected = FastMath.random(); - distribution.setScale(expected); - assertEquals(expected, distribution.getScale(), 0.0); + assertEquals(2.1, distribution.getScale(), 0.0); } - public void testSetScale() { - CauchyDistribution distribution = (CauchyDistribution) getDistribution(); + public void testPreconditions() { + CauchyDistribution dist; try { - distribution.setScale(0.0); - fail("Can not have 0.0 scale."); - } catch (IllegalArgumentException ex) { - // success + dist = new CauchyDistributionImpl(0, 0); + fail("Cannot have zero scale"); + } catch (NotStrictlyPositiveException ex) { + // Expected. } - try { - distribution.setScale(-1.0); - fail("Can not have negative scale."); - } catch (IllegalArgumentException ex) { - // success + dist = new CauchyDistributionImpl(0, -1); + fail("Cannot have negative scale"); + } catch (NotStrictlyPositiveException ex) { + // Expected. } } } Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/FDistributionTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/FDistributionTest.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/FDistributionTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/FDistributionTest.java Thu Sep 30 12:55:02 2010 @@ -16,6 +16,7 @@ */ package org.apache.commons.math.distribution; +import org.apache.commons.math.exception.NotStrictlyPositiveException; /** * Test cases for FDistribution. @@ -85,48 +86,43 @@ public class FDistributionTest extends C } public void testDfAccessors() { - FDistribution distribution = (FDistribution) getDistribution(); - assertEquals(5d, distribution.getNumeratorDegreesOfFreedom(), Double.MIN_VALUE); - distribution.setNumeratorDegreesOfFreedom(4d); - assertEquals(4d, distribution.getNumeratorDegreesOfFreedom(), Double.MIN_VALUE); - assertEquals(6d, distribution.getDenominatorDegreesOfFreedom(), Double.MIN_VALUE); - distribution.setDenominatorDegreesOfFreedom(4d); - assertEquals(4d, distribution.getDenominatorDegreesOfFreedom(), Double.MIN_VALUE); + FDistribution dist = (FDistribution) getDistribution(); + assertEquals(5d, dist.getNumeratorDegreesOfFreedom(), Double.MIN_VALUE); + assertEquals(6d, dist.getDenominatorDegreesOfFreedom(), Double.MIN_VALUE); + } + + public void testPreconditions() { + FDistribution dist; try { - distribution.setNumeratorDegreesOfFreedom(0d); - fail("Expecting IllegalArgumentException for df = 0"); - } catch (IllegalArgumentException ex) { - // expected + dist = new FDistributionImpl(0, 1); + fail("Expecting NotStrictlyPositiveException for df = 0"); + } catch (NotStrictlyPositiveException ex) { + // Expected. } try { - distribution.setDenominatorDegreesOfFreedom(0d); - fail("Expecting IllegalArgumentException for df = 0"); - } catch (IllegalArgumentException ex) { - // expected + dist = new FDistributionImpl(1, 0); + fail("Expecting NotStrictlyPositiveException for df = 0"); + } catch (NotStrictlyPositiveException ex) { + // Expected. } } public void testLargeDegreesOfFreedom() throws Exception { - org.apache.commons.math.distribution.FDistributionImpl fd = - new org.apache.commons.math.distribution.FDistributionImpl( - 100000., 100000.); + FDistributionImpl fd = new FDistributionImpl(100000, 100000); double p = fd.cumulativeProbability(.999); double x = fd.inverseCumulativeProbability(p); assertEquals(.999, x, 1.0e-5); } public void testSmallDegreesOfFreedom() throws Exception { - org.apache.commons.math.distribution.FDistributionImpl fd = - new org.apache.commons.math.distribution.FDistributionImpl( - 1.0, 1.0); + FDistributionImpl fd = new FDistributionImpl(1, 1); double p = fd.cumulativeProbability(0.975); double x = fd.inverseCumulativeProbability(p); assertEquals(0.975, x, 1.0e-5); - fd.setDenominatorDegreesOfFreedom(2.0); + fd = new FDistributionImpl(1, 2); p = fd.cumulativeProbability(0.975); x = fd.inverseCumulativeProbability(p); assertEquals(0.975, x, 1.0e-5); } - } Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/TDistributionTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/TDistributionTest.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/TDistributionTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/TDistributionTest.java Thu Sep 30 12:55:02 2010 @@ -16,6 +16,8 @@ */ package org.apache.commons.math.distribution; +import org.apache.commons.math.exception.NotStrictlyPositiveException; + /** * Test cases for TDistribution. * Extends ContinuousDistributionAbstractTest. See class javadoc for @@ -104,16 +106,16 @@ public class TDistributionTest extends C } public void testDfAccessors() { - TDistribution distribution = (TDistribution) getDistribution(); - assertEquals(5d, distribution.getDegreesOfFreedom(), Double.MIN_VALUE); - distribution.setDegreesOfFreedom(4d); - assertEquals(4d, distribution.getDegreesOfFreedom(), Double.MIN_VALUE); + TDistribution dist = (TDistribution) getDistribution(); + assertEquals(5d, dist.getDegreesOfFreedom(), Double.MIN_VALUE); + } + + public void testPreconditions() { try { - distribution.setDegreesOfFreedom(0d); - fail("Expecting IllegalArgumentException for df = 0"); - } catch (IllegalArgumentException ex) { + TDistribution dist = new TDistributionImpl(0); + fail("Expecting NotStrictlyPositiveException for df = 0"); + } catch (NotStrictlyPositiveException ex) { // expected } } - } Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/WeibullDistributionTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/WeibullDistributionTest.java?rev=1003048&r1=1003047&r2=1003048&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/WeibullDistributionTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/WeibullDistributionTest.java Thu Sep 30 12:55:02 2010 @@ -18,6 +18,7 @@ package org.apache.commons.math.distribution; import org.apache.commons.math.util.FastMath; +import org.apache.commons.math.exception.NotStrictlyPositiveException; /** * Test cases for WeibullDistribution. @@ -75,50 +76,24 @@ public class WeibullDistributionTest ext } public void testAlpha() { - WeibullDistribution distribution = (WeibullDistribution) getDistribution(); - double expected = FastMath.random(); - distribution.setShape(expected); - assertEquals(expected, distribution.getShape(), 0.0); - } - - public void testBeta() { - WeibullDistribution distribution = (WeibullDistribution) getDistribution(); - double expected = FastMath.random(); - distribution.setScale(expected); - assertEquals(expected, distribution.getScale(), 0.0); - } - - public void testSetAlpha() { - WeibullDistribution distribution = (WeibullDistribution) getDistribution(); - try { - distribution.setShape(0.0); - fail("Can not have 0.0 alpha."); - } catch (IllegalArgumentException ex) { - // success - } - + WeibullDistribution dist = new WeibullDistributionImpl(1, 2); + assertEquals(1, dist.getShape(), 0); try { - distribution.setShape(-1.0); - fail("Can not have negative alpha."); - } catch (IllegalArgumentException ex) { - // success + dist = new WeibullDistributionImpl(0, 2); + fail("NotStrictlyPositiveException expected"); + } catch (NotStrictlyPositiveException e) { + // Expected. } } - public void testSetBeta() { - WeibullDistribution distribution = (WeibullDistribution) getDistribution(); - try { - distribution.setScale(0.0); - fail("Can not have 0.0 beta."); - } catch (IllegalArgumentException ex) { - // success - } - + public void testBeta() { + WeibullDistribution dist = new WeibullDistributionImpl(1, 2); + assertEquals(2, dist.getScale(), 0); try { - distribution.setScale(-1.0); - fail("Can not have negative beta."); - } catch (IllegalArgumentException ex) { - // success + dist = new WeibullDistributionImpl(1, 0); + fail("NotStrictlyPositiveException expected"); + } catch (NotStrictlyPositiveException e) { + // Expected. } } }
