Nestedsums library
|
Zsums form a Hopf algebra. More...
#include <Zsum.h>
Public Member Functions | |
Zsum (const GiNaC::ex &nc) | |
Zsum (const GiNaC::ex &nc, const GiNaC::ex &llc) | |
void | archive (GiNaC::archive_node &node) const override |
void | read_archive (const GiNaC::archive_node &node, GiNaC::lst &sym_lst) override |
unsigned | return_type (void) const override |
void | print (const GiNaC::print_context &c, unsigned level=0) const override |
unsigned | precedence (void) const override |
GiNaC::ex | eval () const override |
GiNaC::ex | subs (const GiNaC::exmap &m, unsigned options=0) const override |
virtual GiNaC::ex | convert_to_Ssum_exvector (const GiNaC::exvector &Z0, const GiNaC::exvector &Z1) const |
virtual GiNaC::ex | shuffle_exvector (const GiNaC::exvector &Z0, const GiNaC::exvector &Z1, const GiNaC::exvector &Z2) const |
virtual GiNaC::ex | set_index (const GiNaC::ex &i) const |
virtual GiNaC::ex | shift_plus_one (void) const |
virtual GiNaC::ex | shift_minus_one (void) const |
virtual GiNaC::ex | adjust_upper_limit_downwards (const GiNaC::ex &i) const |
virtual GiNaC::ex | adjust_upper_limit_upwards (const GiNaC::ex &i) const |
virtual GiNaC::ex | adjust_upper_limit_plus_one (void) const |
virtual GiNaC::ex | index_eq_one (void) const |
virtual GiNaC::ex | get_head (int k) const |
virtual GiNaC::ex | get_tail (int k) const |
virtual GiNaC::ex | antipode (void) const |
virtual GiNaC::ex | expand_members (int level=0) const |
virtual GiNaC::ex | eval_explicit () const |
virtual GiNaC::ex | get_first_letter (void) const |
virtual GiNaC::ex | remove_first_letter (void) const |
virtual GiNaC::ex | remove_first_letter (const GiNaC::ex &nc) const |
virtual GiNaC::ex | prepend_letter (const GiNaC::ex &lc) const |
virtual GiNaC::ex | prepend_letter (const GiNaC::ex &nc, const GiNaC::ex &lc) const |
virtual GiNaC::ex | append_letter (const GiNaC::ex &lc) const |
virtual GiNaC::ex | append_letter_list (const GiNaC::ex &lc) const |
GiNaC::ex | get_index (void) const |
GiNaC::ex | get_letter_list (void) const |
unsigned | get_depth (void) const |
GiNaC::ex | get_weight (void) const |
Protected Member Functions | |
GiNaC::ex | eval_ncmul (const GiNaC::exvector &v) const override |
GiNaC::ex | derivative (const GiNaC::symbol &s) const override |
unsigned | calchash (void) const override |
virtual GiNaC::ex | cast_to_Ssum (void) const |
virtual GiNaC::ex | multiply_letter_with_last_letter (const GiNaC::ex &lc) const |
virtual GiNaC::ex | multiply_letter_with_first_letter (const GiNaC::ex &lc) const |
virtual GiNaC::ex | concat_two_sums (const GiNaC::ex &Z1, const GiNaC::ex &Z2) const |
Protected Attributes | |
GiNaC::ex | n |
GiNaC::ex | letter_list |
Friends | |
GiNaC::ex | shuffle_Zsum (const GiNaC::ex &Z1, const GiNaC::ex &Z2) |
GiNaC::ex | convert_Zsum_to_Ssum (const GiNaC::ex &Z1) |
GiNaC::ex | remove_trivial_Zsum (const GiNaC::ex &expr) |
Zsums form a Hopf algebra.
A Zsum is recursively defined by
with
for and
for
All letters should have their index set to _default_index.
|
virtual |
Adjusts the upper summation limit down to , e.g.
with .
For the empty sum we have
This routine assumes .
Reimplemented in Euler_Zagier_sum.
|
virtual |
|
virtual |
Adjusts the upper summation limit up to , e.g.
with .
For the empty sum we have
This routine assumes .
This routine might give rise to poles for some values of and should be used with care.
Reimplemented in Euler_Zagier_sum.
|
virtual |
Calculates the antipode.
Only for Zsums.
|
virtual |
Appends the letter lc to the letter_list.
|
virtual |
Appends the list lc to the letter_list.
|
protectedvirtual |
Creates a Ssum with the same upper summation index and the same letter_list.
This is a crude cast, something like reinterpret_cast.
|
protectedvirtual |
Takes Z1 as head and Z2 as tail and forms a new sum as the concatenation of the two.
|
virtual |
Method to convert a Zsum to a Ssum.
An efficient version for the conversion to Ssums, based on exvector (e.g. std::vector<GiNaC::ex> ). Z0 contains the result. Z1 is reversed order, so that we can use pop_back.
The basic formula is
Reimplemented in Euler_Zagier_sum.
|
override |
The simplifications are done in the following order:
|
virtual |
Explicit evaluation
|
overrideprotected |
A product of Zsums is simplified, if the last two have the same upper summation index. The function shuffle_Zsum is called for the multiplication.
A product is also simplified if the difference between the two upper summation indices is an integer. The factor with the "larger" upper summation index is converted to the "smaller" index with the help of the function Zsum::adjust_upper_limit_downwards. Note that the algorithm returns a product, where both factors have the "smaller" index.
|
inline |
Returns the depth.
|
virtual |
Returns the first letter from the letter_list.
|
virtual |
Returns from the Z-sum the head .
|
inline |
Returns the upper summation limit.
|
inline |
Returns the letter_list.
|
virtual |
Returns from the Z-sum the tail .
ex get_weight | ( | void | ) | const |
Returns the weight.
|
virtual |
Returns
for . For it returns
and for we have
|
protectedvirtual |
|
protectedvirtual |
|
virtual |
Returns a Zsum with the first letter removed from the letter_list.
Reimplemented in Euler_Zagier_sum.
|
virtual |
Sets the upper summation index to
Reimplemented in Euler_Zagier_sum.
|
virtual |
Returns
Reimplemented in Euler_Zagier_sum.
|
virtual |
Returns
Reimplemented in Euler_Zagier_sum.
|
virtual |
Method to multiply two Zsums.
An efficient version for the multiplication of Zsums, based on exvector (e.g. std::vector<GiNaC::ex> ). Z0 contains the result. Z1 and Z2 are in reversed order, so that we can use pop_back.
The basic formula is
Reimplemented in Euler_Zagier_sum.