in src/main/java/org/apache/datasketches/vector/decomposition/FrequentDirections.java [437:507]
public String toString(final boolean printSingularValues,
final boolean printMatrix,
final boolean applyCompensation) {
final StringBuilder sb = new StringBuilder();
final String thisSimpleName = this.getClass().getSimpleName();
sb.append(LS);
sb.append("### ").append(thisSimpleName).append(" INFO: ").append(LS);
if (applyCompensation) {
sb.append("Applying compensative adjustments to matrix values").append(LS);
}
sb.append(" k : ").append(k_).append(LS);
sb.append(" d : ").append(d_).append(LS);
sb.append(" l : ").append(l_).append(LS);
sb.append(" n : ").append(n_).append(LS);
sb.append(" numRows : ").append(nextZeroRow_).append(LS);
sb.append(" SV adjustment: ").append(svAdjustment_).append(LS);
if (printSingularValues) {
sb.append(" Singular Vals: ")
.append(applyCompensation ? "(adjusted)" : "(unadjusted)").append(LS);
final double[] sv = getSingularValues(applyCompensation);
for (int i = 0; i < Math.min(k_, n_); ++i) {
if (sv[i] > 0.0) {
double val = sv[i];
if ((val > 0.0) && applyCompensation) {
val = Math.sqrt((val * val) + svAdjustment_);
}
sb.append(" \t").append(i).append(":\t").append(val).append(LS);
}
}
}
if (!printMatrix) {
return sb.toString();
}
final int tmpColDim = (int) B_.getNumColumns();
sb.append(" Matrix data :").append(LS);
sb.append(B_.getClass().getName());
sb.append(" < ").append(nextZeroRow_).append(" x ").append(tmpColDim).append(" >");
// First element
sb.append("\n{ { ").append(String.format("%.3f", B_.getElement(0, 0)));
// Rest of the first row
for (int j = 1; j < tmpColDim; j++) {
sb.append(",\t").append(String.format("%.3f", B_.getElement(0, j)));
}
// For each of the remaining rows
for (int i = 1; i < nextZeroRow_; i++) {
// First column
sb.append(" },\n{ ").append(String.format("%.3f", B_.getElement(i, 0)));
// Remaining columns
for (int j = 1; j < tmpColDim; j++) {
sb.append(",\t").append(String.format("%.3f", B_.getElement(i, j)));
}
}
// Finish
sb.append(" } }").append(LS);
sb.append("### END SKETCH SUMMARY").append(LS);
return sb.toString();
}