Source: https://cours.etsmtl.ca/SEG/mbeaudin/mat805/Bloc2/Resume2b.pdf