Source: http://www.enseignement.polytechnique.fr/informatique/profs/Jean-Eric.Pin/PDF/XC5.pdf