https://opl.codingforstudent.com/how-to-be-directional-derivatives/