Cython implementation
Minor fix
`grad_func` optimisation
setup.py
`grad_func` and `inp_point` optimisations