Source: http://www.liafa.jussieu.fr/~sperifel/enseignement/algoL3/td9.pdf