commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From oe...@apache.org
Subject [4/8] [math] [MATH-1276] Improved performance of sampling and inverse cumulative probability calculation for geometric distributions.
Date Sun, 20 Sep 2015 19:06:47 GMT
[MATH-1276] Improved performance of sampling and inverse cumulative
probability calculation for geometric distributions.


Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/2fd6c8fa
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/2fd6c8fa
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/2fd6c8fa

Branch: refs/heads/master
Commit: 2fd6c8fa1e392f985ee860d8ee154a612ddde569
Parents: 4158323
Author: Otmar Ertl <otmar.ertl@gmail.com>
Authored: Sun Sep 20 20:33:41 2015 +0200
Committer: Otmar Ertl <otmar.ertl@gmail.com>
Committed: Sun Sep 20 20:33:41 2015 +0200

----------------------------------------------------------------------
 src/changes/changes.xml                            |  4 ++++
 .../math4/distribution/GeometricDistribution.java  | 17 +++++++++++++++++
 2 files changed, 21 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/2fd6c8fa/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b1284e1..90f3ee3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -54,6 +54,10 @@ If the output is not quite correct, check for invisible trailing spaces!
     </release>
 
     <release version="4.0" date="XXXX-XX-XX" description="">
+      <action dev="oertl" type="update" issue="MATH-1276"> <!-- backported to 3.6
-->
+        Improved performance of sampling and inverse cumulative probability calculation
+        for geometric distributions.
+      </action>
       <action dev="oertl" type="fix" issue="MATH-1277" due-to="Marc Rosen"> <!--
backported to 3.6 -->
         Fixed incorrect Kendall's tau coefficient calculation due to internal integer overflow.
       </action>

http://git-wip-us.apache.org/repos/asf/commons-math/blob/2fd6c8fa/src/main/java/org/apache/commons/math4/distribution/GeometricDistribution.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/distribution/GeometricDistribution.java
b/src/main/java/org/apache/commons/math4/distribution/GeometricDistribution.java
index 2723fd0..011c21f 100644
--- a/src/main/java/org/apache/commons/math4/distribution/GeometricDistribution.java
+++ b/src/main/java/org/apache/commons/math4/distribution/GeometricDistribution.java
@@ -172,4 +172,21 @@ public class GeometricDistribution extends AbstractIntegerDistribution
{
     public boolean isSupportConnected() {
         return true;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public int inverseCumulativeProbability(double p) throws OutOfRangeException {
+        if (p < 0 || p > 1) {
+            throw new OutOfRangeException(p, 0, 1);
+        }
+        if (p == 1) {
+            return Integer.MAX_VALUE;
+        }
+        if (p == 0) {
+            return 0;
+        }
+        return Math.max(0, (int) Math.ceil((FastMath.log1p(-p)/log1mProbabilityOfSuccess-1)));
+    }
 }


Mime
View raw message