docs: public static void transpose(DMatrixSparseCSC A , DMatrixSparseCSC C , @Nullable IGrowArray gw ) {
          int []work = adjust(gw,A.numRows,A.numRows);
          C.reshape(A.numCols,A.numRows,A.nz_length);
  
          // compute the histogram for each row in 'a'
          int idx0 = A.col_idx[0];
          for (int j = 1; j <= A.numCols; j++) {
              int idx1 = A.col_idx[j];
              for (int i = idx0; i < idx1; i++) {
                  if( A.nz_rows.length <= i)
                      throw new RuntimeException("Egads");
                  work[A.nz_rows[i]]++;
              }
              idx0 = idx1;
          }
  
          // construct col_idx in the transposed matrix
          C.histogramToStructure(work);
          System.arraycopy(C.col_idx,0,work,0,C.numCols);
  
          // fill in the row indexes
          idx0 = A.col_idx[0];
          for (int j = 1; j <= A.numCols; j++) {
              int col = j-1;
              int idx1 = A.col_idx[j];
              for (int i = idx0; i < idx1; i++) {
                  int row = A.nz_rows[i];
                  int index = work[row]++;
                  C.nz_rows[index] = col;
                  C.nz_values[index] = A.nz_values[i];
              }
              idx0 = idx1;
          }
      }