Source: http://poncelet.sciences.univ-metz.fr/~agreg/sujets/XMP99-2cor.pdf