https://web.archive.org/web/20220527185521/https://rufflewind.com/2016-12-30/reverse-mode-automatic-differentiation