You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ce...@apache.org on 2011/11/26 15:58:08 UTC

svn commit: r1206451 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math/distribution/ main/java/org/apache/commons/math/random/ test/java/org/apache/commons/math/distribution/ test/java/org/apache/commons/math/random/

Author: celestin
Date: Sat Nov 26 14:58:07 2011
New Revision: 1206451

URL: http://svn.apache.org/viewvc?rev=1206451&view=rev
Log:
Merged ZipfDistribution and ZipfDistributionImpl (MATH-711).

Added:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistribution.java
      - copied, changed from r1206052, commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistributionImpl.java
Removed:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistributionImpl.java
Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/ZipfDistributionTest.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/random/RandomDataTest.java

Copied: commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistribution.java (from r1206052, commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistributionImpl.java)
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistribution.java?p2=commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistribution.java&p1=commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistributionImpl.java&r1=1206052&r2=1206451&rev=1206451&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistributionImpl.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/distribution/ZipfDistribution.java Sat Nov 26 14:58:07 2011
@@ -24,12 +24,13 @@ import org.apache.commons.math.exception
 import org.apache.commons.math.util.FastMath;
 
 /**
- * Implementation for the {@link ZipfDistribution}.
+ * Implementation of the Zipf distribution.
  *
+ * @see <a href="http://mathworld.wolfram.com/ZipfDistribution.html">Zipf distribution (MathWorld)</a>
  * @version $Id$
  */
