allow printing singular values separaltey from matrix in toString()
diff --git a/src/main/java/com/yahoo/sketches/decomposition/FrequentDirections.java b/src/main/java/com/yahoo/sketches/decomposition/FrequentDirections.java
index 02dacdb..3521fc1 100644
--- a/src/main/java/com/yahoo/sketches/decomposition/FrequentDirections.java
+++ b/src/main/java/com/yahoo/sketches/decomposition/FrequentDirections.java
@@ -400,24 +400,25 @@
}
/**
- * Returns a human-readable summary of the sketch and, optionally, prints the raw data.
- * @param printMatrix If true, prints sketch's data matrix
+ * Returns a human-readable summary of the sketch and, optionally, prints the singular values.
+ * @param printSingularValues If true, prints sketch's data matrix
* @return A String representation of the sketch.
*/
- public String toString(final boolean printMatrix) {
- return toString(printMatrix, false, false);
+ public String toString(final boolean printSingularValues) {
+ return toString(printSingularValues, false, false);
}
/**
* Returns a human-readable summary of the sketch, optionally printing either the filled
* or complete sketch matrix, and also optionally adjusting the singular values based on the
* total weight subtacted during the algorithm.
+ * @param printSingularValues If true, prints the sketch's singular values
* @param printMatrix If true, prints the sketch's data matrix
- * @param fullMatrix If true, prints all rows; if false, only non-empty rows
* @param applyCompensation If true, prints adjusted singular values
* @return A String representation of the sketch.
*/
- public String toString(final boolean printMatrix, final boolean fullMatrix,
+ public String toString(final boolean printSingularValues,
+ final boolean printMatrix,
final boolean applyCompensation) {
final StringBuilder sb = new StringBuilder();
@@ -435,32 +436,32 @@
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();
}
- 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);
- }
- }
-
final Matrix mtx = Matrix.wrap(B_);
-
- final int tmpRowDim = fullMatrix ? nextZeroRow_ : Math.min(k_, nextZeroRow_);
final int tmpColDim = (int) mtx.getNumColumns();
sb.append(" Matrix data :").append(LS);
sb.append(mtx.getClass().getName());
- sb.append(" < ").append(tmpRowDim).append(" x ").append(tmpColDim).append(" >");
+ sb.append(" < ").append(nextZeroRow_).append(" x ").append(tmpColDim).append(" >");
// First element
sb.append("\n{ { ").append(mtx.getElement(0, 0));
@@ -471,7 +472,7 @@
}
// For each of the remaining rows
- for (int i = 1; i < tmpRowDim; i++) {
+ for (int i = 1; i < nextZeroRow_; i++) {
// First column
sb.append(" },\n{ ").append(mtx.getElement(i, 0));