Формально - автодифференциронивание должно работать для почти любого разумного кода. Но для достижения хорошей точности и эффективности строить всё на основе только самых базовых арифметических операций часто не получается. Приходится задавать хотя бы некоторые дополнительные функции в виде примитивов, т.е. явным образом реализовывать производные для них. Примеры: производные всяких sin/cos/exp задаётся аналитически, а не вычисляется автоматически - хотя это в принципе возможно, ведь эти функции реализованы через базовую арифметику. Алгоритмы типа fft или решателей уравнений тоже часто имеет смысл вручную аналитически дифференцировать.
"Алгоритмы типа fft или решателей уравнений тоже часто имеет смысл вручную аналитически дифференцировать"
так вот я как раз про это и спрашивал. Я не понимаю, как такое аналитически дифференцируется. Есть какие-то ссылки?