Source: https://www.math.u-psud.fr/~lemaire/polyl3python.pdf