Source: https://resources.mpi-inf.mpg.de/departments/rg1/teaching/advancedc-ws08/script/lecture06.pdf