in src/main/java/org/apache/datasketches/characterization/hll/HllAccuracyProfile.java [59:132]
public void doTrial() {
final int qArrLen = qArr.length;
sketch.reset(); //reuse the same sketch
long lastUniques = 0;
final int sw = (useCharArr ? 2 : 0) | (useComposite ? 1 : 0);
switch (sw) {
case 0: { //use longs; use HIP
for (int i = 0; i < qArrLen; i++) {
final AccuracyStats q = qArr[i];
final long delta = (long)(q.trueValue - lastUniques);
for (long u = 0; u < delta; u++) {
sketch.update(++vIn);
}
lastUniques += delta;
final double est = sketch.getEstimate();
q.update(est);
if (getSize) {
q.bytes = sketch.toCompactByteArray().length;
}
}
break;
}
case 1: { //use longs; use Composite
for (int i = 0; i < qArrLen; i++) {
final AccuracyStats q = qArr[i];
final long delta = (long)(q.trueValue - lastUniques);
for (long u = 0; u < delta; u++) {
sketch.update(++vIn);
}
lastUniques += delta;
final double est = sketch.getCompositeEstimate();
q.update(est);
if (getSize) {
q.bytes = sketch.toCompactByteArray().length;
}
}
break;
}
case 2: { //use char[]; use HIP
for (int i = 0; i < qArrLen; i++) {
final AccuracyStats q = qArr[i];
final long delta = (long)(q.trueValue - lastUniques);
for (long u = 0; u < delta; u++) {
final String vstr = Long.toHexString(++vIn);
sketch.update(vstr.toCharArray());
}
lastUniques += delta;
final double est = sketch.getEstimate();
q.update(est);
if (getSize) {
q.bytes = sketch.toCompactByteArray().length;
}
}
break;
}
case 3: { //use char[]; use Composite
for (int i = 0; i < qArrLen; i++) {
final AccuracyStats q = qArr[i];
final long delta = (long)(q.trueValue - lastUniques);
for (long u = 0; u < delta; u++) {
final String vstr = Long.toHexString(++vIn);
sketch.update(vstr.toCharArray());
}
lastUniques += delta;
final double est = sketch.getCompositeEstimate();
q.update(est);
if (getSize) {
q.bytes = sketch.toCompactByteArray().length;
}
}
break;
}
}
}