Source: https://inria.hal.science/hal-02383654v1/file/ModernC.pdf