Source: https://www.math.univ-toulouse.fr/~jroyer/TD/2013-14-L2PS/L2PS-poly.pdf