X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Finifcns.h;h=c49e8519cde033d6f90f23d9b74e83c4a82b8bea;hp=5ddc68da45a514db7ef2131cf07691183c281007;hb=HEAD;hpb=8cffcdf13d817a47f217f1a1043317d95969e070 diff --git a/ginac/inifcns.h b/ginac/inifcns.h index 5ddc68da..c49e8519 100644 --- a/ginac/inifcns.h +++ b/ginac/inifcns.h @@ -3,7 +3,7 @@ * Interface to GiNaC's initially known functions. */ /* - * GiNaC Copyright (C) 1999-2019 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2024 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 @@ -177,6 +177,32 @@ template<> inline bool is_the_function(const ex & x) return is_the_function(x) || is_the_function(x); } +/** Complete elliptic integral of the first kind. */ +DECLARE_FUNCTION_1P(EllipticK) + +/** Complete elliptic integral of the second kind. */ +DECLARE_FUNCTION_1P(EllipticE) + +// overloading at work: we cannot use the macros here +/** Iterated integral. */ +class iterated_integral2_SERIAL { public: static unsigned serial; }; +template +inline function iterated_integral(const T1& kernel_lst, const T2& lambda) { + return function(iterated_integral2_SERIAL::serial, ex(kernel_lst), ex(lambda)); +} +/** Iterated integral with explicit truncation. */ +class iterated_integral3_SERIAL { public: static unsigned serial; }; +template +inline function iterated_integral(const T1& kernel_lst, const T2& lambda, const T3& N_trunc) { + return function(iterated_integral3_SERIAL::serial, ex(kernel_lst), ex(lambda), ex(N_trunc)); +} +class iterated_integral_SERIAL; +template<> inline bool is_the_function(const ex& x) +{ + return is_the_function(x) || is_the_function(x); +} + + /** Factorial function. */ DECLARE_FUNCTION_1P(factorial)