You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by rk...@apache.org on 2014/12/16 02:56:59 UTC
hadoop git commit: MAPREDUCE-6196. Fix BigDecimal ArithmeticException
in PiEstimator (rchiang via rkanter)
Repository: hadoop
Updated Branches:
refs/heads/branch-1 a8eee1fd0 -> 0860d1a26
MAPREDUCE-6196. Fix BigDecimal ArithmeticException in PiEstimator (rchiang via rkanter)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0860d1a2
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0860d1a2
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0860d1a2
Branch: refs/heads/branch-1
Commit: 0860d1a26bc1ea4a4d89d2c8bc7e6797553f656a
Parents: a8eee1f
Author: Robert Kanter <rk...@apache.org>
Authored: Mon Dec 15 17:54:31 2014 -0800
Committer: Robert Kanter <rk...@apache.org>
Committed: Mon Dec 15 17:54:31 2014 -0800
----------------------------------------------------------------------
CHANGES.txt | 3 +++
.../org/apache/hadoop/examples/PiEstimator.java | 14 ++++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/0860d1a2/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 59bef6c..10644bf 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -259,6 +259,9 @@ Release 1.3.0 - unreleased
HDFS-7503. Namenode restart after large deletions can cause slow
processReport (Arpit Agarwal)
+ MAPREDUCE-6196. Fix BigDecimal ArithmeticException in PiEstimator
+ (rchiang via rkanter)
+
Release 1.2.2 - unreleased
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/0860d1a2/src/examples/org/apache/hadoop/examples/PiEstimator.java
----------------------------------------------------------------------
diff --git a/src/examples/org/apache/hadoop/examples/PiEstimator.java b/src/examples/org/apache/hadoop/examples/PiEstimator.java
index 7c3dd3e..c0a8c78 100644
--- a/src/examples/org/apache/hadoop/examples/PiEstimator.java
+++ b/src/examples/org/apache/hadoop/examples/PiEstimator.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.examples;
import java.io.IOException;
import java.math.BigDecimal;
+import java.math.MathContext;
import java.util.Iterator;
import org.apache.hadoop.conf.Configured;
@@ -67,6 +68,9 @@ public class PiEstimator extends Configured implements Tool {
/** tmp directory for input/output */
static private final Path TMP_DIR = new Path(
PiEstimator.class.getSimpleName() + "_TMP_3_141592654");
+
+ /* Default value for maximum precision during estimation */
+ public static int DEFAULT_PRECISION = 20;
/** 2-dimensional Halton sequence {H(i)},
* where H(i) is a 2-dimensional point and i >= 1 is the index.
@@ -310,10 +314,12 @@ public class PiEstimator extends Configured implements Tool {
}
//compute estimated value
- return BigDecimal.valueOf(4).setScale(20)
- .multiply(BigDecimal.valueOf(numInside.get()))
- .divide(BigDecimal.valueOf(numMaps))
- .divide(BigDecimal.valueOf(numPoints));
+ int precision = PiEstimator.DEFAULT_PRECISION;
+ MathContext mc = new MathContext(precision);
+ return BigDecimal.valueOf(4).setScale(precision)
+ .multiply(BigDecimal.valueOf(numInside.get()),mc)
+ .divide(BigDecimal.valueOf(numMaps),mc)
+ .divide(BigDecimal.valueOf(numPoints),mc);
} finally {
fs.delete(TMP_DIR, true);
}