X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fmatrix.h;h=8c24dcf9043a423c21521841928327eab22586a4;hp=00dee531e0ff0b48e058e35e63f7e7cc123eef42;hb=539de73dc25de63f2888f8696d73ac3fc83db45f;hpb=383d5eb3b0f0506810d9105a268f939125bfc347;ds=sidebyside diff --git a/ginac/matrix.h b/ginac/matrix.h index 00dee531..8c24dcf9 100644 --- a/ginac/matrix.h +++ b/ginac/matrix.h @@ -27,38 +27,20 @@ #include "basic.h" #include "ex.h" -#ifndef NO_NAMESPACE_GINAC namespace GiNaC { -#endif // ndef NO_NAMESPACE_GINAC /** Symbolic matrices. */ class matrix : public basic { GINAC_DECLARE_REGISTERED_CLASS(matrix, basic) - -// friends -// (none) -// member functions - - // default constructor, destructor, copy constructor, assignment operator - // and helpers: -public: - matrix(); - ~matrix(); - matrix(const matrix & other); - const matrix & operator=(const matrix & other); -protected: - void copy(const matrix & other); - void destroy(bool call_parent); - - // other constructors + + // other ctors public: matrix(unsigned r, unsigned c); matrix(unsigned r, unsigned c, const exvector & m2); - + // functions overriding virtual functions from bases classes public: - basic * duplicate() const; void print(std::ostream & os, unsigned upper_precedence=0) const; void printraw(std::ostream & os) const; unsigned nops() const; @@ -68,18 +50,19 @@ public: bool has(const ex & other) const; ex eval(int level=0) const; ex evalf(int level=0) const; - // ex subs(const lst & ls, const lst & lr) const; + ex subs(const lst & ls, const lst & lr) const; + ex eval_indexed(const basic & i) const; + bool contract_with(exvector::iterator self, exvector::iterator other, exvector & v) const; protected: - int compare_same_type(const basic & other) const; unsigned return_type(void) const { return return_types::noncommutative; }; // new virtual functions which can be overridden by derived classes // (none) // non-virtual functions in this class public: - unsigned rows(void) const //! Get number of rows. + unsigned rows(void) const /// Get number of rows. { return row; } - unsigned cols(void) const //! Get number of columns. + unsigned cols(void) const /// Get number of columns. { return col; } matrix add(const matrix & other) const; matrix sub(const matrix & other) const; @@ -102,18 +85,13 @@ protected: // member variables protected: - unsigned row; /**< number of rows */ - unsigned col; /**< number of columns */ - exvector m; /**< representation (cols indexed first) */ + unsigned row; ///< number of rows + unsigned col; ///< number of columns + exvector m; ///< representation (cols indexed first) static unsigned precedence; }; -// global constants -extern const matrix some_matrix; -extern const std::type_info & typeid_matrix; - - // wrapper functions around member functions inline unsigned nops(const matrix & m) @@ -160,8 +138,6 @@ inline const matrix &ex_to_matrix(const ex &e) extern ex lst_to_matrix(const ex &l); -#ifndef NO_NAMESPACE_GINAC } // namespace GiNaC -#endif // ndef NO_NAMESPACE_GINAC #endif // ndef __GINAC_MATRIX_H__