Source: https://www2.eecs.berkeley.edu/Pubs/TechRpts/2007/EECS-2007-7.pdf