Source: https://www.ensiie.fr/~gacogne/ch0.pdf