Source: https://www-fourier.ujf-grenoble.fr/~dahmani/Files/Ens/TD_L3_CalcDiff/Cours_L3B_Calcul_Diff_Dahmani_2012.pdf