Source: https://www.lamsade.dauphine.fr/~mayag/Chapitre_3_Controle_erreurs.pdf