# Differentiable Programming: Efficient Smoothing of Control-Flow-Induced Discontinuities

arXiv: https://arxiv.org/abs/2305.06692 · HTML: https://mlsanity.com/paper/2305.06692/

## Key facts

- Cited by 3 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 11 May 2023.

## Built on by (most cited first, 3 of 3)

- [Smoothing Methods for Automatic Differentiation Across Conditional Branches](https://mlsanity.com/paper/2310.03585/) (2023)
- [RobKiNet: Robotic Kinematics Informed Neural Network for Optimal Robot Configuration Prediction](https://mlsanity.com/paper/2402.16281/) (2024)
- [Automatic Gradient Estimation for Calibrating Crowd Models with Discrete Decision Making](https://mlsanity.com/paper/2404.04678/) (2024)

## Abstract (arXiv)

We want to obtain derivatives in discontinuous program code, where default Algorithmic Differentiation may not perform well. Specifically, we consider discontinuities induced by control flow statements, where meaningful derivatives should ideally be capable of representing the resulting kinks in the trajectory. To achieve this, one can interpolate the trajectory at the control flow statements before taking the derivative. We formulate a method to efficiently interpolate between all boundaries induced by control flow in program code. Theoretically, code can be viewed as a series of piecewise continuous functions applied in succession. These functions are nested inside one another and result in a function composition with several cases. We interpret this function composition as a tree and devise a heuristic to identify paths that are relevant to the interpolation. This allows us to conceive a language that smoothly interpolates control-flow statements automatically and efficiently, making it fully differentiable.
