You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2022/06/23 00:01:47 UTC
[datasketches-characterization] 01/01: Make consisent with java 3.3-SNAPSHOT
This is an automated email from the ASF dual-hosted git repository.
leerho pushed a commit to branch matchJava3.3Plus
in repository https://gitbox.apache.org/repos/asf/datasketches-characterization.git
commit b78b453fa3e9e2e8623ccdd441925eb8bf90a39e
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Wed Jun 22 17:01:40 2022 -0700
Make consisent with java 3.3-SNAPSHOT
---
.../org/apache/datasketches/MonotonicPoints.java | 4 +-
.../org/apache/datasketches/PowerLawGenerator.java | 12 +-
.../characterization/AccuracyStats.java | 35 +++-
.../characterization/BoundsAccuracyStats.java | 4 +-
.../datasketches/characterization/ProfileUtil.java | 18 +-
.../characterization/fdt/FdtAccuracyProfile.java | 6 +-
.../frequencies/BaseFrequenciesSpeedProfile.java | 4 +-
.../hash/BaseHashSpeedProfile.java | 4 +-
.../hll/HllConfidenceIntervalInverseProfile.java | 4 +-
...llDoublesSketchRankGaussianAccuracyProfile.java | 4 +-
...KllFloatsSketchRankGaussianAccuracyProfile.java | 4 +-
.../kll/KllSketchSizeSpeedProfile.java | 4 +-
.../characterization/memory/BaseSpeedProfile.java | 4 +-
.../memory/BaseUtf8SpeedProfile.java | 4 +-
.../quantiles/BaseQuantilesAccuracyProfile.java | 4 +-
.../quantiles/BaseQuantilesSpeedProfile.java | 4 +-
.../tdigest/QuantilesAccuracyProfile.java | 4 +-
.../quantiles/tdigest/QuantilesSpeedProfile.java | 4 +-
.../req/ReqSketchAccuracyProfile.java | 4 +-
.../req/ReqSketchSizeSpeedProfile.java | 4 +-
.../ThetaAccuracyIntersectionVsIEProfile.java | 181 +++++++++++++++++++++
.../uniquecount/BaseAccuracyProfile.java | 40 ++---
.../uniquecount/BaseBoundsAccuracyProfile.java | 4 +-
.../uniquecount/BaseSerDeProfile.java | 4 +-
.../uniquecount/BaseUpdateSpeedProfile.java | 4 +-
.../theta/ThetaAccuracyIntersectionVsIEJob.conf | 42 +++++
.../apache/datasketches/PowerLawGeneratorTest.java | 10 +-
27 files changed, 333 insertions(+), 87 deletions(-)
diff --git a/src/main/java/org/apache/datasketches/MonotonicPoints.java b/src/main/java/org/apache/datasketches/MonotonicPoints.java
index 488e1d0..a7c6a24 100644
--- a/src/main/java/org/apache/datasketches/MonotonicPoints.java
+++ b/src/main/java/org/apache/datasketches/MonotonicPoints.java
@@ -23,7 +23,7 @@ import static java.lang.Math.abs;
import static java.lang.Math.exp;
import static java.lang.Math.log;
import static java.lang.Math.min;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import java.util.Random;
@@ -150,7 +150,7 @@ public class MonotonicPoints {
final int end = 1 << lgEnd;
int count = 0;
while (p <= end) {
- p = pwr2LawNext(ppo, p);
+ p = pwr2SeriesNext(ppo, p);
count++;
}
return count;
diff --git a/src/main/java/org/apache/datasketches/PowerLawGenerator.java b/src/main/java/org/apache/datasketches/PowerLawGenerator.java
index d67a876..92c96c6 100644
--- a/src/main/java/org/apache/datasketches/PowerLawGenerator.java
+++ b/src/main/java/org/apache/datasketches/PowerLawGenerator.java
@@ -20,7 +20,11 @@
package org.apache.datasketches;
import static java.lang.Math.abs;
+import static java.lang.Math.ceil;
+import static java.lang.Math.exp;
+import static java.lang.Math.floor;
import static java.lang.Math.log;
+import static java.lang.Math.pow;
/**
* A simple tool to generate (x,y) pairs of points that follow a power-law
@@ -201,7 +205,7 @@ public class PowerLawGenerator {
final int ptsPerLogBase) {
final boolean increasing = end > start;
final double genIdx = getGenIndex(start, logBase, ptsPerLogBase);
- return (int) ((increasing) ? Math.floor(genIdx) : Math.ceil(genIdx));
+ return (int) ((increasing) ? floor(genIdx) : ceil(genIdx));
}
/**
@@ -220,7 +224,7 @@ public class PowerLawGenerator {
final int ptsPerLogBase) {
final boolean increasing = end > start;
final double genIdx = getGenIndex(end, logBase, ptsPerLogBase);
- return (int) ((!increasing) ? Math.floor(genIdx) : Math.ceil(genIdx));
+ return (int) ((!increasing) ? floor(genIdx) : ceil(genIdx));
}
/**
@@ -249,7 +253,7 @@ public class PowerLawGenerator {
* @return the x-coordinate based on the generating index
*/
public static double getX(final int genIndex, final double logBase, final int ptsPerLogBase) {
- return Math.pow(logBase, ((double) genIndex) / ptsPerLogBase);
+ return pow(logBase, ((double) genIndex) / ptsPerLogBase);
}
/**
@@ -261,7 +265,7 @@ public class PowerLawGenerator {
* @return the y-coordinate
*/
public static double getY(final DoublePair start, final double slope, final double x) {
- return start.y * Math.exp(slope * log(x / start.x));
+ return start.y * exp(slope * log(x / start.x));
}
}
diff --git a/src/main/java/org/apache/datasketches/characterization/AccuracyStats.java b/src/main/java/org/apache/datasketches/characterization/AccuracyStats.java
index fd5e2a2..b714fe9 100644
--- a/src/main/java/org/apache/datasketches/characterization/AccuracyStats.java
+++ b/src/main/java/org/apache/datasketches/characterization/AccuracyStats.java
@@ -19,7 +19,10 @@
package org.apache.datasketches.characterization;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static java.lang.Math.pow;
+import static java.lang.Math.round;
+import static org.apache.datasketches.Util.powerSeriesNextDouble;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.MonotonicPoints;
import org.apache.datasketches.quantiles.DoublesSketchBuilder;
@@ -35,7 +38,7 @@ public class AccuracyStats {
public double sumEst = 0;
public double sumRelErr = 0;
public double sumSqErr = 0;
- public double rmsre = 0; //used later for plotting
+ public double rmsre = 0; //used later for plotting, set externally
public double trueValue; //set by constructor
public int bytes = 0;
@@ -43,7 +46,7 @@ public class AccuracyStats {
* @param k the configuration value for the quantiles sketch. It must be a power of two.
* @param trueValue the true value
*/
- public AccuracyStats(final int k, final int trueValue) {
+ public AccuracyStats(final int k, final long trueValue) {
qsk = new DoublesSketchBuilder().setK(k).build(); //Quantiles
this.trueValue = trueValue;
}
@@ -51,7 +54,7 @@ public class AccuracyStats {
/**
* Update
*
- * @param est the value of the estimate for a single trial
+ * @param est the value of the estimate for a single measurement
*/
public void update(final double est) {
qsk.update(est);
@@ -69,14 +72,34 @@ public class AccuracyStats {
* @param lgQK the lgK for the Quantiles sketch
* @return an AccuracyStats array
*/
- public static final AccuracyStats[] buildAccuracyStatsArray(
+ public static final AccuracyStats[] buildLog2AccuracyStatsArray(
final int lgMin, final int lgMax, final int ppo, final int lgQK) {
final int qLen = MonotonicPoints.countPoints(lgMin, lgMax, ppo);
final AccuracyStats[] qArr = new AccuracyStats[qLen];
int p = 1 << lgMin;
for (int i = 0; i < qLen; i++) {
qArr[i] = new AccuracyStats(1 << lgQK, p);
- p = pwr2LawNext(ppo, p);
+ p = pwr2SeriesNext(ppo, p);
+ }
+ return qArr;
+ }
+
+ /**
+ * Build the AccuracyStats Array
+ * @param log10Min log_base2 of the minimum number of uniques used
+ * @param log10Max log_base2 of the maximum number of uniques used
+ * @param ppb the number of points per base (10)
+ * @param lgQK the lgK for the Quantiles sketch
+ * @return an AccuracyStats array
+ */
+ public static final AccuracyStats[] buildLog10AccuracyStatsArray(
+ final int log10Min, final int log10Max, final int ppb, final int lgQK) {
+ final int qLen = MonotonicPoints.countPoints(log10Min, log10Max, ppb);
+ final AccuracyStats[] qArr = new AccuracyStats[qLen];
+ long p = round(pow(10, log10Min));
+ for (int i = 0; i < qLen; i++) {
+ qArr[i] = new AccuracyStats(1 << lgQK, p);
+ p = (int) powerSeriesNextDouble(ppb, p, true, 10.0);
}
return qArr;
}
diff --git a/src/main/java/org/apache/datasketches/characterization/BoundsAccuracyStats.java b/src/main/java/org/apache/datasketches/characterization/BoundsAccuracyStats.java
index 4e12229..4451fea 100644
--- a/src/main/java/org/apache/datasketches/characterization/BoundsAccuracyStats.java
+++ b/src/main/java/org/apache/datasketches/characterization/BoundsAccuracyStats.java
@@ -19,7 +19,7 @@
package org.apache.datasketches.characterization;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.MonotonicPoints;
import org.apache.datasketches.quantiles.DoublesSketchBuilder;
@@ -87,7 +87,7 @@ public class BoundsAccuracyStats {
int p = 1 << lgMin;
for (int i = 0; i < qLen; i++) {
qArr[i] = new BoundsAccuracyStats(1 << lgQK, p);
- p = pwr2LawNext(ppo, p);
+ p = pwr2SeriesNext(ppo, p);
}
return qArr;
}
diff --git a/src/main/java/org/apache/datasketches/characterization/ProfileUtil.java b/src/main/java/org/apache/datasketches/characterization/ProfileUtil.java
index c99fe25..e42abe6 100644
--- a/src/main/java/org/apache/datasketches/characterization/ProfileUtil.java
+++ b/src/main/java/org/apache/datasketches/characterization/ProfileUtil.java
@@ -21,9 +21,9 @@ package org.apache.datasketches.characterization;
import static java.lang.Math.ceil;
import static java.lang.Math.max;
-import static org.apache.datasketches.Util.ceilingPowerOfBdouble;
-import static org.apache.datasketches.Util.logB;
-import static org.apache.datasketches.Util.pwrLawNextDouble;
+import static org.apache.datasketches.Util.ceilingPowerBaseOfDouble;
+import static org.apache.datasketches.Util.logBaseOfX;
+import static org.apache.datasketches.Util.powerSeriesNextDouble;
/**
* @author Lee Rhodes
@@ -42,10 +42,10 @@ public class ProfileUtil {
*/
public static double[] buildSplitPointsArr(final double min, final double max,
final int pplb, final double logBase, final double eps) {
- final double ceilPwrBmin = ceilingPowerOfBdouble(logBase, min);
- final double ceilPwrBmax = ceilingPowerOfBdouble(logBase, max);
- final int bot = (int) ceil(logB(logBase, max(1.0, ceilPwrBmin)));
- final int top = (int) ceil(logB(logBase, ceilPwrBmax));
+ final double ceilPwrBmin = ceilingPowerBaseOfDouble(logBase, min);
+ final double ceilPwrBmax = ceilingPowerBaseOfDouble(logBase, max);
+ final int bot = (int) ceil(logBaseOfX(logBase, max(1.0, ceilPwrBmin)));
+ final int top = (int) ceil(logBaseOfX(logBase, ceilPwrBmax));
final int numSP;
double next;
final double[] spArr;
@@ -56,7 +56,7 @@ public class ProfileUtil {
spArr[1] = 1;
next = 1.0;
for (int i = 2; i < numSP; i++) {
- next = pwrLawNextDouble(pplb, next, false, logBase);
+ next = powerSeriesNextDouble(pplb, next, false, logBase);
spArr[i] = next;
}
} else {
@@ -65,7 +65,7 @@ public class ProfileUtil {
spArr[0] = ceilPwrBmin;
next = ceilPwrBmin;
for (int i = 1; i < numSP; i++) {
- next = pwrLawNextDouble(pplb, next, false, logBase);
+ next = powerSeriesNextDouble(pplb, next, false, logBase);
spArr[i] = next;
}
}
diff --git a/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java
index 36eabbc..2531505 100644
--- a/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/fdt/FdtAccuracyProfile.java
@@ -22,7 +22,7 @@ package org.apache.datasketches.characterization.fdt;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_4SD;
import static org.apache.datasketches.PowerLawGenerator.getSlope;
import static org.apache.datasketches.PowerLawGenerator.getY;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -129,7 +129,7 @@ public class FdtAccuracyProfile implements JobProfile {
slope = getSlope(p1, p2);
xPoints = 0;
int xG;
- for (xG = minG; xG <= maxG; xG = pwr2LawNext(gPPO, xG)) {
+ for (xG = minG; xG <= maxG; xG = pwr2SeriesNext(gPPO, xG)) {
xPoints++;
}
}
@@ -139,7 +139,7 @@ public class FdtAccuracyProfile implements JobProfile {
groupsGenerated = 0;
sketchUpdates = 0;
int xG, yU;
- for (xG = minG; xG <= maxG; xG = pwr2LawNext(gPPO, xG)) { //select major group
+ for (xG = minG; xG <= maxG; xG = pwr2SeriesNext(gPPO, xG)) { //select major group
groupsGenerated += xG;
yU = (int) Math.round(getY(p1, slope, xG)); //compute target # uniques
for (int g = 1; g <= xG; g++) { //select the minor group
diff --git a/src/main/java/org/apache/datasketches/characterization/frequencies/BaseFrequenciesSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/frequencies/BaseFrequenciesSpeedProfile.java
index 83afefc..bda641b 100644
--- a/src/main/java/org/apache/datasketches/characterization/frequencies/BaseFrequenciesSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/frequencies/BaseFrequenciesSpeedProfile.java
@@ -19,7 +19,7 @@
package org.apache.datasketches.characterization.frequencies;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -65,7 +65,7 @@ public abstract class BaseFrequenciesSpeedProfile implements JobProfile {
doTrial();
}
job.println(getStats(streamLength, numTrials));
- streamLength = pwr2LawNext(pointsPerOctave, streamLength);
+ streamLength = pwr2SeriesNext(pointsPerOctave, streamLength);
}
}
diff --git a/src/main/java/org/apache/datasketches/characterization/hash/BaseHashSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/hash/BaseHashSpeedProfile.java
index 86a2fa2..d0a35bf 100644
--- a/src/main/java/org/apache/datasketches/characterization/hash/BaseHashSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/hash/BaseHashSpeedProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.hash;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -98,7 +98,7 @@ public abstract class BaseHashSpeedProfile implements JobProfile {
final int minX = 1 << lgMinX;
int lastX = 0;
while (lastX < maxX) {
- final int nextX = lastX == 0 ? minX : pwr2LawNext(xPPO, lastX);
+ final int nextX = lastX == 0 ? minX : pwr2SeriesNext(xPPO, lastX);
lastX = nextX;
final int trials = getNumTrials(nextX);
p.reset(nextX, trials);
diff --git a/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java b/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java
index 6f9945a..51991ba 100644
--- a/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/hll/HllConfidenceIntervalInverseProfile.java
@@ -23,7 +23,7 @@ import static java.lang.Math.max;
import static java.lang.Math.min;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
import static org.apache.datasketches.Util.milliSecToString;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import java.io.PrintWriter;
import java.util.Arrays;
@@ -161,7 +161,7 @@ public class HllConfidenceIntervalInverseProfile implements JobProfile {
//This will generate a table of data for each intermediate Trials point
int lastT = 0;
while (lastT < maxT) {
- final int nextT = lastT == 0 ? minT : pwr2LawNext(tPPO, lastT);
+ final int nextT = lastT == 0 ? minT : pwr2SeriesNext(tPPO, lastT);
final int delta = nextT - lastT;
for (int i = 0; i < delta; i++) {
doTrial();
diff --git a/src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java
index d76e929..d6db0e7 100644
--- a/src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllDoublesSketchRankGaussianAccuracyProfile.java
@@ -22,7 +22,7 @@ package org.apache.datasketches.characterization.kll;
import static java.lang.Math.round;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
import static org.apache.datasketches.Util.evenlySpaced;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -155,7 +155,7 @@ public class KllDoublesSketchRankGaussianAccuracyProfile implements JobProfile {
doStreamLength(streamLength);
//go to next stream length
if (useppo) {
- streamLength = pwr2LawNext(ppo, streamLength);
+ streamLength = pwr2SeriesNext(ppo, streamLength);
} else {
lgCurSL += lgDelta;
streamLength = 1 << lgCurSL;
diff --git a/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java
index 3b3ecd8..f553db7 100644
--- a/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllFloatsSketchRankGaussianAccuracyProfile.java
@@ -22,7 +22,7 @@ package org.apache.datasketches.characterization.kll;
import static java.lang.Math.round;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
import static org.apache.datasketches.Util.evenlySpacedFloats;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -161,7 +161,7 @@ public class KllFloatsSketchRankGaussianAccuracyProfile implements JobProfile {
doStreamLength(streamLength);
//go to next stream length
if (useppo) {
- streamLength = pwr2LawNext(ppo, streamLength);
+ streamLength = pwr2SeriesNext(ppo, streamLength);
} else {
lgCurSL += lgDelta;
streamLength = 1 << lgCurSL;
diff --git a/src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java
index 129bfc5..2ea9095 100644
--- a/src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/kll/KllSketchSizeSpeedProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.kll;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -135,7 +135,7 @@ public class KllSketchSizeSpeedProfile implements JobProfile {
job.printf(sFmt, (Object[]) columnLabels); //Header
int pp = 1;
while (lastSL < maxSL) { //Trials for each plotPoint on X-axis, and one row on output
- final int nextSL = lastSL == 0 ? minSL : pwr2LawNext(ppoSL, lastSL);
+ final int nextSL = lastSL == 0 ? minSL : pwr2SeriesNext(ppoSL, lastSL);
lastSL = nextSL;
final int trials = getNumTrials(nextSL);
diff --git a/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java
index 3e3df81..0b05ebe 100644
--- a/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/memory/BaseSpeedProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.memory;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -117,7 +117,7 @@ static class Point {
final int minX = 1 << lgMinX;
int lastX = 0;
while (lastX < maxX) {
- final int nextX = lastX == 0 ? minX : pwr2LawNext(xPPO, lastX);
+ final int nextX = lastX == 0 ? minX : pwr2SeriesNext(xPPO, lastX);
lastX = nextX;
final int trials = getNumTrials(nextX);
configure(nextX);
diff --git a/src/main/java/org/apache/datasketches/characterization/memory/BaseUtf8SpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/memory/BaseUtf8SpeedProfile.java
index 6d95eae..919afb9 100644
--- a/src/main/java/org/apache/datasketches/characterization/memory/BaseUtf8SpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/memory/BaseUtf8SpeedProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.memory;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
//import static org.testng.Assert.fail;
import java.util.ArrayList;
@@ -154,7 +154,7 @@ public abstract class BaseUtf8SpeedProfile implements JobProfile {
final int minX = 1 << lgMinX;
int lastX = 0;
while (lastX < maxX) { //do each plot point on the X-axis
- final int nextX = lastX == 0 ? minX : pwr2LawNext(xPPO, lastX);
+ final int nextX = lastX == 0 ? minX : pwr2SeriesNext(xPPO, lastX);
lastX = nextX;
final int trials = getNumTrials(nextX);
//configure();
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java
index cf62ac0..9cb7d7d 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesAccuracyProfile.java
@@ -26,7 +26,7 @@ import static org.apache.datasketches.GaussianRanks.MED;
import static org.apache.datasketches.GaussianRanks.P1SD;
import static org.apache.datasketches.GaussianRanks.P2SD;
import static org.apache.datasketches.GaussianRanks.P3SD;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -107,7 +107,7 @@ public abstract class BaseQuantilesAccuracyProfile implements JobProfile {
job.println(streamLength + "\t"
+ String.format("%.16f\t%.16f\t%.16f\t%.16f\t%.16f\t%.16f\t%.16f",
qArr[0], qArr[1], qArr[2], qArr[3], qArr[4], qArr[5], qArr[6]));
- streamLength = pwr2LawNext(ppo, streamLength);
+ streamLength = pwr2SeriesNext(ppo, streamLength);
}
job.println("");
}
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java
index 52629ab..7762e2d 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/BaseQuantilesSpeedProfile.java
@@ -19,7 +19,7 @@
package org.apache.datasketches.characterization.quantiles;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -69,7 +69,7 @@ public abstract class BaseQuantilesSpeedProfile implements JobProfile {
doTrial();
}
job.println(getStats(streamLength, numTrials, numQueryValues));
- streamLength = pwr2LawNext(pointsPerOctave, streamLength);
+ streamLength = pwr2SeriesNext(pointsPerOctave, streamLength);
}
}
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesAccuracyProfile.java
index fb8a60d..248b1f4 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesAccuracyProfile.java
@@ -19,7 +19,7 @@
package org.apache.datasketches.characterization.quantiles.tdigest;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -66,7 +66,7 @@ public abstract class QuantilesAccuracyProfile implements JobProfile {
}
job.println(streamLength + "\t"
+ String.format("%.2f", rankErrorSketch.getQuantile((double) errorPct / 100) * 100));
- streamLength = pwr2LawNext(ppo, streamLength);
+ streamLength = pwr2SeriesNext(ppo, streamLength);
}
}
diff --git a/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesSpeedProfile.java
index b58a03f..caba3bd 100644
--- a/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/quantiles/tdigest/QuantilesSpeedProfile.java
@@ -19,7 +19,7 @@
package org.apache.datasketches.characterization.quantiles.tdigest;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -61,7 +61,7 @@ public abstract class QuantilesSpeedProfile implements JobProfile {
doTrial();
}
job.println(getStats(streamLength, numTrials, numQueryValues));
- streamLength = pwr2LawNext(pointsPerOctave, streamLength);
+ streamLength = pwr2SeriesNext(pointsPerOctave, streamLength);
}
}
diff --git a/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java
index df45e40..1682f9d 100644
--- a/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchAccuracyProfile.java
@@ -23,7 +23,7 @@ import static java.lang.Math.round;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
import static org.apache.datasketches.SpacedPoints.expSpaced;
import static org.apache.datasketches.Util.evenlySpaced;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -222,7 +222,7 @@ public class ReqSketchAccuracyProfile implements JobProfile {
//go to next stream length
if (useppo) {
- streamLength = pwr2LawNext(ppo, streamLength);
+ streamLength = pwr2SeriesNext(ppo, streamLength);
} else {
lgCurSL += lgDelta;
streamLength = 1 << lgCurSL;
diff --git a/src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java
index ac3d1c4..4e52c36 100644
--- a/src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/req/ReqSketchSizeSpeedProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.req;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -128,7 +128,7 @@ public class ReqSketchSizeSpeedProfile implements JobProfile {
job.printf(sFmt, (Object[]) columnLabels); //Header
int pp = 1;
while (lastSL < maxSL) { //Trials for each plotPoint on X-axis, and one row on output
- final int nextSL = lastSL == 0 ? minSL : pwr2LawNext(ppoSL, lastSL);
+ final int nextSL = lastSL == 0 ? minSL : pwr2SeriesNext(ppoSL, lastSL);
lastSL = nextSL;
final int trials = getNumTrials(nextSL);
diff --git a/src/main/java/org/apache/datasketches/characterization/theta/ThetaAccuracyIntersectionVsIEProfile.java b/src/main/java/org/apache/datasketches/characterization/theta/ThetaAccuracyIntersectionVsIEProfile.java
new file mode 100644
index 0000000..9d96e70
--- /dev/null
+++ b/src/main/java/org/apache/datasketches/characterization/theta/ThetaAccuracyIntersectionVsIEProfile.java
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.datasketches.characterization.theta;
+
+import org.apache.datasketches.Job;
+import org.apache.datasketches.JobProfile;
+import org.apache.datasketches.Properties;
+import org.apache.datasketches.ResizeFactor;
+import org.apache.datasketches.theta.Intersection;
+import org.apache.datasketches.theta.SetOperationBuilder;
+import org.apache.datasketches.theta.Union;
+import org.apache.datasketches.theta.UpdateSketch;
+import org.apache.datasketches.theta.UpdateSketchBuilder;
+
+public class ThetaAccuracyIntersectionVsIEProfile implements JobProfile {
+ final static String LS = System.getProperty("line.separator");
+ Job job;
+ Properties prop;
+ long vIn = 0;
+ int lgK;
+ ResizeFactor rf;
+ float p;
+ boolean direct;
+ boolean rebuild;
+
+ int trials;
+ int minLg10U;
+ int maxLg10U;
+ int ppom;
+
+ UpdateSketch skSm;
+ UpdateSketch skLg;
+ Intersection intersection;
+ Union union;
+
+ int plotPoints;
+ long[] uPoints;
+ double[] fArr;
+ double[] yTheorThetaREArr; // sqrt(F) * 1/sqrt(k) //plot of theoretical Theta RE
+ double[] yTheorIE_REArr; // F * 1/sqrt(k) //plot of theoretical IE RE
+ double[] yThetaREArr; //plot of measured Theta RE
+ double[] yIE_REArr; //plot of meausred IE RE
+
+ double[] yThetaRESumArr;
+ double[] yIE_RESumArr;
+
+ @Override
+ public void start(final Job job) {
+ this.job = job;
+ prop = job.getProperties();
+ lgK = Integer.parseInt(prop.mustGet("LgK"));
+ rf = ResizeFactor.getRF(Integer.parseInt(prop.mustGet("LgRF")));
+ p = Float.parseFloat(prop.mustGet("P"));
+ direct = Boolean.parseBoolean(prop.mustGet("Direct"));
+ rebuild = Boolean.parseBoolean(prop.mustGet("Rebuild"));
+
+ trials = Integer.parseInt(prop.mustGet("Trials"));
+
+ minLg10U = Integer.parseInt(prop.mustGet("MinLg10U"));
+ maxLg10U = Integer.parseInt(prop.mustGet("MaxLg10U"));
+ ppom = Integer.parseInt(prop.mustGet("PPOM"));
+ configure();
+ doTrials();
+ process();
+ shutdown();
+ cleanup();
+ job.println("");
+ }
+
+ void configure() {
+ final double theorRSE = 1.0 / Math.sqrt(1 << lgK);
+ plotPoints = (maxLg10U - minLg10U) * ppom + 1;
+ fArr = new double[plotPoints];
+ uPoints = new long[plotPoints];
+ yTheorThetaREArr = new double[plotPoints];
+ yTheorIE_REArr = new double[plotPoints];
+ yThetaREArr = new double[plotPoints];
+ yIE_REArr = new double[plotPoints];
+
+ yThetaRESumArr = new double[plotPoints];
+ yIE_RESumArr = new double[plotPoints];
+
+ final double inc = 1.0 / ppom;
+ for (int i = 0; i < plotPoints; i++) {
+ final long aUb = (long)Math.pow(10, minLg10U + (i * inc));
+ uPoints[i] = aUb;
+ final long aIb = uPoints[0];
+ final double F = (double)aUb / aIb;
+ fArr[i] = F;
+ yTheorIE_REArr[i] = F * theorRSE;
+ yTheorThetaREArr[i] = Math.sqrt(F) * theorRSE;
+ }
+ configureSketches();
+ }
+
+ void configureSketches() {
+ final UpdateSketchBuilder udBldr = new UpdateSketchBuilder()
+ .setLogNominalEntries(lgK)
+ .setP(p)
+ .setResizeFactor(rf);
+ skSm = udBldr.build();
+ skLg = udBldr.build();
+ final SetOperationBuilder soBldr = new SetOperationBuilder()
+ .setLogNominalEntries(lgK);
+ intersection = soBldr.buildIntersection();
+ union = soBldr.buildUnion();
+ }
+
+ void doTrials() {
+ for (int t = 1; t <= trials; t++) {
+ doTrial();
+ }
+ for (int pp = 0; pp < plotPoints; pp++) {
+ yThetaREArr[pp] = yThetaRESumArr[pp] / trials;
+ yIE_REArr[pp] = yIE_RESumArr[pp] / trials;
+ }
+ }
+
+ void doTrial() {
+ final long base = uPoints[0];
+ for (long u = 0; u < base; u++) {
+ skSm.update(vIn);
+ skLg.update(vIn++);
+ }
+ skSm.rebuild();
+ skLg.rebuild();
+ yThetaRESumArr[0] += (intersection.intersect(skLg, skSm).getEstimate() / base - 1.0) * 2.0;
+ yIE_RESumArr[0] +=
+ ((skSm.getEstimate() + skLg.getEstimate() - union.union(skSm, skLg).getEstimate()) / base - 1.0) * 2.0;
+
+ for (int pp = 1; pp < plotPoints; pp++) {
+ final long delta = uPoints[pp] - uPoints[pp - 1];
+ for (long u = 0; u < delta; u++) {
+ skLg.update(vIn++);
+ }
+ skLg.rebuild();
+ yThetaRESumArr[pp] += intersection.intersect(skLg, skSm).getEstimate() / base - 1.0;
+ yIE_RESumArr[pp] += (skSm.getEstimate() + skLg.getEstimate() - union.union(skSm, skLg).getEstimate())
+ / base - 1.0;
+ }
+ skSm.reset();
+ skLg.reset();
+ }
+
+ final String[] hdr = {"PP","F", "TheorThetaRE", "TheorIE_RE", "ThetaRE", "IE_RE"};
+ final String hfmt = "%6s %12s %12s %12s %12s %12s" + LS;
+ final String fmt = "%6d %12.3e %12.6f %12.6f %12.6f %12.6f" + LS;
+
+ void process() {
+ job.println("");
+ job.printf(hfmt, (Object[]) hdr );
+ for (int i = 0; i < plotPoints; i++) {
+ job.printf(fmt, i, fArr[i], yTheorThetaREArr[i], yTheorIE_REArr[i], yThetaREArr[i], yIE_REArr[i]);
+ }
+ }
+
+ @Override
+ public void shutdown() { }
+
+ @Override
+ public void cleanup() { }
+
+}
+
diff --git a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java
index bb78000..0f43707 100644
--- a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseAccuracyProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.uniquecount;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_4SD;
import static org.apache.datasketches.Util.milliSecToString;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -63,7 +63,7 @@ public abstract class BaseAccuracyProfile implements JobProfile {
postPMFs = Boolean.parseBoolean(prop.mustGet("Trials_postPMFs"));
uPPO = Integer.parseInt(prop.mustGet("Trials_UPPO"));
lgQK = Integer.parseInt(prop.mustGet("Trials_lgQK"));
- qArr = AccuracyStats.buildAccuracyStatsArray(lgMinU, lgMaxU, uPPO, lgQK);
+ qArr = AccuracyStats.buildLog2AccuracyStatsArray(lgMinU, lgMaxU, uPPO, lgQK);
lgK = Integer.parseInt(prop.mustGet("LgK"));
final String getSizeStr = prop.get("Trials_bytes");
getSize = getSizeStr == null ? false : Boolean.parseBoolean(getSizeStr);
@@ -93,7 +93,7 @@ public abstract class BaseAccuracyProfile implements JobProfile {
* Manages multiple trials for measuring accuracy.
*
* <p>An accuracy trial is run along the count axis (X-axis) first. The "points" along the X-axis
- * where accuracy data is collected is controlled by the data loaded into the CountAccuracyStats
+ * where accuracy data is collected is controlled by the data loaded into the AccuracyStats
* array. A single trial consists of a single sketch being updated with the Trials_lgMaxU unique
* values, stopping at the configured x-axis points along the way where the accuracy is recorded
* into the corresponding stats array. Each stats array retains the distribution of
@@ -110,42 +110,42 @@ public abstract class BaseAccuracyProfile implements JobProfile {
final int maxT = 1 << lgMaxT;
final int maxU = 1 << lgMaxU;
- //This will generate a table of data up for each intermediate Trials point
- int lastT = 0;
- while (lastT < maxT) {
- final int nextT = lastT == 0 ? minT : pwr2LawNext(tPPO, lastT);
- final int delta = nextT - lastT;
+ //This will generate a table of data for each intermediate Trials point
+ int lastTpt = 0;
+ while (lastTpt < maxT) {
+ final int nextT = lastTpt == 0 ? minT : pwr2SeriesNext(tPPO, lastTpt);
+ final int delta = nextT - lastTpt;
for (int i = 0; i < delta; i++) {
doTrial();
}
- lastT = nextT;
+ lastTpt = nextT;
final StringBuilder sb = new StringBuilder();
if (nextT < maxT) { // intermediate
if (interData) {
job.println(getHeader());
- process(getSize, qArr, lastT, sb);
+ process(getSize, qArr, lastTpt, sb);
job.println(sb.toString());
}
} else { //done
job.println(getHeader());
- process(getSize, qArr, lastT, sb);
+ process(getSize, qArr, lastTpt, sb);
job.println(sb.toString());
}
job.println(prop.extractKvPairs());
- job.println("Cum Trials : " + lastT);
+ job.println("Cum Trials : " + lastTpt);
job.println("Cum Updates : " + vIn);
final long currentTime_mS = System.currentTimeMillis();
final long cumTime_mS = currentTime_mS - job.getStartTime();
job.println("Cum Time : " + milliSecToString(cumTime_mS));
- final double timePerTrial_mS = cumTime_mS * 1.0 / lastT;
+ final double timePerTrial_mS = cumTime_mS * 1.0 / lastTpt;
final double avgUpdateTime_ns = timePerTrial_mS * 1e6 / maxU;
job.println("Time Per Trial, mSec : " + timePerTrial_mS);
job.println("Avg Update Time, nSec : " + avgUpdateTime_ns);
job.println("Date Time : "
+ job.getReadableDateString(currentTime_mS));
- final long timeToComplete_mS = (long)(timePerTrial_mS * (maxT - lastT));
+ final long timeToComplete_mS = (long)(timePerTrial_mS * (maxT - lastTpt));
job.println("Est Time to Complete : " + milliSecToString(timeToComplete_mS));
job.println("Est Time at Completion : "
+ job.getReadableDateString(timeToComplete_mS + currentTime_mS));
@@ -166,18 +166,18 @@ public abstract class BaseAccuracyProfile implements JobProfile {
sb.setLength(0);
for (int pt = 0; pt < points; pt++) {
final AccuracyStats q = qArr[pt];
- final double uniques = q.trueValue;
+ final double trueUniques = q.trueValue;
final double meanEst = q.sumEst / cumTrials;
final double meanRelErr = q.sumRelErr / cumTrials;
- final double meanSqErr = q.sumSqErr / cumTrials; //intermediate
- final double normMeanSqErr = meanSqErr / (1.0 * uniques * uniques); //intermediate
- final double rmsRelErr = Math.sqrt(normMeanSqErr);
+ final double meanSqErr = q.sumSqErr / cumTrials; //intermediate value
+ final double normMeanSqErr = meanSqErr / (1.0 * trueUniques * trueUniques); //intermediate value
+ final double rmsRelErr = Math.sqrt(normMeanSqErr); //a.k.a. Normalied RMS Error or NRMSE
q.rmsre = rmsRelErr;
final int bytes = q.bytes;
//OUTPUT
//sb.setLength(0);
- sb.append(uniques).append(TAB);
+ sb.append(trueUniques).append(TAB);
//Sketch meanEst, meanEstErr, norm RMS Err
sb.append(meanEst).append(TAB);
@@ -191,7 +191,7 @@ public abstract class BaseAccuracyProfile implements JobProfile {
final double[] quants = qArr[pt].qsk.getQuantiles(GAUSSIANS_4SD);
final int quantsLen = quants.length;
for (int i = 0; i < quantsLen; i++) {
- sb.append(quants[i] / uniques - 1.0).append(TAB);
+ sb.append(quants[i] / trueUniques - 1.0).append(TAB);
}
if (getSize) {
sb.append(bytes).append(TAB);
diff --git a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseBoundsAccuracyProfile.java b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseBoundsAccuracyProfile.java
index 9a244c2..f301a9e 100644
--- a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseBoundsAccuracyProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseBoundsAccuracyProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.uniquecount;
import static org.apache.datasketches.GaussianRanks.GAUSSIANS_3SD;
import static org.apache.datasketches.Util.milliSecToString;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import java.io.PrintWriter;
@@ -115,7 +115,7 @@ public abstract class BaseBoundsAccuracyProfile implements JobProfile {
//This will generate a table of data up for each intermediate Trials point
int lastT = 0;
while (lastT < maxT) {
- final int nextT = lastT == 0 ? minT : pwr2LawNext(tPPO, lastT);
+ final int nextT = lastT == 0 ? minT : pwr2SeriesNext(tPPO, lastT);
final int delta = nextT - lastT;
for (int i = 0; i < delta; i++) {
doTrial();
diff --git a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseSerDeProfile.java b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseSerDeProfile.java
index a046ae7..6f3f1c7 100644
--- a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseSerDeProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseSerDeProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.uniquecount;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import java.util.Arrays;
@@ -103,7 +103,7 @@ public abstract class BaseSerDeProfile implements JobProfile {
job.println(getHeader());
while (lastU < maxU) { //for each U point on X-axis, OR one row on output
- final int nextU = lastU == 0 ? minU : pwr2LawNext(uPPO, lastU);
+ final int nextU = lastU == 0 ? minU : pwr2SeriesNext(uPPO, lastU);
lastU = nextU;
final int trials = getNumTrials(nextU);
diff --git a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseUpdateSpeedProfile.java b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseUpdateSpeedProfile.java
index fd123ac..6ac98a8 100644
--- a/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseUpdateSpeedProfile.java
+++ b/src/main/java/org/apache/datasketches/characterization/uniquecount/BaseUpdateSpeedProfile.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.characterization.uniquecount;
import static java.lang.Math.log;
import static java.lang.Math.pow;
-import static org.apache.datasketches.Util.pwr2LawNext;
+import static org.apache.datasketches.Util.pwr2SeriesNext;
import org.apache.datasketches.Job;
import org.apache.datasketches.JobProfile;
@@ -92,7 +92,7 @@ public abstract class BaseUpdateSpeedProfile implements JobProfile {
final StringBuilder dataStr = new StringBuilder();
job.println(getHeader());
while (lastU < maxU) { //Trials for each U point on X-axis, and one row on output
- final int nextU = lastU == 0 ? minU : pwr2LawNext(uPPO, lastU);
+ final int nextU = lastU == 0 ? minU : pwr2SeriesNext(uPPO, lastU);
lastU = nextU;
final int trials = getNumTrials(nextU);
diff --git a/src/main/resources/theta/ThetaAccuracyIntersectionVsIEJob.conf b/src/main/resources/theta/ThetaAccuracyIntersectionVsIEJob.conf
new file mode 100644
index 0000000..6cc8ffe
--- /dev/null
+++ b/src/main/resources/theta/ThetaAccuracyIntersectionVsIEJob.conf
@@ -0,0 +1,42 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Job
+
+# Job Profile
+JobProfile=org.apache.datasketches.characterization.theta.ThetaAccuracyIntersectionVsIEProfile
+
+#Theta Sketch configure
+LgK=12
+LgRF=0 #set the log resize factor to 0 (RF = 1)
+P=1.0
+Direct=false
+Rebuild=true
+
+# Trials
+Trials=500
+
+# X-Axis, Uniques
+MinLg10U=6
+MaxLg10U=7
+PPOM=4 # points per order-of-magnitude
+
+# Date-Time Profile
+TimeZone=PST
+TimeZoneOffset=-28800000 # offset in millisec
+FileNameDateFormat=yyyyMMdd'_'HHmmssz
+ReadableDateFormat=yyyy/MM/dd HH:mm:ss
diff --git a/src/test/java/org/apache/datasketches/PowerLawGeneratorTest.java b/src/test/java/org/apache/datasketches/PowerLawGeneratorTest.java
index 8f6edbd..31a578e 100644
--- a/src/test/java/org/apache/datasketches/PowerLawGeneratorTest.java
+++ b/src/test/java/org/apache/datasketches/PowerLawGeneratorTest.java
@@ -19,11 +19,8 @@
package org.apache.datasketches;
-//import org.testng.Assert;
import org.testng.annotations.Test;
-//import org.apache.datasketches.PowerLawGenerator.Pair;
-
/**
* This provides sample code that generates tables of values that can be used
* for plotting or other analytic computations. The first column is just the
@@ -151,7 +148,6 @@ public class PowerLawGeneratorTest {
}
outputX(row++, gi, cur);
}
-
}
/**
@@ -182,11 +178,11 @@ public class PowerLawGeneratorTest {
}
/**
- * @param s
+ * @param o
* value to print
*/
- private static void println(String s) {
- //System.out.println(s); //disable here
+ private static void println(Object o) {
+ //System.out.println(o.toString()); //disable here
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org