Source: http://vergil.chemistry.gatech.edu/resources/programming/pdf/TIJ2.pdf