#### 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);
    //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);
    //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);
    //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.1, 2025, generated by texi2html.