and
.
More...
#include <transcendental_B.h>
Public Member Functions | |
| transcendental_sum_type_B (const GiNaC::ex &nn, const GiNaC::ex &i, const GiNaC::ex &l, const GiNaC::ex &lr, const GiNaC::ex &v, const GiNaC::ex &vr, const GiNaC::ex &ss, const GiNaC::ex &ssr, const GiNaC::ex &eps, int o, int f) | |
| void | archive (GiNaC::archive_node &node) const |
| void | read_archive (const GiNaC::archive_node &node, GiNaC::lst &sym_lst) |
| unsigned | return_type (void) const |
| void | print (const GiNaC::print_context &c, unsigned level=0) const |
| unsigned | precedence (void) const |
| GiNaC::ex | eval (int level=0) const |
| GiNaC::ex | subs (const GiNaC::exmap &m, unsigned options=0) const |
| virtual GiNaC::ex | eval_explicit (int level=0) const |
| GiNaC::ex | set_expansion (void) const |
| GiNaC::ex | distribute_over_subsum (void) const |
| GiNaC::ex | distribute_over_letter (void) const |
| GiNaC::ex | distribute_over_subsum_rev (void) const |
| GiNaC::ex | distribute_over_letter_rev (void) const |
| GiNaC::ex | shift_plus_one (void) const |
| GiNaC::ex | shift_plus_one_rev (void) const |
Protected Member Functions | |
| GiNaC::ex | eval_ncmul (const GiNaC::exvector &v) const |
| GiNaC::ex | derivative (const GiNaC::symbol &s) const |
| unsigned | calchash (void) const |
Protected Attributes | |
| GiNaC::ex | n |
| GiNaC::ex | index |
| GiNaC::ex | letter |
| GiNaC::ex | letter_rev |
| GiNaC::ex | lst_of_gammas |
| GiNaC::ex | lst_of_gammas_rev |
| GiNaC::ex | subsum |
| GiNaC::ex | subsum_rev |
| GiNaC::ex | expansion_parameter |
| int | order |
| int | flag_expand_status |
and
.
The definition is
Here,
,
,
,
and all
,
,
and
are integers. In addition
is non-negative or
. Simmilar,
is non-negative or
.
Note that the upper summation limit is
. The upper summation limit should not be infinity.
|
|
letter is allowed to contain a sum of products (e.g. an expression in expanded form). Each term can contain scalars and basic_letters. This routine converts the transcendental_sum_type_B to a canonical form, so that afterwards letter only contains a basic_letter. |
|
|
letter_rev is allowed to contain a sum of products (e.g. an expression in expanded form). Each term can contain scalars and basic_letters. This routine converts the transcendental_sum_type_B to a canonical form, so that afterwards letter_rev only contains a basic_letter. |
|
|
subsum is allowed to contain a sum of products (e.g. an expression in expanded form). Each term can contain scalars, basic_letters, list_of_tgammas, Zsums or Ssums. This routine converts the transcendental_sum_type_B to a canonical form, so that afterwards subsum only contains a Zsum. The algorithm is based on the following steps:
|
|
|
subsum_rev is allowed to contain a sum of products (e.g. an expression in expanded form). Each term can contain scalars, basic_letters, list_of_tgammas, Zsums or Ssums. This routine converts the transcendental_sum_type_B to a canonical form, so that afterwards subsum_rev only contains a Zsum. The algorithm is based on the following steps:
|
|
|
Simplifications, which are always performed are:
If flag_expand_status == expand_status::expansion_required, the evaluation routine performs a set of consistency checks:
If one of the tests fails, the object is put into a zombie state. If flag_expand_status == expand_status::check_for_poles, it assures that the Gamma functions in the numerator do not give rise to poles. The functions shift_plus_one() and shift_plus_one_rev() are used. If flag_expand_status == expand_status::expand_gamma_functions, the Gamma functions are expanded into Euler Zagier sums. This is done by setting the expansion_required flag in the ratio_of_tgamma class. If flag_expand_status == expand_status::do_partial_fractioning, the sum is of the form
For
For
For
For
For
If flag_expand_status == expand_status::do_outermost_sum, the sum is of the form
If the depth of
Otherwise we have the recursion
|
|
|
Explicit evaluation |
|
|
No automatic simplifications |
|
|
Sets the flag flag_expand_status to expand_status::expansion_required. The object is then automatically expanded up to the order specified in the member variable order. |
|
|
This routine performs the substitution index -> index - 1. The formula used is
This routine is called from eval/expansion_required, and eval/check_for_poles. |
|
|
This routine takes out the term at index = n - 1. The formula used is
This routine is called from eval/expansion_required, and eval/check_for_poles. |
1.3.7