X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fnumeric.h;h=92755b3eb390978e263646552a15fec02a0a54de;hp=b8abb189d04d853f622952ac8b1c017084162416;hb=68c28e9c4381f874acf0cd7a690d36098ac9db23;hpb=66c0f31c678e6c1938d637636b230ea376c157c1 diff --git a/ginac/numeric.h b/ginac/numeric.h index b8abb189..92755b3e 100644 --- a/ginac/numeric.h +++ b/ginac/numeric.h @@ -1,7 +1,8 @@ /** @file numeric.h * - * Makes the interface to the underlying bignum package available. - * + * Makes the interface to the underlying bignum package available. */ + +/* * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify @@ -24,12 +25,15 @@ #include #include - -#define HASHVALUE_NUMERIC 0x80000001U +#include class cl_N; // We want to include cln.h only in numeric.cpp in order to // avoid namespace pollution and keep compile-time low. +namespace GiNaC { + +#define HASHVALUE_NUMERIC 0x80000001U + /** This class is used to instantiate a global object Digits which * behaves just like Maple's Digits. We need an object rather than a * dumber basic type since as a side-effect we let it change @@ -166,6 +170,7 @@ public: numeric power_dyn(numeric const & other) const { return power(other); } */ numeric inverse(void) const; + int csgn(void) const; int compare(numeric const & other) const; bool is_equal(numeric const & other) const; bool is_zero(void) const; @@ -233,7 +238,9 @@ numeric tanh(numeric const & x); numeric asinh(numeric const & x); numeric acosh(numeric const & x); numeric atanh(numeric const & x); +numeric zeta(numeric const & x); numeric gamma(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); @@ -262,6 +269,9 @@ struct numeric_fail inline numeric inverse(numeric const & x) { return x.inverse(); } +inline bool csgn(numeric const & x) +{ return x.csgn(); } + inline bool is_zero(numeric const & x) { return x.is_zero(); } @@ -317,7 +327,12 @@ ex PiEvalf(void); ex EulerGammaEvalf(void); ex CatalanEvalf(void); -#define ex_to_numeric(X) static_cast(*(X).bp) +// utility functions +inline const numeric &ex_to_numeric(const ex &e) +{ + return static_cast(*e.bp); +} +} // namespace GiNaC #endif // ndef __GINAC_NUMERIC_H__