Source: http://web.stanford.edu/group/moler/theses/JWGThesis.pdf