GiNaC 1.8.7
inifcns.h
Go to the documentation of this file.
1
5/*
6 * GiNaC Copyright (C) 1999-2023 Johannes Gutenberg University Mainz, Germany
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef GINAC_INIFCNS_H
24#define GINAC_INIFCNS_H
25
26#include "numeric.h"
27#include "function.h"
28#include "ex.h"
29
30namespace GiNaC {
31
33DECLARE_FUNCTION_1P(conjugate_function)
34
35
36DECLARE_FUNCTION_1P(real_part_function)
37
38
39DECLARE_FUNCTION_1P(imag_part_function)
40
41
43
44
46
47
49
50
52
53
55
56
58
59
61
62
64
65
67
68
70
71
73
74
76
77
79
80
82
83
85
86
88
89
91
92
94
95
97
98
100
101
103
104
105DECLARE_FUNCTION_2P(zetaderiv)
106
107// overloading at work: we cannot use the macros here
109class zeta1_SERIAL { public: static unsigned serial; };
110template<typename T1>
111inline function zeta(const T1& p1) {
112 return function(zeta1_SERIAL::serial, ex(p1));
113}
115class zeta2_SERIAL { public: static unsigned serial; };
116template<typename T1, typename T2>
117inline function zeta(const T1& p1, const T2& p2) {
118 return function(zeta2_SERIAL::serial, ex(p1), ex(p2));
119}
120class zeta_SERIAL;
121template<> inline bool is_the_function<zeta_SERIAL>(const ex& x)
122{
123 return is_the_function<zeta1_SERIAL>(x) || is_the_function<zeta2_SERIAL>(x);
124}
125
126// overloading at work: we cannot use the macros here
128class G2_SERIAL { public: static unsigned serial; };
129template<typename T1, typename T2>
130inline function G(const T1& x, const T2& y) {
131 return function(G2_SERIAL::serial, ex(x), ex(y));
132}
134class G3_SERIAL { public: static unsigned serial; };
135template<typename T1, typename T2, typename T3>
136inline function G(const T1& x, const T2& s, const T3& y) {
137 return function(G3_SERIAL::serial, ex(x), ex(s), ex(y));
138}
139class G_SERIAL;
140template<> inline bool is_the_function<G_SERIAL>(const ex& x)
141{
142 return is_the_function<G2_SERIAL>(x) || is_the_function<G3_SERIAL>(x);
143}
144
147
148
150
151
153
154
157
158
160
161// overloading at work: we cannot use the macros here
163class psi1_SERIAL { public: static unsigned serial; };
164template<typename T1>
165inline function psi(const T1 & p1) {
166 return function(psi1_SERIAL::serial, ex(p1));
167}
169class psi2_SERIAL { public: static unsigned serial; };
170template<typename T1, typename T2>
171inline function psi(const T1 & p1, const T2 & p2) {
172 return function(psi2_SERIAL::serial, ex(p1), ex(p2));
173}
174class psi_SERIAL;
175template<> inline bool is_the_function<psi_SERIAL>(const ex & x)
176{
177 return is_the_function<psi1_SERIAL>(x) || is_the_function<psi2_SERIAL>(x);
178}
179
181DECLARE_FUNCTION_1P(EllipticK)
182
183
184DECLARE_FUNCTION_1P(EllipticE)
185
186// overloading at work: we cannot use the macros here
188class iterated_integral2_SERIAL { public: static unsigned serial; };
189template<typename T1, typename T2>
190inline function iterated_integral(const T1& kernel_lst, const T2& lambda) {
191 return function(iterated_integral2_SERIAL::serial, ex(kernel_lst), ex(lambda));
192}
194class iterated_integral3_SERIAL { public: static unsigned serial; };
195template<typename T1, typename T2, typename T3>
196inline function iterated_integral(const T1& kernel_lst, const T2& lambda, const T3& N_trunc) {
197 return function(iterated_integral3_SERIAL::serial, ex(kernel_lst), ex(lambda), ex(N_trunc));
198}
199class iterated_integral_SERIAL;
200template<> inline bool is_the_function<iterated_integral_SERIAL>(const ex& x)
201{
202 return is_the_function<iterated_integral2_SERIAL>(x) || is_the_function<iterated_integral3_SERIAL>(x);
203}
204
205
208
209
211
212
214
215ex lsolve(const ex &eqns, const ex &symbols, unsigned options = solve_algo::automatic);
216
226const numeric fsolve(const ex& f, const symbol& x, const numeric& x1, const numeric& x2);
227
229inline bool is_order_function(const ex & e)
230{
231 return is_ex_the_function(e, Order);
232}
233
237ex convert_H_to_Li(const ex& parameterlst, const ex& arg);
238
239} // namespace GiNaC
240
241#endif // ndef GINAC_INIFCNS_H
Generalized multiple polylogarithm.
Definition: inifcns.h:128
static unsigned serial
Definition: inifcns.h:128
Generalized multiple polylogarithm with explicit imaginary parts.
Definition: inifcns.h:134
static unsigned serial
Definition: inifcns.h:134
Lightweight wrapper for GiNaC's symbolic objects.
Definition: ex.h:72
The class function is used to implement builtin functions like sin, cos... and user defined functions...
Definition: function.h:674
Complete elliptic integral of the first kind.
Definition: inifcns.h:188
Iterated integral with explicit truncation.
Definition: inifcns.h:194
Polylogarithm and multiple polylogarithm.
Definition: inifcns.h:163
static unsigned serial
Definition: inifcns.h:163
Derivatives of Psi-function (aka polygamma-functions).
Definition: inifcns.h:169
static unsigned serial
Definition: inifcns.h:169
@ automatic
Let the system choose.
Definition: flags.h:146
Complex conjugate.
Definition: inifcns.h:109
static unsigned serial
Definition: inifcns.h:109
Alternating Euler sum or colored MZV.
Definition: inifcns.h:115
static unsigned serial
Definition: inifcns.h:115
Interface to GiNaC's light-weight expression handles.
unsigned options
Definition: factor.cpp:2475
ex x
Definition: factor.cpp:1610
Interface to class of symbolic functions.
#define is_ex_the_function(OBJ, FUNCNAME)
Definition: function.h:765
#define DECLARE_FUNCTION_1P(NAME)
Definition: function.h:34
#define DECLARE_FUNCTION_3P(NAME)
Definition: function.h:46
#define DECLARE_FUNCTION_2P(NAME)
Definition: function.h:40
Definition: add.cpp:38
const numeric atan(const numeric &x)
Numeric arcustangent.
Definition: numeric.cpp:1508
ex lsolve(const ex &eqns, const ex &symbols, unsigned options)
Factorial function.
Definition: inifcns.cpp:1079
bool is_the_function< G_SERIAL >(const ex &x)
Definition: inifcns.h:140
const numeric cosh(const numeric &x)
Numeric hyperbolic cosine (trigonometric function).
Definition: numeric.cpp:1563
const numeric abs(const numeric &x)
Absolute value.
Definition: numeric.cpp:2320
const numeric asin(const numeric &x)
Numeric inverse sine (trigonometric function).
Definition: numeric.cpp:1488
function zeta(const T1 &p1)
Definition: inifcns.h:111
bool is_the_function< iterated_integral_SERIAL >(const ex &x)
Definition: inifcns.h:200
function iterated_integral(const T1 &kernel_lst, const T2 &lambda)
Definition: inifcns.h:190
const numeric tanh(const numeric &x)
Numeric hyperbolic tangent (trigonometric function).
Definition: numeric.cpp:1572
const numeric Li2(const numeric &x)
Definition: numeric.cpp:1705
int csgn(const numeric &x)
Definition: numeric.h:260
const numeric acos(const numeric &x)
Numeric inverse cosine (trigonometric function).
Definition: numeric.cpp:1497
function psi(const T1 &p1)
Definition: inifcns.h:165
const cln::cl_N tgamma(const cln::cl_N &x)
Definition: numeric.cpp:2067
const numeric sinh(const numeric &x)
Numeric hyperbolic sine (trigonometric function).
Definition: numeric.cpp:1554
const numeric binomial(const numeric &n, const numeric &k)
The Binomial coefficients.
Definition: numeric.cpp:2145
const numeric exp(const numeric &x)
Exponential function.
Definition: numeric.cpp:1439
const numeric factorial(const numeric &n)
Factorial combinatorial function.
Definition: numeric.cpp:2113
const numeric acosh(const numeric &x)
Numeric inverse hyperbolic cosine (trigonometric function).
Definition: numeric.cpp:1590
const numeric cos(const numeric &x)
Numeric cosine (trigonometric function).
Definition: numeric.cpp:1470
const numeric fsolve(const ex &f_in, const symbol &x, const numeric &x1, const numeric &x2)
Find a real root of real-valued function f(x) numerically within a given interval.
Definition: inifcns.cpp:1166
const numeric atanh(const numeric &x)
Numeric inverse hyperbolic tangent (trigonometric function).
Definition: numeric.cpp:1599
bool is_the_function< psi_SERIAL >(const ex &x)
Definition: inifcns.h:175
bool is_the_function< zeta_SERIAL >(const ex &x)
Definition: inifcns.h:121
const numeric log(const numeric &x)
Natural logarithm.
Definition: numeric.cpp:1450
const numeric sin(const numeric &x)
Numeric sine (trigonometric function).
Definition: numeric.cpp:1461
ex convert_H_to_Li(const ex &parameterlst, const ex &arg)
Converts a given list containing parameters for H in Remiddi/Vermaseren notation into the correspondi...
const numeric asinh(const numeric &x)
Numeric inverse hyperbolic sine (trigonometric function).
Definition: numeric.cpp:1581
const numeric tan(const numeric &x)
Numeric tangent (trigonometric function).
Definition: numeric.cpp:1479
const cln::cl_N lgamma(const cln::cl_N &x)
The Gamma function.
Definition: numeric.cpp:2039
bool is_order_function(const ex &e)
Check whether a function is the Order (O(n)) function.
Definition: inifcns.h:229
numeric step(const numeric &x)
Definition: numeric.h:257
function G(const T1 &x, const T2 &y)
Definition: inifcns.h:130
Makes the interface to the underlying bignum package available.

This page is part of the GiNaC developer's reference. It was generated automatically by doxygen. For an introduction, see the tutorial.