|
Nestedsums library
|
A harmonic sum is a special case of a Ssum. More...
#include <harmonic_sum.h>
Public Member Functions | |
| harmonic_sum (const GiNaC::ex &nc) | |
| harmonic_sum (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 |
| GiNaC::return_type_t | return_type_tinfo () const override |
| void | print (const GiNaC::print_context &c, unsigned level=0) const override |
| GiNaC::ex | eval () const override |
| GiNaC::ex | convert_to_Zsum_exvector (const GiNaC::exvector &Z0, const GiNaC::exvector &Z1) const override |
| GiNaC::ex | shuffle_exvector (const GiNaC::exvector &Z0, const GiNaC::exvector &Z1, const GiNaC::exvector &Z2) const override |
| GiNaC::ex | set_index (const GiNaC::ex &i) const override |
| GiNaC::ex | shift_plus_one (void) const override |
| GiNaC::ex | shift_minus_one (void) const override |
| GiNaC::ex | adjust_upper_limit_downwards (const GiNaC::ex &i) const override |
| GiNaC::ex | adjust_upper_limit_upwards (const GiNaC::ex &i) const override |
| GiNaC::ex | adjust_upper_limit_plus_one (void) const override |
| GiNaC::ex | remove_first_letter (void) const override |
| GiNaC::ex | remove_first_letter (const GiNaC::ex &nc) const override |
Public Member Functions inherited from Ssum | |
| Ssum (const GiNaC::ex &nc) | |
| Ssum (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 | refine_exvector (unsigned q, const GiNaC::exvector &Z0, const GiNaC::exvector &Z1) const |
| virtual GiNaC::ex | refine (unsigned q) 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 int | flag_remove_negative_degrees (void) const |
| virtual GiNaC::ex | remove_negative_degrees (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 | 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 |
Additional Inherited Members | |
Protected Member Functions inherited from Ssum | |
| 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_Zsum (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 inherited from Ssum | |
| GiNaC::ex | n |
| GiNaC::ex | letter_list |
A harmonic sum is a special case of a Ssum.
Harmonic sums are recursively defined by
![\[
S_{m_1,...,m_k}(n) = \sum\limits_{i=1}^n \frac{1}{i^{m_1}} S_{m_2,...,m_k}(i)
\]](form_78.png)
with
![\[
S(n) = 1
\]](form_79.png)
for 
Harmonic sums can be converted to Euler-Zagier sums (and vice versa).
|
overridevirtual |
Adjusts the upper summation limit 

![\[
S(n;m_1,...;1,...) = S(i;m_1,...;1,...)
+ \sum\limits_{j=0}^{n-i-1} \frac{1}{(i+j+1)^{m_1}} S(i+j+1;m_2,...;1,...)
\]](form_72.png)
with 
For the empty sum we have
![\[
S(n) = S(i)
\]](form_73.png)
This routine assumes 
Reimplemented from Ssum.
|
overridevirtual |
|
overridevirtual |
Adjusts the upper summation limit 

![\[
S(n;m_1,...;1,...) = S(i;m_1,...;1,...)
\mbox{} - \sum\limits_{j=0}^{i-n-1} \frac{1}{(i-j)^{m_1}} S(i-j;m_2,...;1,...)
\]](form_75.png)
with 
For the empty sum we have
![\[
S(n) = S(i)
\]](form_73.png)
This routine assumes 
This routine might give rise to poles for some values of 
Reimplemented from Ssum.
|
overridevirtual |
A more efficient version for the conversion to Euler_Zagier_sums, based on exvector (e.g. std::vector<GiNaC::ex> ). Z0 contains the result. Z1 is reversed order, so that we can use pop_back.
Reimplemented from Ssum.
|
override |
The simplifications are done in the following order:
|
overridevirtual |
Reimplemented from Ssum.
|
overridevirtual |
Returns a harmonic_sum with the first letter removed from the letter_list.
Reimplemented from Ssum.
|
overridevirtual |
Sets the upper summation index to 
Reimplemented from Ssum.
|
overridevirtual |
Returns 
Reimplemented from Ssum.
|
overridevirtual |
Returns 
Reimplemented from Ssum.
|
overridevirtual |
A more efficient version for the multiplication of harmonic_sums, 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.
Reimplemented from Ssum.