X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fconstant.h;h=efbe39e9d9beef52c4d7814b0f736c48206eb357;hp=9cf9d74d41dcf2013d24b6343392b745c8b064f8;hb=b9dc3d71083fe1a2f90a34db24b57b06ad51ebde;hpb=da64e515abf7243bc4c84ca3631470931c4e6691 diff --git a/ginac/constant.h b/ginac/constant.h index 9cf9d74d..efbe39e9 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-2005 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 @@ -26,6 +26,7 @@ #include #include "basic.h" #include "ex.h" +#include "archive.h" namespace GiNaC { @@ -38,17 +39,21 @@ typedef ex (*evalffunctype)(); class constant : public basic { GINAC_DECLARE_REGISTERED_CLASS(constant, basic) - -// member functions - // 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; + void archive(archive_node& n) const; + void read_archive(const archive_node& n, lst& syms); protected: ex derivative(const symbol & s) const; bool is_equal_same_type(const basic & other) const; @@ -69,20 +74,14 @@ 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 }; +GINAC_DECLARE_UNARCHIVER(constant); 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__