See http://www.uclouvain.be/cours-2015-linma2370.html