Source: http://www.fil.univ-lille1.fr/~wegrzyno/portail/API1/Doc/Cours/chap4.pdf