Source: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-901-inventions-and-patents-fall-2005/projects/online_fileshrng.pdf