# Singular          #### D.6.1.2 totalmultiplicities

Procedure from library `alexpoly.lib` (see alexpoly_lib).

Usage:
totalmultiplicities(INPUT); INPUT poly or list

Assume:
INPUT is either a REDUCED bivariate polynomial defining a plane curve singularity, or the output of `hnexpansion(f[,"ess"])`, or the list `hne` in the ring created by `hnexpansion(f[,"ess"])`, or the output of `develop(f)` resp. of `extdevelop(f,n)`, or a list containing the contact matrix and a list of integer vectors with the characteristic exponents of the branches of a plane curve singularity, or an integer vector containing the characteristic exponents of an irreducible plane curve singularity.

Return:
list `L` of three integer matrices. `L` is the incidence matrix of the resolution graph of the plane curve defined by INPUT, where the entries on the diagonal are the weights of the vertices of the graph and a negative entry corresponds to the strict transform of a branch of the curve. `L` is an integer matrix, which has for each vertex in the graph a row and for each branch of the curve a column. The entry in position [i,j] contains the total multiplicity of the j-th branch (i.e. the branch with weight -j in `L`) along the exceptional divisor corresponding to the i-th row in `L`. In particular, the i-th row contains the total multiplicities of the branches of the plane curve (defined by INPUT) along the exceptional divisor which corresponds to the i-th row in the incidence matrix `L`. `L` is an integer matrix which contains the (strict) multiplicities of the branches of the curve along the exceptional divisors in the same way as `L` contains the total multiplicities.

Note:
The total multiplicty of a branch along an exceptional divisor is the multiplicity with which this exceptional divisor occurs in the total transform of this branch under the resolution corresponding to the resolution graph.
In case the Hamburger-Noether expansion of the curve f is needed for other purposes as well it is better to calculate this first with the aid of `hnexpansion` and use it as input instead of the polynomial itself.
If you are not sure whether the INPUT polynomial is reduced or not, use `squarefree(INPUT)` as input instead.

Example:
 ```LIB "alexpoly.lib"; ring r=0,(x,y),ls; poly f1=(y2-x3)^2-4x5y-x7; poly f2=y2-x3; poly f3=y3-x2; totalmultiplicities(f1*f2*f3); ==> : ==> 1,0,1,0,0,0,0,0,1,0, ==> 0,2,1,0,0,0,0,0,0,0, ==> 1,1,3,0,1,0,0,0,0,0, ==> 0,0,0,4,1,0,1,0,0,0, ==> 0,0,1,1,5,1,0,0,0,0, ==> 0,0,0,0,1,-1,0,0,0,0, ==> 0,0,0,1,0,0,-2,0,0,0, ==> 0,0,0,0,0,0,0,2,1,0, ==> 1,0,0,0,0,0,0,1,3,1, ==> 0,0,0,0,0,0,0,0,1,-3 ==> : ==> 4,2,2, ==> 6,3,2, ==> 12,6,4, ==> 13,7,4, ==> 26,13,8, ==> 0,0,0, ==> 0,0,0, ==> 4,2,3, ==> 8,4,6, ==> 0,0,0 ==> : ==> 4,2,2, ==> 2,1,0, ==> 2,1,0, ==> 1,1,0, ==> 1,0,0, ==> 0,0,0, ==> 0,0,0, ==> 0,0,1, ==> 0,0,1, ==> 0,0,0 ``` 