Source: https://www.math.u-bordeaux.fr/~jtong/Alg3DM2_2014.pdf