Source: http://www.normalesup.org/~vripoll/MAT1112_Anel_complements_optimisation.pdf