Source: http://www.dms.umontreal.ca/~owens/MAT6470/Notes_de_cours/MAT6470_cours1.pdf