Source: https://perso.esiee.fr/~jardinp/pdf/Codage-FC2.pdf