Source: https://www.math.u-bordeaux.fr/~jcouveig/cours/poly910.pdf