Source: https://irma-web1.math.unistra.fr/~franck/cours/supervision/rapport/RapportDeStage_RousselDesmondNzoyem.pdf