code: public static void multTransA_reorder(DMatrix1Row A , DMatrixD1 B , DMatrixD1 C )
      {
          if( B.numRows == 1 ) {
              if( A.numRows != B.numCols ) {
                  throw new MatrixDimensionException("A and B are not compatible");
              }
          } else if( B.numCols == 1 ) {
              if( A.numRows != B.numRows ) {
                  throw new MatrixDimensionException("A and B are not compatible");
              }
          } else {
              throw new MatrixDimensionException("B is not a vector");
          }
          C.reshape(A.numCols,1);
  
          if( A.numRows == 0 ) {
              CommonOps_DDRM.fill(C,0);
              return;
          }
  
          double B_val = B.get(0);
          for( int i = 0; i < A.numCols; i++ ) {
              C.set( i , A.get(i) * B_val );
          }
  
          int indexA = A.numCols;
          for( int i = 1; i < A.numRows; i++ ) {
              B_val = B.get(i);
              for( int j = 0; j < A.numCols; j++ ) {
                  C.plus(  j , A.get(indexA++) * B_val );
              }
          }
      }
docs: An alternative implementation of {@link #multTransA_small} that performs well on large
  matrices.  There is a relative performance hit when used on small matrices.
  
  @param A A matrix that is m by n. Not modified.
  @param B A Vector that has length m. Not modified.
  @param C A column vector that has length n. Modified.