Source: https://sites.uclouvain.be/archives-portail/cdc2016/cours-2016-LBRES2204.pdf