The main routine
computes
. There is a subroutine
Lookup
which computes a suitable origin
for
. There is a subroutine
Plan
which determines the proper sequence
of shift operators and inverse shift operators
,
,
, and
which should be applied to
to produce
. After the plan is computed, a loop executes the plan by calling subroutines
Shift
and
Unshift. The
Unshift
routine calls a routine
Contig
which computes contiguity relations and also calls
Shift.
For aesthetic reasons (i.e. pretty answers) all the routines work, until the very
last moment, in terms of a
module basis
. In fact, in the current implementation,
is always (z),
is a positive integer, and the answer will be
after each step of the main loop where
is a coefficient vector. The basis
is generally some vector of expressions involving special functions. The derivative
matrix
which has elements in
satisfies the equation
where
. At the last moment,
is replaced by
since we are interested in computing
instead of
. Often,
, but not always.
