00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
#ifndef __NESTEDSUMS_TRANSC_FCT_A_H__
00027
#define __NESTEDSUMS_TRANSC_FCT_A_H__
00028
00029
#include "ginac/ginac.h"
00030
00031
namespace nestedsums {
00032
00035
00044 class transcendental_fct_type_A :
public GiNaC::basic
00045 {
00046 GINAC_DECLARE_REGISTERED_CLASS(
transcendental_fct_type_A, GiNaC::basic)
00047
00048
00049
public:
00050
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);
00051
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);
00052
00053
00054
public:
00055
void archive(GiNaC::archive_node &node)
const;
00056
void read_archive(
const GiNaC::archive_node &node, GiNaC::lst &sym_lst);
00057
00058
unsigned return_type(
void)
const {
return GiNaC::return_types::noncommutative; }
00059
00060
void print(
const GiNaC::print_context & c,
unsigned level = 0)
const;
00061
unsigned precedence(
void)
const {
return 40;}
00062 GiNaC::ex
eval(
int level = 0)
const;
00063 GiNaC::ex subs(
const GiNaC::exmap & m,
unsigned options = 0)
const;
00064
00065
protected:
00066 GiNaC::ex
eval_ncmul(
const GiNaC::exvector & v)
const;
00067 GiNaC::ex derivative(
const GiNaC::symbol & s)
const;
00068
unsigned calchash(
void)
const;
00069
00070
00071
public:
00072 GiNaC::ex
set_expansion(
const GiNaC::ex & eps,
int o)
const;
00073
00074
00075
00076
protected:
00077
00078 GiNaC::ex x;
00079 GiNaC::ex i_num;
00080 GiNaC::ex i_denom;
00081 GiNaC::ex pre_num;
00082 GiNaC::ex pre_denom;
00083
00084 GiNaC::ex expansion_parameter;
00085
00086
int order;
00087
00088
mutable int flag_expand_status;
00089 };
00090
00091 GINAC_DECLARE_UNARCHIVER(
transcendental_fct_type_A);
00092
00098 inline 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)
00099 {
00100
return (
new transcendental_fct_type_A(xx,ii_num,ii_denom,pp_num,pp_denom))->setflag(GiNaC::status_flags::dynallocated);
00101 }
00102
00108 inline 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)
00109 {
00110
return (
new transcendental_fct_type_A(xx,ii_num,ii_denom,pp_num,pp_denom,eps,o,f))->setflag(GiNaC::status_flags::dynallocated);
00111 }
00112
00113 }
00114
00115
#endif // ndef __NESTEDSUMS_TRANSC_FCT_A_H__