# Singular

##### 7.5.7.0. bfctVarAnn
Procedure from library `dmodvar.lib` (see dmodvar_lib).

Usage:
bfctVarAnn(F[,gid,eng]); F an ideal, gid,eng optional ints

Return:
list of an ideal and an intvec

Purpose:
computes the roots of the Bernstein-Sato polynomial and their multiplicities for an affine algebraic variety defined by F = F[1],..,F[r].

Assume:
The basering is commutative and over a field in char 0.

Note:
In the output list, the ideal contains all the roots and the intvec their multiplicities.
If gid<>0, the ideal is used as given. Otherwise, and by default, a heuristically better suited generating set is used.
If eng<>0, `std` is used for GB computations, otherwise, and by default, `slimgb` is used.
Computational remark: The time of computation can be very different depending on the chosen generators of F, although the result is always the same.
Further note that in this proc, the annihilator of f^s in D[s] is computed and then a system of linear equations is solved by linear reductions in order to find the minimal polynomial of S = s(1)(1) + ... + s(P)(P). The resulted is shifted by 1-codim(Var(F)) following (BMS06).

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

Example:
 ```LIB "dmodvar.lib"; ring R = 0,(x,y,z),Dp; ideal F = x^2+y^3, z; bfctVarAnn(F); ==> [1]: ==> _[1]=-5/6 ==> _[2]=-1 ==> _[3]=-7/6 ==> [2]: ==> 1,1,1 ```