Source: https://specfun.inria.fr/bostan/AlgoSumInt/slides/slides_lecture_a-sept-16-2020.pdf