Source: https://hal.inria.fr/docs/00/65/33/60/PDF/2011CLF22104-Graux.pdf