#include <basic_letter.h>
Inheritance diagram for basic_letter:

Public Member Functions | |
| basic_letter (const GiNaC::ex &l, const GiNaC::ex &d, const GiNaC::ex &o) | |
| basic_letter (const GiNaC::ex &l, const GiNaC::ex &d, const GiNaC::ex &o, const GiNaC::ex &i) | |
| 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 | concat (const GiNaC::ex &l) const |
| virtual GiNaC::ex | eval_explicit (int level=0) const |
| virtual GiNaC::ex | expand_members (int level=0) const |
| GiNaC::ex | get_scale (void) const |
| GiNaC::ex | get_degree (void) const |
| GiNaC::ex | get_offset (void) const |
| GiNaC::ex | get_index (void) const |
| GiNaC::ex | set_index (const GiNaC::ex &i) const |
| GiNaC::ex | forget_index (void) const |
| GiNaC::ex | shift_index (const GiNaC::ex &new_index) const |
| GiNaC::ex | index_eq_one (void) const |
| GiNaC::ex | shift_plus_one (void) const |
| GiNaC::ex | shift_minus_one (void) const |
| GiNaC::ex | degree_minus_one (void) const |
| GiNaC::ex | degree_plus_one (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 |
| virtual GiNaC::ex | concat_speedy (const GiNaC::ex &l) const |
Protected Attributes | |
| GiNaC::ex | scale |
| GiNaC::ex | degree |
| GiNaC::ex | offset |
| GiNaC::ex | index |
Friends | |
| GiNaC::ex | concat (const basic_letter &l1, const basic_letter &l2) |
The model for a basic_letter is
Here
is the scale,
the degree,
the offset and
a parameter (usually a summation index).
does not need to be specified. In this case the index is set to the default index.
Two basic_letters can be multiplied ("concatenated") to form a new basic_letter.
|
|
Concats two letters. The routine checks first if the argument is of type basic_letter. It then checks, if the indices are compatible (e.g., equal indices, or at least one index equal to the default one). If this is the case, the method concat_speedy is called, otherwise the routine returns unevaluated. |
|
|
Same as concat, but does not perform any checking. Assumes that the indices are the same or equal to the default one. The multiplication is performed if the two basic_letters have
If one of the degrees is zero, we have
If both degrees are positive, we have
If one degree is positive (
Finally, if both degrees are negative, we have
To avoid an infinite recursion in the last case, the algorithm does not commute two basic_letters.
The multiplication does not alter the offset, e.g. if we have The result gets the index from the first letter, if this one differs from _default_index, otherwise the result gets the index from the second letter. The routine returns unevaluated if
Reimplemented in letter, and unit_letter. |
|
|
Returns a basic_letter with degree-1 |
|
|
Returns a basic_letter with degree+1 |
|
|
If the offset is zero, evaluation returns a letter . If the index is an integer, the object is evaluated explicitly. Reimplemented in letter, and unit_letter. |
|
|
Explicit evaluation. |
|
|
A product of two basic_letter's is simplified, if
A product is also simplified if the difference between the two indices is an integer, according to
where |
|
|
Sets the index to the default index. |
|
|
Returns the degree |
|
|
Returns the index |
|
|
Returns the offset |
|
|
Returns the scale |
|
|
Returns
|
|
|
Sets the index to |
|
|
Adjusts the index according to
|
|
|
Returns a basic_letter with offset-1 |
|
|
Returns a basic_letter with offset+1 |
|
||||||||||||
|
Concat two letters. |
1.3.7