X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fconstant.h;h=c18f6fc9f01dd2669a08a3013067a8028587d364;hp=f44ec9dcf08b30d356bf7d01e7198e53ca8fe2b3;hb=c647bf0942d660691272a8a2f4d7e5a3c0f6eb0f;hpb=86ae5e2dfe39fb17f3d6c52a497a8309c9814111 diff --git a/ginac/constant.h b/ginac/constant.h index f44ec9dc..c18f6fc9 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-2003 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2008 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__