Source: http://www.utc.fr/~vpelassa/TD3_C.pdf