REDUCE

9.8 DECOMPOSE Operator

The DECOMPOSE operator takes a multivariate polynomial as argument, and returns an expression and a list of equations from which the original polynomial can be found by composition. Its syntax is:

     DECOMPOSE(EXPRN:polynomial):list.

For example:

     decompose(x^8-88*x^7+2924*x^6-43912*x^5+263431*x^4-  
                    218900*x^3+65690*x^2-7700*x+234)  
                   2                  2            2  
              -> {U  + 35*U + 234, U=V  + 10*V, V=X  - 22*X}  
                                     2  
     decompose(u^2+v^2+2u*v+1)  -> {W  + 1, W=U + V}

Users should note however that, unlike factorization, this decomposition is not unique.