/**
   * Extracts a row or column from this matrix. The returned vector will either be a row or column
   * vector depending on the input type.
   *
   * @param extractRow If true a row will be extracted.
   * @param element The row or column the vector is contained in.
   * @return Extracted vector.
   */
  public T extractVector(boolean extractRow, int element) {
    int length = extractRow ? mat.numCols : mat.numRows;

    T ret = extractRow ? createMatrix(1, length) : createMatrix(length, 1);

    if (extractRow) {
      SpecializedOps.subvector(mat, element, 0, length, true, 0, ret.getMatrix());
    } else {
      SpecializedOps.subvector(mat, 0, element, length, false, 0, ret.getMatrix());
    }

    return ret;
  }