code: public Matrix times(final Matrix B)
      {
          final Matrix A = this;
  
          if (A.m_columns != B.m_rows)
          {
              throw new GeometryException("Illegal matrix dimensions");
          }
          final Matrix C = new Matrix(A.m_rows, B.m_columns);
  
          for (int i = 0; i < C.m_rows; i++)
          {
              for (int j = 0; j < C.m_columns; j++)
              {
                  for (int k = 0; k < A.m_columns; k++)
                  {
                      C.m_data[i][j] += (A.m_data[i][k] * B.m_data[k][j]);
                  }
              }
          }
          return C;
      }
docs: Returns C = A * B
  
  @param B
  @return new Matrix C
  @throws GeometryException if the matrix dimensions don't match