Source: http://www.universityofcalicut.info/SDE/VI_sem_maths_C_programming_for_mathematical_computing.pdf