Singular Manual: num_prime_decom1

| #### D.8.7.10 num_prime_decom1 Procedure from library `recover.lib` (see recover_lib). Usage: num_prime_decom1(P,D,C); list P, int D, bigint C P a list of lists representing a witness point set representing an ideal I D should be a bound to the degree of the elements of the components of the prime decomposition of I C the number with which the images of the Veronese embeddings are multiplied Return: list of ideals: each of the ideals a prime component of the radical of I Note: Should only be called from a ring over the complex numbers. Example:
    LIB "recover.lib";
    //First, we compute a prime decomposition of the ideal I=x+y;
    ring R1=(complex,300,IUnit),(x,y),dp;
    list p1=1,-1;
    list P=list(p1);
    int D=2;
    bigint C=bigint(10)**300;
    num_prime_decom1(P,D,C);
    ==> [1]:
    ==>    _[1]=x+y
    //Now, we try to obtain a prime decomposition of the ideal I=(x+y)*(y+2z), (x+y)*(x-3z);
    ring R2=(complex,20,IUnit),(x,y,z),dp;
    p1=1.7381623928,-1.7381623928,0.2819238763;
    list p2=-3.578512854,2.385675236,-1.192837618;
    P=p1,p2;
    num_prime_decom1(P,D,10000);
    ==> [1]:
    ==>    _[1]=x+y
    ==> [2]:
    ==>    _[1]=-2*x-3*y
    ==>    _[2]=-y^2+x*z+z^2
    ==>    _[3]=x*z+y*z-z^2
    //Now, we look at the result of a purely symbolic algorithm
    ring r2=0,(x,y,z),dp;
    ideal I=(x+y)*(y+2z), (x+y)*(x-3z);
    primdecSY(I);
    ==> [1]:
    ==>    [1]:
    ==>       _[1]=x+y
    ==>    [2]:
    ==>       _[1]=x+y
    ==> [2]:
    ==>    [1]:
    ==>       _[1]=y+2z
    ==>       _[2]=x-3z
    ==>    [2]:
    ==>       _[1]=y+2z
    ==>       _[2]=x-3z
    //If you compare the results, you may find that they don't match.
    //Most likely, the hybrid algorithm got the second component wrong. This is due to the
    //way the algorithm looks for homogeneous polynomial relations, and the specific version
    //of the LLL algorithm used here (an implementation into Singular of a rather simple
    //version which allows real input). It looks in degree 1, finds one relation and is
    //thereafter unable to see a second one. Then it moves on to degree 2 and finds
    //relations containing degree-1 relations as a factor.

User manual for Singular version 4.4.0, 2024, generated by texi2html.