Source: https://www.normalesup.org/~glafon/eiffel15/exos_calcul.pdf