Source: http://math.univ-lyon1.fr/~ciuperca/optim-M1-sitn/cours-optim-M1-sitn.pdf