ph-math/src/main/java/com/helger/numbercruncher/matrix/Matrix.java
public ColumnVector multiply (final ColumnVector cv) throws MatrixException
  {
    // Validate cv's size.
    if (m_nRows != cv.m_nRows)
    {
      throw new MatrixException (MatrixException.INVALID_DIMENSIONS);
    }

    final float pv[] = new float [m_nRows]; // product values

    // Compute the values of the product.
    for (int r = 0; r < m_nRows; ++r)
    {
      float dot = 0;
      for (int c = 0; c < m_nCols; ++c)
      {
        dot += m_aValues[r][c] * cv.m_aValues[c][0];
      }
      pv[r] = dot;
    }

    return new ColumnVector (pv);
  }
public ColumnVector multiply (final ColumnVector cv) throws MatrixException
  {
    // Validate cv's size.
    if (m_nRows != cv.m_nRows)
    {
      throw new MatrixException (MatrixException.INVALID_DIMENSIONS);
    }

    final float pv[] = new float [m_nRows]; // product values

    // Compute the values of the product.
    for (int r = 0; r < m_nRows; ++r)
    {
      float dot = 0;
      for (int c = 0; c < m_nCols; ++c)
      {
        dot += m_aValues[r][c] * cv.m_aValues[c][0];
      }
      pv[r] = dot;
    }

    return new ColumnVector (pv);
  }
Multiply this matrix by a column vector: this*cv

@param cv
the column vector
@return the product column vector
@throws MatrixException
for invalid size