Author: Adam Dunkels,Rajmohan Rajaraman,Thomas Moscibroda