Source: https://www.cs.princeton.edu/courses/archive/spring12/cos598C/svdchapter.pdf