X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fnumeric.h;h=27153df34a3a73209dfde67599daf84fcf9e187a;hp=92755b3eb390978e263646552a15fec02a0a54de;hb=b08505c6c50a4c0310d096cb62774ccd53db7b0a;hpb=68c28e9c4381f874acf0cd7a690d36098ac9db23 diff --git a/ginac/numeric.h b/ginac/numeric.h index 92755b3e..27153df3 100644 --- a/ginac/numeric.h +++ b/ginac/numeric.h @@ -30,7 +30,9 @@ class cl_N; // We want to include cln.h only in numeric.cpp in order to // avoid namespace pollution and keep compile-time low. +#ifndef NO_GINAC_NAMESPACE namespace GiNaC { +#endif // ndef NO_GINAC_NAMESPACE #define HASHVALUE_NUMERIC 0x80000001U @@ -77,6 +79,8 @@ class numeric : public basic friend numeric asinh(numeric const & x); friend numeric acosh(numeric const & x); friend numeric atanh(numeric const & x); + friend numeric zeta(numeric const & x); + friend numeric bernoulli(numeric const & n); friend numeric abs(numeric const & x); friend numeric mod(numeric const & a, numeric const & b); friend numeric smod(numeric const & a, numeric const & b); @@ -88,12 +92,6 @@ class numeric : public basic friend numeric isqrt(numeric const & x); friend numeric gcd(numeric const & a, numeric const & b); friend numeric lcm(numeric const & a, numeric const & b); - friend numeric const & numZERO(void); - friend numeric const & numONE(void); - friend numeric const & numTWO(void); - friend numeric const & numTHREE(void); - friend numeric const & numMINUSONE(void); - friend numeric const & numHALF(void); // member functions @@ -122,9 +120,9 @@ public: // functions overriding virtual functions from bases classes public: basic * duplicate() const; + void print(ostream & os, unsigned precedence=0) const; void printraw(ostream & os) const; void printtree(ostream & os, unsigned indent) const; - void print(ostream & os, unsigned precedence=0) const; void printcsrc(ostream & os, unsigned type, unsigned precedence=0) const; bool info(unsigned inf) const; ex evalf(int level=0) const; @@ -184,6 +182,8 @@ public: bool is_prime(void) const; bool is_rational(void) const; bool is_real(void) const; + bool is_cinteger(void) const; + bool is_crational(void) const; bool operator==(numeric const & other) const; bool operator!=(numeric const & other) const; bool operator<(numeric const & other) const; @@ -217,12 +217,6 @@ extern _numeric_digits Digits; // global functions -numeric const & numZERO(void); -numeric const & numONE(void); -numeric const & numTWO(void); -numeric const & numMINUSONE(void); -numeric const & numHALF(void); - numeric exp(numeric const & x); numeric log(numeric const & x); numeric sin(numeric const & x); @@ -240,10 +234,12 @@ numeric acosh(numeric const & x); numeric atanh(numeric const & x); numeric zeta(numeric const & x); numeric gamma(numeric const & x); +numeric psi(numeric const & x); numeric psi(numeric const & n, numeric const & x); numeric factorial(numeric const & n); numeric doublefactorial(numeric const & n); numeric binomial(numeric const & n, numeric const & k); +numeric bernoulli(numeric const & n); numeric abs(numeric const & x); numeric mod(numeric const & a, numeric const & b); @@ -302,6 +298,12 @@ inline bool is_rational(numeric const & x) inline bool is_real(numeric const & x) { return x.is_real(); } +inline bool is_cinteger(numeric const & x) +{ return x.is_cinteger(); } + +inline bool is_crational(numeric const & x) +{ return x.is_crational(); } + inline numeric real(numeric const & x) { return x.real(); } @@ -314,15 +316,8 @@ inline numeric numer(numeric const & x) inline numeric denom(numeric const & x) { return x.denom(); } -/* do we need this any more? */ -//inline numeric factorial(int n) -//{ return factorial(numeric(n)); } - -/* do we need this any more? */ -//inline numeric binomial(int n, int k) -//{ return binomial(numeric(n), numeric(k)); } +// numeric evaluation functions for class constant objects: -ex IEvalf(void); ex PiEvalf(void); ex EulerGammaEvalf(void); ex CatalanEvalf(void); @@ -330,9 +325,11 @@ ex CatalanEvalf(void); // utility functions inline const numeric &ex_to_numeric(const ex &e) { - return static_cast(*e.bp); + return static_cast(*e.bp); } +#ifndef NO_GINAC_NAMESPACE } // namespace GiNaC +#endif // ndef NO_GINAC_NAMESPACE #endif // ndef __GINAC_NUMERIC_H__