in src/main/java/org/apache/datasketches/kll/KllHelper.java [660:730]
static String toStringImpl(final KllSketch sketch, final boolean withLevels, final boolean withData) {
final SketchType sketchType = sketch.sketchType;
final int k = sketch.getK();
final int m = sketch.getM();
final int numLevels = sketch.getNumLevels();
final int[] levelsArr = sketch.getLevelsArray();
final String epsPct = String.format("%.3f%%", sketch.getNormalizedRankError(false) * 100);
final String epsPMFPct = String.format("%.3f%%", sketch.getNormalizedRankError(true) * 100);
final StringBuilder sb = new StringBuilder();
final String directStr = sketch.serialVersionUpdatable ? "Direct" : "";
final String skType = sketchType == DOUBLES_SKETCH ? directStr + "Doubles" :
sketchType == FLOATS_SKETCH ? directStr + "Floats" : directStr + "Items";
sb.append(Util.LS).append("### Kll").append(skType).append("Sketch Summary:").append(Util.LS);
sb.append(" K : ").append(k).append(Util.LS);
sb.append(" Dynamic min K : ").append(sketch.getMinK()).append(Util.LS);
sb.append(" M : ").append(m).append(Util.LS);
sb.append(" N : ").append(sketch.getN()).append(Util.LS);
sb.append(" Epsilon : ").append(epsPct).append(Util.LS);
sb.append(" Epsison PMF : ").append(epsPMFPct).append(Util.LS);
sb.append(" Empty : ").append(sketch.isEmpty()).append(Util.LS);
sb.append(" Estimation Mode : ").append(sketch.isEstimationMode()).append(Util.LS);
sb.append(" Levels : ").append(numLevels).append(Util.LS);
sb.append(" Level 0 Sorted : ").append(sketch.isLevelZeroSorted()).append(Util.LS);
sb.append(" Capacity Items : ").append(levelsArr[numLevels]).append(Util.LS);
sb.append(" Retained Items : ").append(sketch.getNumRetained()).append(Util.LS);
if (sketch.serialVersionUpdatable) {
sb.append(" Updatable Storage Bytes: ").append(sketch.getCurrentUpdatableSerializedSizeBytes()).append(Util.LS);
} else {
sb.append(" Compact Storage Bytes : ").append(sketch.getCurrentCompactSerializedSizeBytes()).append(Util.LS);
}
if (sketchType == DOUBLES_SKETCH) {
final KllDoublesSketch dblSk = (KllDoublesSketch) sketch;
sb.append(" Min Item : ").append(dblSk.getMinDoubleItem()).append(Util.LS);
sb.append(" Max Item : ").append(dblSk.getMaxDoubleItem()).append(Util.LS);
} else if (sketchType == FLOATS_SKETCH) {
final KllFloatsSketch fltSk = (KllFloatsSketch) sketch;
sb.append(" Min Item : ").append(fltSk.getMinFloatItem()).append(Util.LS);
sb.append(" Max Item : ").append(fltSk.getMaxFloatItem()).append(Util.LS);
}
// else {
// KllItemsSketch itmSk = (KllItemsSketch) sketch;
// sb.append(" Min Item : ").append(itmSk.getMinItem()).append(Util.LS);
// sb.append(" Max Item : ").append(itmSk.getMaxItem()).append(Util.LS);
// }
sb.append("### End sketch summary").append(Util.LS);
double[] myDoubleItemsArr = null;
float[] myFloatItemsArr = null;
//Object[] myItemsArr = null;
if (withLevels) {
sb.append(outputLevels(k, m, numLevels, levelsArr));
}
if (withData) {
if (sketchType == DOUBLES_SKETCH) {
final KllDoublesSketch dblSk = (KllDoublesSketch) sketch;
myDoubleItemsArr = dblSk.getDoubleItemsArray();
sb.append(outputDoublesData(numLevels, levelsArr, myDoubleItemsArr));
} else if (sketchType == FLOATS_SKETCH) {
final KllFloatsSketch fltSk = (KllFloatsSketch) sketch;
myFloatItemsArr = fltSk.getFloatItemsArray();
sb.append(outputFloatsData(numLevels, levelsArr, myFloatItemsArr));
}
// else { //Items Sketch //TODO
// myItemsArr = null;
// sb.append(outputGenericItemsData(numLevels, levelsArr, myItemsArr));
// }
}
return sb.toString();
}