Source: http://fc.isima.fr/~duhamel/PROGLIN/exercices.pdf