26#ifndef __NESTEDSUMS_ZSUM_H__
27#define __NESTEDSUMS_ZSUM_H__
29#include "ginac/ginac.h"
53 class Zsum :
public GiNaC::basic
56 GINAC_DECLARE_REGISTERED_CLASS(
Zsum, GiNaC::basic)
60 explicit Zsum(
const GiNaC::ex & nc);
61 Zsum(
const GiNaC::ex & nc,
const GiNaC::ex & llc);
65 void archive(GiNaC::archive_node &node)
const override;
66 void read_archive(
const GiNaC::archive_node &node, GiNaC::lst &sym_lst)
override;
68 unsigned return_type(
void)
const override {
return GiNaC::return_types::noncommutative; }
70 void print(
const GiNaC::print_context & c,
unsigned level = 0)
const override;
71 unsigned precedence(
void)
const override {
return 60;}
72 GiNaC::ex
eval()
const override;
73 GiNaC::ex subs(
const GiNaC::exmap & m,
unsigned options = 0)
const override;
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;
83 virtual GiNaC::ex
shuffle_exvector(
const GiNaC::exvector & Z0,
const GiNaC::exvector & Z1,
const GiNaC::exvector & Z2)
const;
85 virtual GiNaC::ex
set_index(
const GiNaC::ex & i)
const;
93 virtual GiNaC::ex
get_head(
int k)
const;
94 virtual GiNaC::ex
get_tail(
int k)
const;
96 virtual GiNaC::ex
antipode(
void)
const;
98 virtual GiNaC::ex expand_members(
int level = 0)
const;
104 virtual GiNaC::ex prepend_letter(
const GiNaC::ex & lc)
const;
105 virtual GiNaC::ex prepend_letter(
const GiNaC::ex & nc,
const GiNaC::ex & lc)
const;
114 virtual GiNaC::ex
concat_two_sums(
const GiNaC::ex & Z1,
const GiNaC::ex & Z2)
const;
127 friend GiNaC::ex shuffle_Zsum(
const GiNaC::ex & Z1,
const GiNaC::ex & Z2);
128 friend GiNaC::ex convert_Zsum_to_Ssum(
const GiNaC::ex & Z1);
129 friend GiNaC::ex remove_trivial_Zsum(
const GiNaC::ex & expr);
136 GiNaC::ex letter_list;
139GINAC_DECLARE_UNARCHIVER(
Zsum);
170 return letter_list.nops();
178inline GiNaC::ex
create_Zsum(
const GiNaC::ex & nc,
const GiNaC::ex & llc)
180 return (
new Zsum(nc,llc))->setflag(GiNaC::status_flags::dynallocated);
183 GiNaC::ex
shuffle_Zsum(
const GiNaC::ex & Z1,
const GiNaC::ex & Z2);
Zsums form a Hopf algebra.
Definition Zsum.h:54
unsigned get_depth(void) const
Definition Zsum.h:168
virtual GiNaC::ex get_first_letter(void) const
Definition Zsum.cc:402
GiNaC::ex get_weight(void) const
Definition Zsum.cc:914
virtual GiNaC::ex get_tail(int k) const
Definition Zsum.cc:748
GiNaC::ex eval_ncmul(const GiNaC::exvector &v) const override
Definition Zsum.cc:209
GiNaC::ex get_letter_list(void) const
Definition Zsum.h:158
virtual GiNaC::ex cast_to_Ssum(void) const
Definition Zsum.cc:562
virtual GiNaC::ex remove_first_letter(void) const
Definition Zsum.cc:415
virtual GiNaC::ex append_letter_list(const GiNaC::ex &lc) const
Definition Zsum.cc:535
virtual GiNaC::ex eval_explicit() const
Definition Zsum.cc:879
virtual GiNaC::ex index_eq_one(void) const
Definition Zsum.cc:712
virtual GiNaC::ex concat_two_sums(const GiNaC::ex &Z1, const GiNaC::ex &Z2) const
Definition Zsum.cc:849
virtual GiNaC::ex multiply_letter_with_first_letter(const GiNaC::ex &lc) const
Definition Zsum.cc:824
virtual GiNaC::ex shuffle_exvector(const GiNaC::exvector &Z0, const GiNaC::exvector &Z1, const GiNaC::exvector &Z2) const
Definition Zsum.cc:352
virtual GiNaC::ex convert_to_Ssum_exvector(const GiNaC::exvector &Z0, const GiNaC::exvector &Z1) const
Definition Zsum.cc:296
virtual GiNaC::ex adjust_upper_limit_plus_one(void) const
Definition Zsum.cc:683
virtual GiNaC::ex append_letter(const GiNaC::ex &lc) const
Definition Zsum.cc:511
GiNaC::ex eval() const override
Definition Zsum.cc:176
GiNaC::ex get_index(void) const
Definition Zsum.h:148
virtual GiNaC::ex shift_plus_one(void) const
Definition Zsum.cc:582
virtual GiNaC::ex shift_minus_one(void) const
Definition Zsum.cc:592
virtual GiNaC::ex antipode(void) const
Definition Zsum.cc:773
virtual GiNaC::ex set_index(const GiNaC::ex &i) const
Definition Zsum.cc:572
virtual GiNaC::ex get_head(int k) const
Definition Zsum.cc:724
virtual GiNaC::ex adjust_upper_limit_upwards(const GiNaC::ex &i) const
Definition Zsum.cc:654
virtual GiNaC::ex adjust_upper_limit_downwards(const GiNaC::ex &i) const
Definition Zsum.cc:614
virtual GiNaC::ex multiply_letter_with_last_letter(const GiNaC::ex &lc) const
Definition Zsum.cc:797
Definition basic_letter.cc:35
ex remove_negative_degrees_from_Zsum(const ex &expr)
Definition Zsum.cc:1098
ex convert_Zsum_to_Ssum(const ex &Z1)
Definition Zsum.cc:978
ex shuffle_Zsum(const ex &Z1, const ex &Z2)
Definition Zsum.cc:939
ex Zsum_to_Ssum(const ex &expr)
Definition Zsum.cc:1026
ex remove_trivial_Zsum(const ex &expr)
Definition Zsum.cc:1144
GiNaC::ex create_Zsum(const GiNaC::ex &nc, const GiNaC::ex &llc)
Definition Zsum.h:178
ex create_Zsum_from_exvector(const ex &nc, const exvector &v)
Definition Zsum.cc:1009
ex shift_upper_limit_plus_one_for_Zsum(const ex &expr)
Definition Zsum.cc:1062