Nestedsums library
transc_fct_A.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_A_H__
27#define __NESTEDSUMS_TRANSC_FCT_A_H__
28
29#include "ginac/ginac.h"
30
31namespace nestedsums {
32
35
44 class transcendental_fct_type_A : public GiNaC::basic
45 {
46 GINAC_DECLARE_REGISTERED_CLASS(transcendental_fct_type_A, GiNaC::basic)
47
48 // ctors
49 public:
50 transcendental_fct_type_A(const GiNaC::ex & xx, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom, const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom);
51 transcendental_fct_type_A(const GiNaC::ex & xx, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom, const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom, const GiNaC::ex & eps, int o, int f);
52
53 // functions overriding virtual functions from base classes
54 public:
55 void archive(GiNaC::archive_node &node) const override;
56 void read_archive(const GiNaC::archive_node &node, GiNaC::lst &sym_lst) override;
57
58 unsigned return_type(void) const override { return GiNaC::return_types::noncommutative; }
59
60 void print(const GiNaC::print_context & c, unsigned level = 0) const override;
61 unsigned precedence(void) const override {return 40;}
62 GiNaC::ex eval() const override;
63 GiNaC::ex subs(const GiNaC::exmap & m, unsigned options = 0) const override;
64
65 protected:
66 GiNaC::ex eval_ncmul(const GiNaC::exvector & v) const override;
67 GiNaC::ex derivative(const GiNaC::symbol & s) const override;
68 unsigned calchash(void) const override;
69
70 // non-virtual functions
71 public:
72 GiNaC::ex set_expansion(const GiNaC::ex & eps, int o) const;
73
74 // member variables :
75
76 protected:
77
78 GiNaC::ex x;
79 GiNaC::ex i_num;
80 GiNaC::ex i_denom;
81 GiNaC::ex pre_num;
82 GiNaC::ex pre_denom;
83
84 GiNaC::ex expansion_parameter;
85
86 int order;
87
88 mutable int flag_expand_status;
89 };
90
91GINAC_DECLARE_UNARCHIVER(transcendental_fct_type_A);
92
98inline GiNaC::ex create_transcendental_fct_type_A(const GiNaC::ex & xx, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom, const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom)
99 {
100 return (new transcendental_fct_type_A(xx,ii_num,ii_denom,pp_num,pp_denom))->setflag(GiNaC::status_flags::dynallocated);
101 }
102
108inline GiNaC::ex create_transcendental_fct_type_A(const GiNaC::ex & xx, const GiNaC::ex & ii_num, const GiNaC::ex & ii_denom, const GiNaC::ex & pp_num, const GiNaC::ex & pp_denom, const GiNaC::ex & eps, int o, int f)
109 {
110 return (new transcendental_fct_type_A(xx,ii_num,ii_denom,pp_num,pp_denom,eps,o,f))->setflag(GiNaC::status_flags::dynallocated);
111 }
112
113} // namespace nestedsums
114
115#endif // ndef __NESTEDSUMS_TRANSC_FCT_A_H__
Definition transc_fct_A.h:45
GiNaC::ex eval_ncmul(const GiNaC::exvector &v) const override
Definition transc_fct_A.cc:374
GiNaC::ex set_expansion(const GiNaC::ex &eps, int o) const
Definition transc_fct_A.cc:409
GiNaC::ex eval() const override
Definition transc_fct_A.cc:228
Definition basic_letter.cc:35
GiNaC::ex create_transcendental_fct_type_A(const GiNaC::ex &xx, const GiNaC::ex &ii_num, const GiNaC::ex &ii_denom, const GiNaC::ex &pp_num, const GiNaC::ex &pp_denom)
Definition transc_fct_A.h:98