class matrix {
private:
    int row, col;
    int sparse;
    double **y;
public:
    matrix(int n = 1, int m = 1, int s = 0);
    matrix(const matrix &);
    ~matrix();
    matrix operator+(const matrix & a) const;
    matrix operator-(const matrix & a) const;
    void print();
    double & operator()(int n, int m) const;
    double & operator()(int n) const;
    matrix operator=(const matrix &a);
    matrix operator*(const matrix &a) const;
    matrix operator|(const matrix &b) const;
    matrix operator+(); //unary operator for upper triangulation
    double det();
    double norm() const;
    matrix column(int);
    friend matrix operator*(double, matrix &);
    friend matrix operator*(matrix &, double);

    friend int eigJ(matrix &a, double eps, double *, matrix &);
};

//              end class matrix