Source: https://afst.centre-mersenne.org/article/AFST_2020_6_29_2_431_0.pdf