Source: http://dumas.perso.math.cnrs.fr/MA100_poly.pdf