Up Prev PrevTail Tail

#### 4.11 Variant: non-expanded standard form

The standard form structure described so far is used by default for the fully expanded expressions with common denominator. By setting on factor, off exp, or off mcd the slots mvar and ldeg may be used in an exended style:

• ldeg can be a negative number to represent a reciprocal factor,
off mcd; (x*a+y*b)/(a*b);

-1      -1
a  *y + b  *x

lisp ws;
(!*sq ((((a . -1) ((y . 1) . 1)) ((b . -1) ((x . 1) . 1))) . 1) t)

Here the numerator form of the standard quotient is a sum where each term is a product of one kernel with a positive and one kernel with a neagative exponent.

• mvar may be a standard form to represent a factored polynomial,
on factor; (x^2+y)^2*(y+1);

2     2
(x  + y) *(y + 1)

lisp ws;

(!*sq (((((((x . 2) . 1) ((y . 1) . 1)) . 2) (((((y . 1) . 1) . 1)
. 1) . 1))) . 1) t)

Here the numerator is a standard form in factored form where the inner polynomials (x + y) and (y + 1) are used as mvars, the first one with the exponent 2 and the second one with exponent 1.

Special functions to work with composite standard forms:

 sfp(m) test if m is a standard form (T) or a kernes(NIL) expnd(f) expand a standard form f

To distinguish between factored and expanded standard forms, use the predicated sfp: sfp applied to mvar of a standard form returns T if the main variable slot is occupied by a nested standard form. To expand a factored standard form you may use the funtion expnd; however, you need to turn the switch exp on during that call, e.g.

u:=expnd u where !*exp=t;

Don’t build non–expanded standard forms yourself – otherwise you run the risk to produce objects with a bad structure (e.g. a wrong term order) resulting in wrong computational results. You better rely on the standard routines for manipulating these objects – as soon as *exp is off and *factor is on they produce the product forms anyway.

 Up Prev PrevTail Front