X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;ds=sidebyside;f=ginac%2Fnumeric.h;h=3c7dba2c37aee6b178a978bd5088bed3b104aa7a;hb=9254356cc8381a5c189eb48cd40f316916453172;hp=b759d1aff42ac75a31c429719d591fddb02db699;hpb=a405eece0da232b296c4b400a89df4f43e39232d;p=ginac.git diff --git a/ginac/numeric.h b/ginac/numeric.h index b759d1af..3c7dba2c 100644 --- a/ginac/numeric.h +++ b/ginac/numeric.h @@ -3,7 +3,7 @@ * Makes the interface to the underlying bignum package available. */ /* - * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2002 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 @@ -72,19 +72,22 @@ class numeric : public basic // other ctors public: - explicit numeric(int i); - explicit numeric(unsigned int i); - explicit numeric(long i); - explicit numeric(unsigned long i); - explicit numeric(long numer, long denom); - explicit numeric(double d); - explicit numeric(const char *); + numeric(int i); + numeric(unsigned int i); + numeric(long i); + numeric(unsigned long i); + numeric(long numer, long denom); + numeric(double d); + numeric(const char *); - // functions overriding virtual functions from bases classes + // functions overriding virtual functions from base classes public: void print(const print_context & c, unsigned level = 0) const; unsigned precedence(void) const {return 30;} bool info(unsigned inf) const; + int degree(const ex & s) const; + int ldegree(const ex & s) const; + ex coeff(const ex & s, int n = 1) const; bool has(const ex &other) const; ex eval(int level = 0) const; ex evalf(int level = 0) const; @@ -96,7 +99,7 @@ public: protected: /** Implementation of ex::diff for a numeric always returns 0. * @see ex::diff */ - ex derivative(const symbol &s) const { return _ex0(); } + ex derivative(const symbol &s) const { return 0; } bool is_equal_same_type(const basic &other) const; unsigned calchash(void) const; @@ -285,9 +288,11 @@ ex CatalanEvalf(void); // utility functions -inline const numeric &ex_to_numeric(const ex &e) + +/** Specialization of is_exactly_a(obj) for numeric objects. */ +template<> inline bool is_exactly_a(const basic & obj) { - return static_cast(*e.bp); + return obj.tinfo()==TINFO_numeric; } } // namespace GiNaC