X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;ds=sidebyside;f=ginac%2Fconstant.h;h=5ba32987d8ba38397292a139b3341fe605f50bd9;hb=bc80f7d97d0dc2c74606b8c2e64e50530a685ba0;hp=cff0e42f028d069d0df886660fe4613ce1bbef02;hpb=6d225ee55693c0617d254e6fa283c00c71bd2919;p=ginac.git diff --git a/ginac/constant.h b/ginac/constant.h index cff0e42f..5ba32987 100644 --- a/ginac/constant.h +++ b/ginac/constant.h @@ -3,7 +3,7 @@ * Interface to GiNaC's constant types and some special constants. */ /* - * GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2006 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 @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __GINAC_CONSTANT_H__ @@ -43,12 +43,17 @@ class constant : public basic // other constructors public: - constant(const std::string & initname, evalffunctype efun = 0, const std::string & texname = std::string()); - constant(const std::string & initname, const numeric & initnumber, const std::string & texname = std::string()); + constant(const std::string & initname, evalffunctype efun = 0, const std::string & texname = std::string(), unsigned domain = domain::complex); + constant(const std::string & initname, const numeric & initnumber, const std::string & texname = std::string(), unsigned domain = domain::complex); // functions overriding virtual functions from base classes public: + bool info(unsigned inf) const; ex evalf(int level = 0) const; + bool is_polynomial(const ex & var) const; + ex conjugate() const; + ex real_part() const; + ex imag_part() const; protected: ex derivative(const symbol & s) const; bool is_equal_same_type(const basic & other) const; @@ -69,20 +74,13 @@ private: ex number; ///< numerical value this constant evalf()s to unsigned serial; ///< unique serial number for comparison static unsigned next_serial; + unsigned domain; ///< numerical value this constant evalf()s to }; extern const constant Pi; extern const constant Catalan; extern const constant Euler; -// utility functions - -/** Specialization of is_exactly_a(obj) for constant objects. */ -template<> inline bool is_exactly_a(const basic & obj) -{ - return obj.tinfo()==TINFO_constant; -} - } // namespace GiNaC #endif // ndef __GINAC_CONSTANT_H__