X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;ds=sidebyside;f=ginac%2Fmatrix.h;h=8c24dcf9043a423c21521841928327eab22586a4;hb=c20f44225542fd9e4c0cda17660af6a276d3ed9f;hp=e3916e2a66899ff44fd5bfa9905af5f91322185a;hpb=9e2d60e206395fc9908e1f9025e50c76b3d7c182;p=ginac.git diff --git a/ginac/matrix.h b/ginac/matrix.h index e3916e2a..8c24dcf9 100644 --- a/ginac/matrix.h +++ b/ginac/matrix.h @@ -3,7 +3,7 @@ * Interface to symbolic matrices */ /* - * GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -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__