-public class ZipfDistributionImpl extends AbstractIntegerDistribution
-    implements ZipfDistribution, Serializable {
+public class ZipfDistribution extends AbstractIntegerDistribution
+    implements Serializable {
     /** Serializable version identifier. */
     private static final long serialVersionUID = -140627372283420404L;
     /** Number of elements. */
@@ -46,8 +47,8 @@ public class ZipfDistributionImpl extend
      * @exception NotStrictlyPositiveException if {@code numberOfElements <= 0}
      * or {@code exponent <= 0}.
      */
-    public ZipfDistributionImpl(final int numberOfElements,
-                                final double exponent) {
+    public ZipfDistribution(final int numberOfElements, final double exponent)
+        throws NotStrictlyPositiveException {
         if (numberOfElements <= 0) {
             throw new NotStrictlyPositiveException(LocalizedFormats.DIMENSION,
                                                    numberOfElements);
@@ -62,25 +63,24 @@ public class ZipfDistributionImpl extend
     }
 
     /**
-     * {@inheritDoc}
+     * Get the number of elements (e.g. corpus size) for the distribution.
+     *
+     * @return the number of elements
      */
     public int getNumberOfElements() {
         return numberOfElements;
     }
 
     /**
-     * {@inheritDoc}
+     * Get the exponent characterizing the distribution.
+     *
+     * @return the exponent
      */
     public double getExponent() {
         return exponent;
     }
 
-    /**
-     * The probability mass function {@code P(X = x)} for a Zipf distribution.
-     *
-     * @param x Value at which the probability density function is evaluated.
-     * @return the value of the probability mass function at {@code x}.
-     */
+    /** {@inheritDoc} */
     public double probability(final int x) {
         if (x <= 0 || x > numberOfElements) {
             return 0.0;
@@ -89,13 +89,7 @@ public class ZipfDistributionImpl extend
         return (1.0 / FastMath.pow(x, exponent)) / generalizedHarmonic(numberOfElements, exponent);
     }
 
-    /**
-     * The probability distribution function {@code P(X <= x)} for a
-     * Zipf distribution.
-     *
-     * @param x Value at which the PDF is evaluated.
-     * @return Zipf distribution function evaluated at {@code x}.
-     */
+    /** {@inheritDoc} */
     @Override
     public double cumulativeProbability(final int x) {
         if (x <= 0) {
@@ -107,25 +101,13 @@ public class ZipfDistributionImpl extend
         return generalizedHarmonic(x, exponent) / generalizedHarmonic(numberOfElements, exponent);
     }
 
-    /**
-     * Access the domain value lower bound, based on {@code p}, used to
-     * bracket a PDF root.
-     *
-     * @param p Desired probability for the critical value.
-     * @return the domain value lower bound, i.e. {@code P(X < 'lower bound') < p}.
-     */
+    /** {@inheritDoc} */
     @Override
     protected int getDomainLowerBound(final double p) {
         return 0;
     }
 
-    /**
-     * Access the domain value upper bound, based on {@code p}, used to
-     * bracket a PDF root.
-     *
-     * @param p Desired probability for the critical value
-     * @return the domain value upper bound, i.e. {@code P(X < 'upper bound') > p}.
-     */
+    /** {@inheritDoc} */
     @Override
     protected int getDomainUpperBound(final double p) {
         return numberOfElements;
@@ -163,7 +145,7 @@ public class ZipfDistributionImpl extend
     /**
      * {@inheritDoc}
      *
-     * The upper bound of the support is the number of elements
+     * The upper bound of the support is the number of elements.
      *
      * @return upper bound of the support
      */
@@ -175,14 +157,12 @@ public class ZipfDistributionImpl extend
     /**
      * {@inheritDoc}
      *
-     * For number of elements N and exponent s, the mean is
-     * <code>Hs1 / Hs</code> where
+     * For number of elements {@code N} and exponent {@code s}, the mean is
+     * {@code Hs1 / Hs}, where
      * <ul>
-     *  <li><code>Hs1 = generalizedHarmonic(N, s - 1)</code></li>
-     *  <li><code>Hs = generalizedHarmonic(N, s)</code></li>
+     *  <li>{@code Hs1 = generalizedHarmonic(N, s - 1)},</li>
+     *  <li>{@code Hs = generalizedHarmonic(N, s)}.</li>
      * </ul>
-     *
-     * @return {@inheritDoc}
      */
     @Override
     protected double calculateNumericalMean() {
@@ -198,15 +178,13 @@ public class ZipfDistributionImpl extend
     /**
      * {@inheritDoc}
      *
-     * For number of elements N and exponent s, the mean is
-     * <code>(Hs2 / Hs) - (Hs1^2 / Hs^2)</code> where
+     * For number of elements {@code N} and exponent {@code s}, the mean is
+     * {@code (Hs2 / Hs) - (Hs1^2 / Hs^2)}, where
      * <ul>
-     *  <li><code>Hs2 = generalizedHarmonic(N, s - 2)</code></li>
-     *  <li><code>Hs1 = generalizedHarmonic(N, s - 1)</code></li>
-     *  <li><code>Hs = generalizedHarmonic(N, s)</code></li>
+     *  <li>{@code Hs2 = generalizedHarmonic(N, s - 2)},</li>
+     *  <li>{@code Hs1 = generalizedHarmonic(N, s - 1)},</li>
+     *  <li>{@code Hs = generalizedHarmonic(N, s)}.</li>
      * </ul>
-     *
-     * @return {@inheritDoc}
      */
     @Override
     protected double calculateNumericalVariance() {

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java?rev=1206451&r1=1206450&r2=1206451&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/random/RandomDataImpl.java Sat Nov 26 14:58:07 2011
@@ -35,7 +35,7 @@ import org.apache.commons.math.distribut
 import org.apache.commons.math.distribution.PascalDistribution;
 import org.apache.commons.math.distribution.TDistribution;
 import org.apache.commons.math.distribution.WeibullDistribution;
-import org.apache.commons.math.distribution.ZipfDistributionImpl;
+import org.apache.commons.math.distribution.ZipfDistribution;
 import org.apache.commons.math.exception.MathInternalError;
 import org.apache.commons.math.exception.NotStrictlyPositiveException;
 import org.apache.commons.math.exception.NumberIsTooLargeException;
@@ -811,7 +811,7 @@ public class RandomDataImpl implements R
     }
 
     /**
-     * Generates a random value from the {@link ZipfDistributionImpl Zipf Distribution}.
+     * Generates a random value from the {@link ZipfDistribution Zipf Distribution}.
      * This implementation uses {@link #nextInversionDeviate(IntegerDistribution) inversion}
      * to generate random values.
      *
@@ -821,7 +821,7 @@ public class RandomDataImpl implements R
      * @since 2.2
      */
     public int nextZipf(int numberOfElements, double exponent) {
-        return nextInversionDeviate(new ZipfDistributionImpl(numberOfElements, exponent));
+        return nextInversionDeviate(new ZipfDistribution(numberOfElements, exponent));
     }
 
     /**

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/ZipfDistributionTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/ZipfDistributionTest.java?rev=1206451&r1=1206450&r2=1206451&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/ZipfDistributionTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/ZipfDistributionTest.java Sat Nov 26 14:58:07 2011
@@ -34,12 +34,12 @@ public class ZipfDistributionTest extend
 
     @Test(expected=NotStrictlyPositiveException.class)
     public void testPreconditions1() {
-        new ZipfDistributionImpl(0, 1);
+        new ZipfDistribution(0, 1);
     }
 
     @Test(expected=NotStrictlyPositiveException.class)
     public void testPreconditions2() {
-        new ZipfDistributionImpl(1, 0);
+        new ZipfDistribution(1, 0);
     }
 
     //-------------- Implementations for abstract methods -----------------------
@@ -47,7 +47,7 @@ public class ZipfDistributionTest extend
     /** Creates the default discrete distribution instance to use in tests. */
     @Override
     public IntegerDistribution makeDistribution() {
-        return new ZipfDistributionImpl(10, 1);
+        return new ZipfDistribution(10, 1);
     }
 
     /** Creates the default probability density test input values */
@@ -93,9 +93,9 @@ public class ZipfDistributionTest extend
     public void testMoments() {
         final double tol = 1e-9;
         ZipfDistribution dist;
-        
-        dist = new ZipfDistributionImpl(2, 0.5);
+
+        dist = new ZipfDistribution(2, 0.5);
         Assert.assertEquals(dist.getNumericalMean(), FastMath.sqrt(2), tol);
-        Assert.assertEquals(dist.getNumericalVariance(), 0.24264068711928521, tol); 
+        Assert.assertEquals(dist.getNumericalVariance(), 0.24264068711928521, tol);
     }
 }

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/random/RandomDataTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/random/RandomDataTest.java?rev=1206451&r1=1206450&r2=1206451&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/random/RandomDataTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/random/RandomDataTest.java Sat Nov 26 14:58:07 2011
@@ -41,7 +41,7 @@ import org.apache.commons.math.distribut
 import org.apache.commons.math.distribution.PoissonDistribution;
 import org.apache.commons.math.distribution.TDistribution;
 import org.apache.commons.math.distribution.WeibullDistribution;
-import org.apache.commons.math.distribution.ZipfDistributionImpl;
+import org.apache.commons.math.distribution.ZipfDistribution;
 import org.apache.commons.math.distribution.ZipfDistributionTest;
 import org.apache.commons.math.stat.Frequency;
 import org.apache.commons.math.stat.descriptive.SummaryStatistics;
@@ -1040,7 +1040,7 @@ public class RandomDataTest {
         double[] densityValues = testInstance.makeDensityTestValues();
         int sampleSize = 1000;
         int length = TestUtils.eliminateZeroMassPoints(densityPoints, densityValues);
-        ZipfDistributionImpl distribution = (ZipfDistributionImpl) testInstance.makeDistribution();
+        ZipfDistribution distribution = (ZipfDistribution) testInstance.makeDistribution();
         double[] expectedCounts = new double[length];
         long[] observedCounts = new long[length];
         for (int i = 0; i < length; i++) {