next up previous
Next: Partial derivation Up: Operations Previous: Contraction

Multiplication, division, raising to a power

The multiplication, division and raising to a power of indexed objects are executed by the usual *, / and ** operations of REDUCE. Let us examine the multiplication first:

myverbatim482

The terms to be multiplied cannot contain an abstract index more than one time with the same upper or lower position, namely for A(I)*B(I) one would obtain an error message. But because the operation of multiplication is left associative in REDUCE it may occur that a mistyping would not lead to an error message, for example

myverbatim486

The product is evaluated from left to right and interpreted as (Ai*Bi)*Ci, moreover due to the arbitrariness of the dummy indices the system changes them so that they would not interfere with the free index. Naturally the result may be wrong if one should choose to calculate as follows

myverbatim488

Division is accepted only by scalar valued expression. If in the course of the division the denominator can be factorized to the multiplication of non-scalar valued expressions and simplification is possible then naturally it happens only with scalar valued terms. The division by scalar valued indexed expression can be an expensive operation in computation time.

myverbatim490

myverbatim492

Only a scalar valued indexed expression can be raised to a higher power. The internal representation of the indexed quantities requires the system to execute all raising to an integer power. Therefore in such cases it is possible that there are not enough predefined abstract indices to use them as dummy indices. The system has to introduce new abstract indices constructing them from the letter I and a serial number, e.g I0, I1, I2, ... even if they do not appear in the output:

myverbatim498



gopher adminisztrator
Fri Sep 27 16:41:26 MET DST 1996