Nestedsums library
transc_fct_D.h
Go to the documentation of this file.
1
8/*
9 * Copyright (C) 2001-2017 Stefan Weinzierl
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */
25
26#ifndef __NESTEDSUMS_TRANSC_FCT_D_H__
27#define __NESTEDSUMS_TRANSC_FCT_D_H__
28
29#include "ginac/ginac.h"
30
31namespace nestedsums {
32
35
48 class transcendental_fct_type_D : public GiNaC::basic
49 {
50 GINAC_DECLARE_REGISTERED_CLASS(transcendental_fct_type_D, GiNaC::basic)
51
52 // ctors
53 public:
54 transcendental_fct_type_D(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
55 const GiNaC::ex & jj_num, const GiNaC::ex & jj_denom,
56 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
57 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom);
58 transcendental_fct_type_D(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
59 const GiNaC::ex & jj_num, const GiNaC::ex & jj_denom,
60 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
61 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom, const GiNaC::ex & eps, int o, int f);
62
63 // functions overriding virtual functions from base classes
64 public:
65 void archive(GiNaC::archive_node &node) const override;
66 void read_archive(const GiNaC::archive_node &node, GiNaC::lst &sym_lst) override;
67
68 unsigned return_type(void) const override { return GiNaC::return_types::noncommutative; }
69
70 void print(const GiNaC::print_context & c, unsigned level = 0) const override;
71 unsigned precedence(void) const override {return 40;}
72 GiNaC::ex eval() const override;
73 GiNaC::ex subs(const GiNaC::exmap & m, unsigned options = 0) const override;
74
75 protected:
76 GiNaC::ex eval_ncmul(const GiNaC::exvector & v) const override;
77 GiNaC::ex derivative(const GiNaC::symbol & s) const override;
78 unsigned calchash(void) const override;
79
80 // non-virtual functions
81 public:
82 GiNaC::ex set_expansion(const GiNaC::ex & eps, int o) const;
83 GiNaC::ex shift_plus_one(void) const;
84
85 // member variables :
86
87 protected:
88
89 GiNaC::ex x1;
90 GiNaC::ex x2;
91 GiNaC::ex i_num;
92 GiNaC::ex i_denom;
93 GiNaC::ex j_num;
94 GiNaC::ex j_denom;
95 GiNaC::ex ij_num;
96 GiNaC::ex ij_denom;
97 GiNaC::ex pre_num;
98 GiNaC::ex pre_denom;
99
100 GiNaC::ex expansion_parameter;
101
102 int order;
103
104 mutable int flag_expand_status;
105 };
106
107GINAC_DECLARE_UNARCHIVER(transcendental_fct_type_D);
108
114inline GiNaC::ex create_transcendental_fct_type_D(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
115 const GiNaC::ex & jj_num, const GiNaC::ex & jj_denom,
116 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
117 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom)
118 {
119 return (new transcendental_fct_type_D(xx1,xx2,ii_num,ii_denom,jj_num,jj_denom,iijj_num,iijj_denom,pp_num,pp_denom)
120 )->setflag(GiNaC::status_flags::dynallocated);
121 }
122
128inline GiNaC::ex create_transcendental_fct_type_D(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
129 const GiNaC::ex & jj_num, const GiNaC::ex & jj_denom,
130 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
131 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom, const GiNaC::ex & eps, int o, int f)
132 {
133 return (new transcendental_fct_type_D(xx1,xx2,ii_num,ii_denom,jj_num,jj_denom,iijj_num,iijj_denom,pp_num,pp_denom,eps,o,f)
134 )->setflag(GiNaC::status_flags::dynallocated);
135 }
136
137} // namespace nestedsums
138
139#endif // ndef __NESTEDSUMS_TRANSC_FCT_D_H__
Definition transc_fct_D.h:49
GiNaC::ex eval_ncmul(const GiNaC::exvector &v) const override
Definition transc_fct_D.cc:710
GiNaC::ex set_expansion(const GiNaC::ex &eps, int o) const
Definition transc_fct_D.cc:747
GiNaC::ex eval() const override
Definition transc_fct_D.cc:313
GiNaC::ex shift_plus_one(void) const
Definition transc_fct_D.cc:775
Definition basic_letter.cc:35
GiNaC::ex create_transcendental_fct_type_D(const GiNaC::ex &xx1, const GiNaC::ex &xx2, const GiNaC::ex &ii_num, const GiNaC::ex &ii_denom, const GiNaC::ex &jj_num, const GiNaC::ex &jj_denom, const GiNaC::ex &iijj_num, const GiNaC::ex &iijj_denom, const GiNaC::ex &pp_num, const GiNaC::ex &pp_denom)
Definition transc_fct_D.h:114