]> www.ginac.de Git - ginac.git/blobdiff - ginac/inifcns.h
Clarify types of test suite files.
[ginac.git] / ginac / inifcns.h
index b8349d1bba898d93e292debc4aef6ecbc313639d..41e222fb4d64e4f17ec10cd63e899613db78275b 100644 (file)
@@ -3,7 +3,7 @@
  *  Interface to GiNaC's initially known functions. */
 
 /*
- *  GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2020 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
@@ -20,8 +20,8 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#ifndef __GINAC_INIFCNS_H__
-#define __GINAC_INIFCNS_H__
+#ifndef GINAC_INIFCNS_H
+#define GINAC_INIFCNS_H
 
 #include "numeric.h"
 #include "function.h"
@@ -177,6 +177,32 @@ template<> inline bool is_the_function<psi_SERIAL>(const ex & x)
        return is_the_function<psi1_SERIAL>(x) || is_the_function<psi2_SERIAL>(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<typename T1, typename T2>
+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<typename T1, typename T2, typename T3>
+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<iterated_integral_SERIAL>(const ex& x)
+{
+       return is_the_function<iterated_integral2_SERIAL>(x) || is_the_function<iterated_integral3_SERIAL>(x);
+}
+
+
 /** Factorial function. */
 DECLARE_FUNCTION_1P(factorial)
 
@@ -212,4 +238,4 @@ ex convert_H_to_Li(const ex& parameterlst, const ex& arg);
 
 } // namespace GiNaC
 
-#endif // ndef __GINAC_INIFCNS_H__
+#endif // ndef GINAC_INIFCNS_H