Nestedsums library
transc_fct_C.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_C_H__
27#define __NESTEDSUMS_TRANSC_FCT_C_H__
28
29#include "ginac/ginac.h"
30
31namespace nestedsums {
32
35
47 class transcendental_fct_type_C : public GiNaC::basic
48 {
49 GINAC_DECLARE_REGISTERED_CLASS(transcendental_fct_type_C, GiNaC::basic)
50
51 // ctors
52 public:
53 transcendental_fct_type_C(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
54 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
55 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom);
56 transcendental_fct_type_C(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
57 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
58 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom, const GiNaC::ex & eps, int o, int f);
59
60 // functions overriding virtual functions from base classes
61 public:
62 void archive(GiNaC::archive_node &node) const override;
63 void read_archive(const GiNaC::archive_node &node, GiNaC::lst &sym_lst) override;
64
65 unsigned return_type(void) const override { return GiNaC::return_types::noncommutative; }
66
67 void print(const GiNaC::print_context & c, unsigned level = 0) const override;
68 unsigned precedence(void) const override {return 40;}
69 GiNaC::ex eval() const override;
70 GiNaC::ex subs(const GiNaC::exmap & m, unsigned options = 0) const override;
71
72 protected:
73 GiNaC::ex eval_ncmul(const GiNaC::exvector & v) const override;
74 GiNaC::ex derivative(const GiNaC::symbol & s) const override;
75 unsigned calchash(void) const override;
76
77 // non-virtual functions
78 public:
79 GiNaC::ex set_expansion(const GiNaC::ex & eps, int o) const;
80 GiNaC::ex shift_plus_one(void) const;
81
82 // member variables :
83
84 protected:
85
86 GiNaC::ex x1;
87 GiNaC::ex x2;
88 GiNaC::ex i_num;
89 GiNaC::ex i_denom;
90 GiNaC::ex ij_num;
91 GiNaC::ex ij_denom;
92 GiNaC::ex pre_num;
93 GiNaC::ex pre_denom;
94
95 GiNaC::ex expansion_parameter;
96
97 int order;
98
99 mutable int flag_expand_status;
100 };
101
102GINAC_DECLARE_UNARCHIVER(transcendental_fct_type_C);
103
109inline GiNaC::ex create_transcendental_fct_type_C(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
110 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
111 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom)
112 {
113 return (new transcendental_fct_type_C(xx1,xx2,ii_num,ii_denom,iijj_num,iijj_denom,pp_num,pp_denom)
114 )->setflag(GiNaC::status_flags::dynallocated);
115 }
116
122inline GiNaC::ex create_transcendental_fct_type_C(const GiNaC::ex & xx1, const GiNaC::ex & xx2, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom,
123 const GiNaC::ex & iijj_num, const GiNaC::ex & iijj_denom,
124 const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom, const GiNaC::ex & eps, int o, int f)
125 {
126 return (new transcendental_fct_type_C(xx1,xx2,ii_num,ii_denom,iijj_num,iijj_denom,pp_num,pp_denom,eps,o,f)
127 )->setflag(GiNaC::status_flags::dynallocated);
128 }
129
130} // namespace nestedsums
131
132#endif // ndef __NESTEDSUMS_TRANSC_FCT_C_H__
Definition transc_fct_C.h:48
GiNaC::ex eval_ncmul(const GiNaC::exvector &v) const override
Definition transc_fct_C.cc:554
GiNaC::ex set_expansion(const GiNaC::ex &eps, int o) const
Definition transc_fct_C.cc:590
GiNaC::ex eval() const override
Definition transc_fct_C.cc:280
GiNaC::ex shift_plus_one(void) const
Definition transc_fct_C.cc:616
Definition basic_letter.cc:35
GiNaC::ex create_transcendental_fct_type_C(const GiNaC::ex &xx1, const GiNaC::ex &xx2, const GiNaC::ex &ii_num, const GiNaC::ex &ii_denom, const GiNaC::ex &iijj_num, const GiNaC::ex &iijj_denom, const GiNaC::ex &pp_num, const GiNaC::ex &pp_denom)
Definition transc_fct_C.h:109