diff --git a/src/java/org/apache/commons/math/stat/AbstractStoreUnivariate.java b/src/java/org/apache/commons/math/stat/AbstractStoreUnivariate.java index 2991c9a38..7e2776069 100644 --- a/src/java/org/apache/commons/math/stat/AbstractStoreUnivariate.java +++ b/src/java/org/apache/commons/math/stat/AbstractStoreUnivariate.java @@ -59,7 +59,7 @@ import org.apache.commons.math.stat.univariate.rank.Percentile; /** * Provides univariate measures for an array of doubles. - * @version $Revision: 1.9 $ $Date: 2003/07/09 21:45:23 $ + * @version $Revision: 1.10 $ $Date: 2003/07/15 03:45:10 $ */ public abstract class AbstractStoreUnivariate extends AbstractUnivariate @@ -88,7 +88,7 @@ public abstract class AbstractStoreUnivariate */ public double getPercentile(double p) { percentile.setPercentile(p); - return percentile.evaluate(this.getValues(), this.start(), this.size()); + return apply(percentile); } /** diff --git a/src/java/org/apache/commons/math/stat/AbstractUnivariate.java b/src/java/org/apache/commons/math/stat/AbstractUnivariate.java index 909cf25dc..014dbb4ab 100644 --- a/src/java/org/apache/commons/math/stat/AbstractUnivariate.java +++ b/src/java/org/apache/commons/math/stat/AbstractUnivariate.java @@ -53,6 +53,7 @@ */ package org.apache.commons.math.stat; +import org.apache.commons.math.stat.univariate.UnivariateStatistic; import org.apache.commons.math.stat.univariate.moment.FourthMoment; import org.apache.commons.math.stat.univariate.moment.GeometricMean; import org.apache.commons.math.stat.univariate.moment.Kurtosis; @@ -67,7 +68,7 @@ import org.apache.commons.math.stat.univariate.summary.SumOfSquares; /** * Provides univariate measures for an array of doubles. - * @version $Revision: 1.1 $ $Date: 2003/07/09 21:45:23 $ + * @version $Revision: 1.2 $ $Date: 2003/07/15 03:45:10 $ */ public abstract class AbstractUnivariate implements Univariate { @@ -139,23 +140,8 @@ public abstract class AbstractUnivariate implements Univariate { setWindowSize(window); } - /** - * Returns the internalValues array. - * @return the array - */ - protected abstract double[] internalValues(); - - /** - * Returns the start index of the array - * @return start index - */ - protected abstract int start(); - - /** - * Returns the size of the array appropriate for doing calculations. - * @return Usually this is just numElements. - */ - protected abstract int size(); + public abstract double apply(UnivariateStatistic stat); + /** * If windowSize is set to Infinite, @@ -178,36 +164,21 @@ public abstract class AbstractUnivariate implements Univariate { * @see org.apache.commons.math.stat.Univariate#getSum() */ public double getSum() { - double[] v = internalValues(); - if (v != null) { - return sum.evaluate(v, this.start(), this.size()); - } - - return sum.getResult(); + return apply(sum); } /** * @see org.apache.commons.math.stat.Univariate#getSumsq() */ public double getSumsq() { - double[] v = internalValues(); - if (v != null) { - return sumsq.evaluate(v, this.start(), this.size()); - } - - return sumsq.getResult(); + return apply(sumsq); } /** * @see org.apache.commons.math.stat.Univariate#getMean() */ public double getMean() { - double[] v = internalValues(); - if (v != null) { - return mean.evaluate(v, this.start(), this.size()); - } - - return mean.getResult(); + return apply(mean); } /** @@ -239,12 +210,7 @@ public abstract class AbstractUnivariate implements Univariate { * a <= 1 value set. */ public double getVariance() { - double[] v = internalValues(); - if (v != null) { - return variance.evaluate(v, this.start(), this.size()); - } - - return variance.getResult(); + return apply(variance); } /** @@ -256,12 +222,7 @@ public abstract class AbstractUnivariate implements Univariate { * <= 2 value set. */ public double getSkewness() { - double[] v = internalValues(); - if (v != null) { - return skewness.evaluate(v, this.start(), this.size()); - } - - return skewness.getResult(); + return apply(skewness); } /** @@ -274,12 +235,7 @@ public abstract class AbstractUnivariate implements Univariate { * value set. */ public double getKurtosis() { - double[] v = internalValues(); - if (v != null) { - return kurtosis.evaluate(v, this.start(), this.size()); - } - - return kurtosis.getResult(); + return apply(kurtosis); } /** @@ -301,38 +257,23 @@ public abstract class AbstractUnivariate implements Univariate { * @see org.apache.commons.math.stat.Univariate#getMax() */ public double getMax() { - double[] v = internalValues(); - if (v != null) { - return max.evaluate(v, this.start(), this.size()); - } - - return max.getResult(); + return apply(max); } /** * @see org.apache.commons.math.stat.Univariate#getMin() */ public double getMin() { - double[] v = internalValues(); - if (v != null) { - return min.evaluate(v, this.start(), this.size()); - } - - return min.getResult(); + return apply(min); } /** * @see org.apache.commons.math.stat.Univariate#getGeometricMean() */ public double getGeometricMean() { - double[] v = internalValues(); - if (v != null) { - return geoMean.evaluate(v, this.start(), this.size()); - } - - return geoMean.getResult(); + return apply(geoMean); } - + /** * Generates a text report displaying * univariate statistics from values that diff --git a/src/java/org/apache/commons/math/stat/ListUnivariateImpl.java b/src/java/org/apache/commons/math/stat/ListUnivariateImpl.java index d9f100e5f..631c30f74 100644 --- a/src/java/org/apache/commons/math/stat/ListUnivariateImpl.java +++ b/src/java/org/apache/commons/math/stat/ListUnivariateImpl.java @@ -54,11 +54,13 @@ package org.apache.commons.math.stat; import java.util.List; + +import org.apache.commons.math.stat.univariate.UnivariateStatistic; import org.apache.commons.math.util.DefaultTransformer; import org.apache.commons.math.util.NumberTransformer; /** - * @version $Revision: 1.3 $ $Date: 2003/07/09 21:45:23 $ + * @version $Revision: 1.4 $ $Date: 2003/07/15 03:45:10 $ */ public class ListUnivariateImpl extends AbstractStoreUnivariate @@ -182,27 +184,19 @@ public class ListUnivariateImpl super.clear(); list.clear(); } - - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#internalValues() + + /* (non-Javadoc) + * @see org.apache.commons.math.stat.AbstractUnivariate#apply(org.apache.commons.math.stat.univariate.UnivariateStatistic) */ - protected double[] internalValues() { - return getValues(); - } + public double apply(UnivariateStatistic stat) { + double[] v = this.getValues(); - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#start() - */ - protected int start() { - return 0; - } - - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#size() - */ - protected int size() { - return getN(); + if (v != null) { + return stat.evaluate(v, 0, v.length); + } + return Double.NaN; } + /** * @return */ diff --git a/src/java/org/apache/commons/math/stat/StoreUnivariateImpl.java b/src/java/org/apache/commons/math/stat/StoreUnivariateImpl.java index ae66d1eff..173a0c6b2 100644 --- a/src/java/org/apache/commons/math/stat/StoreUnivariateImpl.java +++ b/src/java/org/apache/commons/math/stat/StoreUnivariateImpl.java @@ -53,10 +53,11 @@ */ package org.apache.commons.math.stat; +import org.apache.commons.math.stat.univariate.UnivariateStatistic; import org.apache.commons.math.util.ContractableDoubleArray; /** - * @version $Revision: 1.4 $ $Date: 2003/07/09 21:45:23 $ + * @version $Revision: 1.5 $ $Date: 2003/07/15 03:45:10 $ */ public class StoreUnivariateImpl extends AbstractStoreUnivariate { @@ -143,24 +144,13 @@ public class StoreUnivariateImpl extends AbstractStoreUnivariate { } } - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#internalValues() + /* (non-Javadoc) + * @see org.apache.commons.math.stat.AbstractUnivariate#apply(org.apache.commons.math.stat.univariate.UnivariateStatistic) */ - protected double[] internalValues() { - return eDA.getValues(); - } - - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#start() - */ - protected int start() { - return eDA.start(); - } - - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#size() - */ - protected int size() { - return eDA.getNumElements(); + public double apply(UnivariateStatistic stat) { + if (eDA != null) { + return stat.evaluate(eDA.getValues(), eDA.start(), eDA.getNumElements()); + } + return Double.NaN; } } \ No newline at end of file diff --git a/src/java/org/apache/commons/math/stat/UnivariateImpl.java b/src/java/org/apache/commons/math/stat/UnivariateImpl.java index ff9643bc2..28e16595f 100644 --- a/src/java/org/apache/commons/math/stat/UnivariateImpl.java +++ b/src/java/org/apache/commons/math/stat/UnivariateImpl.java @@ -54,6 +54,9 @@ package org.apache.commons.math.stat; import java.io.Serializable; + +import org.apache.commons.math.stat.univariate.StorelessUnivariateStatistic; +import org.apache.commons.math.stat.univariate.UnivariateStatistic; import org.apache.commons.math.util.FixedDoubleArray; /** @@ -64,7 +67,7 @@ import org.apache.commons.math.util.FixedDoubleArray; * Integers, floats and longs can be added, but they will be converted * to doubles by addValue(). * - * @version $Revision: 1.18 $ $Date: 2003/07/09 21:45:23 $ + * @version $Revision: 1.19 $ $Date: 2003/07/15 03:45:10 $ */ public class UnivariateImpl extends AbstractUnivariate @@ -120,7 +123,7 @@ public class UnivariateImpl sumsq.increment(value); sumLog.increment(value); geoMean.increment(value); - + moment.increment(value); //mean.increment(value); //variance.increment(value); @@ -158,25 +161,18 @@ public class UnivariateImpl } } - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#internalValues() + /* (non-Javadoc) + * @see org.apache.commons.math.stat.AbstractUnivariate#apply(org.apache.commons.math.stat.univariate.UnivariateStatistic) */ - protected double[] internalValues() { - return storage == null ? null : storage.getValues(); - } + public double apply(UnivariateStatistic stat) { + + if (storage != null) { + return stat.evaluate(storage.getValues(), storage.start(), storage.getNumElements()); + } else if (stat instanceof StorelessUnivariateStatistic) { + return ((StorelessUnivariateStatistic) stat).getResult(); + } - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#start() - */ - protected int start() { - return storage.start(); - } - - /** - * @see org.apache.commons.math.stat.AbstractUnivariate#size() - */ - protected int size() { - return storage.getNumElements(); + return Double.NaN; } } \ No newline at end of file