# Singular

##### 7.5.2.0. bfctAnn
Procedure from library `bfun.lib` (see bfun_lib).

Usage:
bfctAnn(f [,a,b,c]); f a poly, a, b, c optional ints

Return:
list of ideal and intvec

Purpose:
computes the roots of the Bernstein-Sato polynomial b(s) for the
hypersurface defined by f.

Assume:
The basering is commutative and of characteristic 0.

Background:
In this proc, Ann(f^s) is computed and then a system of linear
equations is solved by linear reductions.

Note:
In the output list, the ideal contains all the roots and the intvec
their multiplicities.
If a<>0, only f is appended to Ann(f^s), otherwise, and by default,
f and all its partial derivatives are appended.
If b<>0, `std` is used for GB computations, otherwise, and by
default, `slimgb` is used.
If c<>0, `std` is used for Groebner basis computations of ideals
<I+J> when I is already a Groebner basis of <I>.
Otherwise, and by default the engine determined by the switch b is used.
Note that in the case c<>0, the choice for b will be overwritten only
for the types of ideals mentioned above.
This means that if b<>0, specifying c has no effect.

Display:
If printlevel=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.

Example:
 ```LIB "bfun.lib"; ring r = 0,(x,y),dp; poly f = x^2+y^3+x*y^2; bfctAnn(f); ==> [1]: ==> _[1]=-5/6 ==> _[2]=-1 ==> _[3]=-7/6 ==> [2]: ==> 1,1,1 def R = reiffen(4,5); setring R; RC; // the Reiffen curve in 4,5 ==> xy4+y5+x4 bfctAnn(RC,0,1); ==> [1]: ==> _[1]=-9/20 ==> _[2]=-11/20 ==> _[3]=-13/20 ==> _[4]=-7/10 ==> _[5]=-17/20 ==> _[6]=-9/10 ==> _[7]=-19/20 ==> _[8]=-1 ==> _[9]=-21/20 ==> _[10]=-11/10 ==> _[11]=-23/20 ==> _[12]=-13/10 ==> _[13]=-27/20 ==> [2]: ==> 1,1,1,1,1,1,1,1,1,1,1,1,1 ```