Source: http://www.lacim.uqam.ca/~bedard/notes/cours_MAT4112/MAT4112_notes_v2007.pdf