Source: https://people.irisa.fr/Bernard.Cousin/Cours/G2.pdf