Source: https://pierrelux.net/documents/cours/2_2017/fonctions/fonctions.pdf