Source: https://dms.umontreal.ca/~fortierboum/papers/RapportFinal.pdf