Home Online Manual
Top
Back: decompopts
Forward: is_composite
FastBack:
FastForward:
Up: decomp_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.4.6.2 decompose

Procedure from library decomp.lib (see decomp_lib).

Usage:
decompose(f); f poly
decompose(f,1); f poly

Return:
poly, the input, if f is not a composite
ideal, if the input is a composite

Note:
computes a full decomposition if called by the second variant

See:
compose

Example:
 
LIB "decomp.lib";
ring r2 = 0,(x,y),dp;
decompose(((x3+2y)^6+x3+2y)^4);
==> _[1]=x24+4x19+6x14+4x9+x4
==> _[2]=x3+2y
// complete decomposition
decompose(((x3+2y)^6+x3+2y)^4,1);
==> _[1]=x2
==> _[2]=x2
==> _[3]=x6+x
==> _[4]=x3+2y
// -----------------------------------------------------------------------
// decompose over the integers
ring rZ = integer,x,dp;
decompose(compose(ideal(x3,x2+2x,x3+2)),1);
==> _[1]=x3
==> _[2]=x2-1
==> _[3]=x3+3
// -----------------------------------------------------------------------
// prime characteristic
ring r7 = 7,x,dp;
decompose(compose(ideal(x2+x,x7)));   // tame case
==> _[1]=x2+x
==> _[2]=x7
// -----------------------------------------------------------------------
decompose(compose(ideal(x7+x,x2)));   // wild case
==> x14+x2
// -----------------------------------------------------------------------
ring ry = (0,y),x,dp;     // y is now a parameter
compose(x2+yx+5,x5-2yx3+x);
==> x10+(-4y)*x8+(4y2+2)*x6+(y)*x5+(-4y)*x4+(-2y2)*x3+x2+(y)*x+5
decompose(_);
==> _[1]=1/4*x2+(-y2+20)/4
==> _[2]=2*x5+(-4y)*x3+2*x+(y)
// Usage of variable IMPROVE
ideal J = x2+10x, 64x7-112x5+56x3-7x, 4x3-3x;
decompose(compose(J),1);
==> _[1]=x2+10*x
==> _[2]=64*x7-112*x5+56*x3-7*x
==> _[3]=4*x3-3*x
int IMPROVE=0;
exportto(Decomp,IMPROVE);
decompose(compose(J),1);
==> _[1]=1099511627776*x2+10485760*x
==> _[2]=x7-7/64*x5+7/2048*x3-7/262144*x
==> _[3]=x3-3/4*x