Source: http://w3.cran.univ-lorraine.fr/perso/benoit.marx/IS2_ENSGSI_POLY.pdf