Source: https://www.lama.univ-savoie.fr/pagesmembres/briand/MATH703/L3_cours.pdf