docs: public static double[][] timesTranspose(final double[][] m1, final double[][] m2) {
      final int rowdim1 = m1.length, coldim1 = getColumnDimensionality(m1);
      final int rowdim2 = m2.length;
      assert coldim1 == getColumnDimensionality(m2) : ERR_MATRIX_INNERDIM;
      final double[][] re = new double[rowdim1][rowdim2];
      for(int j = 0; j < rowdim2; j++) {
        final double[] Browj = m2[j];
        // multiply it with each row from A
        for(int i = 0; i < rowdim1; i++) {
          final double[] Arowi = m1[i];
          double s = 0;
          // assert Arowi.length == coldim1 : ERR_MATRIX_RAGGED;
          // assert Browj.length == coldim1 : ERR_MATRIX_INNERDIM;
          for(int k = 0; k < coldim1; k++) {
            s += Arowi[k] * Browj[k];
          }
          re[i][j] = s;
        }
      }
      return re;
    }