
7.5.4.0. checkRoot
Procedure from library dmod.lib (see dmod_lib).
 Usage:
 checkRoot(f,alpha [,S,eng]); poly f, number alpha, string S, int eng
 Return:
 int
 Assume:
 Basering is a commutative ring, alpha is a positive rational number.
 Purpose:
 check whether a negative rational number alpha is a root of the global
BernsteinSato polynomial of f and compute its multiplicity,
with the algorithm given by S and with the Groebner basis engine given by eng.
 Note:
 The annihilator of f^s in D[s] is needed and hence it is computed with the
algorithm by Briancon and Maisonobe. The value of a string S can be
'alg1' (default)  for the algorithm 1 of [LM08]
'alg2'  for the algorithm 2 of [LM08]
Depending on the value of S, the output of type int is:
'alg1': 1 only if alpha is a root of the global BernsteinSato polynomial
'alg2': the multiplicity of alpha as a root of the global BernsteinSato
polynomial of f. If alpha is not a root, the output is 0.
If eng <>0, std is used for Groebner basis computations,
otherwise (and by default) slimgb is used.
 Display:
 If printlevel=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.
Example:
 LIB "dmod.lib";
printlevel=0;
ring r = 0,(x,y),Dp;
poly F = x^4+y^5+x*y^4;
checkRoot(F,11/20); // 11/20 is a root of bf
==> 1
poly G = x*y;
checkRoot(G,1,"alg2"); // 1 is a root of bg with multiplicity 2
==> 2

