Source: https://dms.umontreal.ca/~mat6150/Notes_de_cours/Pages79a99deMAT6150.pdf