Source: https://apc.u-paris.fr/~fcasse/Cours_PM3.pdf