Source: http://helios.mi.parisdescartes.fr/~bgalerne/m1_optimisation/poly_optimisationv1.pdf