GiNaC  1.6.2
inifcns.h
Go to the documentation of this file.
00001 
00005 /*
00006  *  GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany
00007  *
00008  *  This program is free software; you can redistribute it and/or modify
00009  *  it under the terms of the GNU General Public License as published by
00010  *  the Free Software Foundation; either version 2 of the License, or
00011  *  (at your option) any later version.
00012  *
00013  *  This program is distributed in the hope that it will be useful,
00014  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *  GNU General Public License for more details.
00017  *
00018  *  You should have received a copy of the GNU General Public License
00019  *  along with this program; if not, write to the Free Software
00020  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00021  */
00022 
00023 #ifndef GINAC_INIFCNS_H
00024 #define GINAC_INIFCNS_H
00025 
00026 #include "numeric.h"
00027 #include "function.h"
00028 #include "ex.h"
00029 
00030 namespace GiNaC {
00031 
00033 DECLARE_FUNCTION_1P(conjugate_function)
00034 
00035 
00036 DECLARE_FUNCTION_1P(real_part_function)
00037 
00039 DECLARE_FUNCTION_1P(imag_part_function)
00040     
00042 DECLARE_FUNCTION_1P(abs)
00043     
00045 DECLARE_FUNCTION_1P(step)
00046     
00048 DECLARE_FUNCTION_1P(csgn)
00049 
00051 DECLARE_FUNCTION_2P(eta)
00052 
00054 DECLARE_FUNCTION_1P(sin)
00055 
00057 DECLARE_FUNCTION_1P(cos)
00058 
00060 DECLARE_FUNCTION_1P(tan)
00061 
00063 DECLARE_FUNCTION_1P(exp)
00064 
00066 DECLARE_FUNCTION_1P(log)
00067 
00069 DECLARE_FUNCTION_1P(asin)
00070 
00072 DECLARE_FUNCTION_1P(acos)
00073 
00075 DECLARE_FUNCTION_1P(atan)
00076 
00078 DECLARE_FUNCTION_2P(atan2)
00079 
00081 DECLARE_FUNCTION_1P(sinh)
00082 
00084 DECLARE_FUNCTION_1P(cosh)
00085 
00087 DECLARE_FUNCTION_1P(tanh)
00088 
00090 DECLARE_FUNCTION_1P(asinh)
00091 
00093 DECLARE_FUNCTION_1P(acosh)
00094 
00096 DECLARE_FUNCTION_1P(atanh)
00097 
00099 DECLARE_FUNCTION_1P(Li2)
00100 
00102 DECLARE_FUNCTION_1P(Li3)
00103 
00105 DECLARE_FUNCTION_2P(zetaderiv)
00106 
00107 // overloading at work: we cannot use the macros here
00109 class zeta1_SERIAL { public: static unsigned serial; };
00110 template<typename T1>
00111 inline function zeta(const T1& p1) {
00112     return function(zeta1_SERIAL::serial, ex(p1));
00113 }
00115 class zeta2_SERIAL { public: static unsigned serial; };
00116 template<typename T1, typename T2>
00117 inline function zeta(const T1& p1, const T2& p2) {
00118     return function(zeta2_SERIAL::serial, ex(p1), ex(p2));
00119 }
00120 class zeta_SERIAL;
00121 template<> inline bool is_the_function<zeta_SERIAL>(const ex& x)
00122 {
00123     return is_the_function<zeta1_SERIAL>(x) || is_the_function<zeta2_SERIAL>(x);
00124 }
00125 
00126 // overloading at work: we cannot use the macros here
00128 class G2_SERIAL { public: static unsigned serial; };
00129 template<typename T1, typename T2>
00130 inline function G(const T1& x, const T2& y) {
00131     return function(G2_SERIAL::serial, ex(x), ex(y));
00132 }
00134 class G3_SERIAL { public: static unsigned serial; };
00135 template<typename T1, typename T2, typename T3>
00136 inline function G(const T1& x, const T2& s, const T3& y) {
00137     return function(G3_SERIAL::serial, ex(x), ex(s), ex(y));
00138 }
00139 class G_SERIAL;
00140 template<> inline bool is_the_function<G_SERIAL>(const ex& x)
00141 {
00142     return is_the_function<G2_SERIAL>(x) || is_the_function<G3_SERIAL>(x);
00143 }
00144 
00146 DECLARE_FUNCTION_2P(Li)
00147 
00148 
00149 DECLARE_FUNCTION_3P(S)
00150 
00152 DECLARE_FUNCTION_2P(H)
00153 
00155 DECLARE_FUNCTION_1P(lgamma)
00156 DECLARE_FUNCTION_1P(tgamma)
00157 
00159 DECLARE_FUNCTION_2P(beta)
00160 
00161 // overloading at work: we cannot use the macros here
00163 class psi1_SERIAL { public: static unsigned serial; };
00164 template<typename T1>
00165 inline function psi(const T1 & p1) {
00166     return function(psi1_SERIAL::serial, ex(p1));
00167 }
00169 class psi2_SERIAL { public: static unsigned serial; };
00170 template<typename T1, typename T2>
00171 inline function psi(const T1 & p1, const T2 & p2) {
00172     return function(psi2_SERIAL::serial, ex(p1), ex(p2));
00173 }
00174 class psi_SERIAL;
00175 template<> inline bool is_the_function<psi_SERIAL>(const ex & x)
00176 {
00177     return is_the_function<psi1_SERIAL>(x) || is_the_function<psi2_SERIAL>(x);
00178 }
00179     
00181 DECLARE_FUNCTION_1P(factorial)
00182 
00183 
00184 DECLARE_FUNCTION_2P(binomial)
00185 
00187 DECLARE_FUNCTION_1P(Order)
00188 
00189 ex lsolve(const ex &eqns, const ex &symbols, unsigned options = solve_algo::automatic);
00190 
00200 const numeric fsolve(const ex& f, const symbol& x, const numeric& x1, const numeric& x2);
00201 
00203 inline bool is_order_function(const ex & e)
00204 {
00205     return is_ex_the_function(e, Order);
00206 }
00207 
00211 ex convert_H_to_Li(const ex& parameterlst, const ex& arg);
00212 
00213 } // namespace GiNaC
00214 
00215 #endif // ndef GINAC_INIFCNS_H

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