Nestedsums library
Bsum Class Reference

Bsums arise from Hoelder convolutions. More...

#include <Bsum.h>

Inheritance diagram for Bsum:

Public Member Functions

 Bsum (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 &Z1) const
 
virtual GiNaC::ex expand_members (int level=0) const
 
GiNaC::ex get_index (void) const
 
GiNaC::ex get_letter_list (void) const
 
unsigned get_depth (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
 

Protected Attributes

GiNaC::ex n
 
GiNaC::ex letter_list
 

Friends

GiNaC::ex convert_Bsum_to_Ssum (const GiNaC::ex &C)
 
GiNaC::ex convert_Bsum_to_Zsum (const GiNaC::ex &C)
 

Detailed Description

Bsums arise from Hoelder convolutions.

A Bsum is defined by

\[
      \sum\limits_{i_1=n+1}^N
      \sum\limits_{i_2=i_1+1}^N ...
      \sum\limits_{i_k=i_{k-1}+1}^N
       \frac{x_1^{i_1}}{i_1^{m_1}}
       \frac{x_2^{i_2}}{i_2^{m_2}} ...
       \frac{x_k^{i_k}}{i_k^{m_k}}
 \]

This is equivalent to

\[
    \left( x_k^+ \right)^{m_k} \left( x_{k-1}^+ \right)^{m_{k-1}} ... 
    \left( x_1^+ \right)^{m_1} 
    \frac{x_k}{1-x_k} \frac{x_{k-1}x_k}{1-x_{k-1}x_k} ...
    \frac{x_1 ... x_k}{1-x_1 ... x_k}
    \left( x_1 ... x_k \right)^n 
 \]

up to terms of the form

\[
\left( x^+ \right)^m \frac{x}{1-x} x^N = \sum\limits_{i=N+1}^\infty \frac{x^i}{i^m}
\]

Member Function Documentation

◆ convert_to_Ssum_exvector()

ex convert_to_Ssum_exvector ( const GiNaC::exvector & Z1) const
virtual

The basic object is

\[
   \left( \sum\limits_{j_1=1}^{n'} \sum\limits_{j_2=1}^{j_1} ... \sum\limits_{n=1}^{j_{l-1}} 
          \frac{y_1^{j_1}}{j_1^{g_1}} ...  \frac{y_l^{n}}{n^{g_l}} \right)
     \sum\limits_{i_1=n+1}^{N} ... \sum\limits_{i_k = i_{k-1}+1}^{N}
     \frac{x_1^{i_1}}{i_1^{m_1}} ... \frac{x_k^{i_k}}{i_k^{m_k}}
\]

We use

\[
     \sum\limits_{i_1=n+1}^{N} ... \sum\limits_{i_k = i_{k-1}+1}^{N}
     \frac{x_1^{i_1}}{i_1^{m_1}} ... \frac{x_k^{i_k}}{i_k^{m_k}}
\]

\[
    = (-1)^k S(n;m_1,...m_k;x_1,...,x_k) - (-1)^k S(N;m_1,...m_k;x_1,...,x_k)
\]

\[
          + (-1)^k S(N;m_2,...m_k;x_2,...,x_k)
                   \sum\limits_{i_1=n+1}^{N} \frac{x_1^{i_1}}{i_1^{m_1}} 
          ...
\]

\[
          + (-1)^k S(N;m_k;x_k)
                   \sum\limits_{i_1=n+1}^{N} ... \sum\limits_{i_{k-1} = i_{k-2}+1}^{N}
                   \frac{x_1^{i_1}}{i_1^{m_1}} ... \frac{x_{k-1}^{i_{k-1}}}{i_{k-1}^{m_{k-1}}}
\]

◆ eval()

ex eval ( ) const
override

No automatic simplifications

◆ eval_ncmul()

ex eval_ncmul ( const GiNaC::exvector & v) const
overrideprotected

No automatic simplifications

◆ get_depth()

unsigned get_depth ( void ) const
inline

Returns the depth.

◆ get_index()

GiNaC::ex get_index ( void ) const
inline

Returns the upper summation limit.

◆ get_letter_list()

GiNaC::ex get_letter_list ( void ) const
inline

Returns the letter_list.


The documentation for this class was generated from the following files: