Source: http://igm.univ-mlv.fr/~fpetit/download/html/PREAO-JS-par6.pdf