Source: https://www.fil.univ-lille1.fr/~decomite/ue/STAGE/documents/rm2010.pdf