CADICP(r,S1,A;A←,s,A#,B#,B←)
[Cylindrical algebraic decomposition initial clusters precomputation.
r>=2. S1 is a sample point of a cell in @E sup r-1@. A is a
(possibly empty) list of integral polynomials in r variables. Let
(M,b,I) be the representation of S1.
A←==@( A bar sub 1 ,..., A bar sub n )@, n>=0, is a list of
those elements @A sub i@ of A such that @A sub i (b,x sub r )@
has positive degree. s==@(s sub 1 ,..., s sub n )@, where
@s sub i@==@sign( A bar sub i (b,x sub r ))@.
A#==@( monic( A bar sub 1 (b,x sub r )) ,...,
monic( A bar sub n (b,x sub r )))@, where @monic( A bar sub i
(b,x sub r ))@ is the monic associate of @A bar sub i
(b,x sub r )@. B#==@(B sub 1 sup * ,...,
B sub m sup * )@, m>=0, is a coarsest squarefree basis for A#.
B←==@( B bar sub 1 ,..., B bar sub m )@,
where @B bar sub j@ is a list in increasing order
of the indices in A# of the elements of A# divisible by
@B sub j sup *@.]
safe M←,b,I,A',A1,B##,B#1,A##,j,s1.
(1) [Screen elements of A.] FIRST3(S1;M←,b,I); M=RPMAIP(1,M←);
A'=A; s=(); A#=(); A←=(); while A'~=() do
{ ADV(A';A1,A'); A#1=IPAFME(r,M,A1,b);
if PDEG(A#1)>0 then
{ s1=AFSIGN(M←,I,PLDCF(A#1)); s=COMP(s1,s);
A#=COMP(AFPMON(1,M,A#1),A#); A←=COMP(A1,A←) } };
s=INV(s); A#=INV(A#); A←=INV(A←).
(2) [Basis for A#.] B#=AFUPCB(M,A#); B←=();
B##=B#; while B##~=() do { B𡤁=();
ADV(B##;B#1,B##); A##=A#; j=0; repeat
{ ADV(A##;A#1,A##); j=j+1; AFPQR(1,M,A#1,B#1;Q,R);
if R==0 then B𡤁=COMP(j,B𡤁) } until A##==();
B𡤁=INV(B𡤁); B←=COMP(B𡤁,B←) }; B←=INV(B←);
return..