https://www.hpl.hp.com/techreports/2007/HPL-2007-28R1.pdf