|
| 1 | +# Supported algorithmic differentiation (autodiff) features |
| 2 | + |
| 3 | +The listings might be incomplete. If something is missing, it is not supported. Algorithmic differentiation is applied via the [`autodiff` metafunction](../cpp2/metafunctions.md#autodiff). Maybe the planned features are added in 2026. Do not wait for them. The autodif feature is a proof of concept implementation. |
| 4 | + |
| 5 | +** Reverse mode algorithmic differentiation is very experimental. Expect it to break. ** |
| 6 | + |
| 7 | +## Currently supported or planned features |
| 8 | + |
| 9 | +| Description | Status forward | Status reverse | |
| 10 | +| --- | --- | --- | |
| 11 | +| Type definitions (structures) | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 12 | +| Member values | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 13 | +| Member functions | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 14 | +| Function arguments | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 15 | +| Function return arguments | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 16 | +| Addition and multiplication | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 17 | +| Prefix addition and subtraction | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 18 | +| Static member function calls | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 19 | +| Member function calls | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 20 | +| Function calls | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 21 | +| Math functions (sin, cos, exp, sqrt) | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 22 | +| If else | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 23 | +| Return statement | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 24 | +| Intermediate variables | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 25 | +| Passive variables | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 26 | +| While loop | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 27 | +| Do while loop | <span style="color:green">Supported</span> | <span style="color:gray">Planned</span> | |
| 28 | +| For loop | <span style="color:green">Supported</span> | <span style="color:green">Supported</span> | |
| 29 | +| Template arguments | <span style="color:gray">Planned</span> | <span style="color:gray">Planned</span> | |
| 30 | +| Lambda functions | <span style="color:gray">Planned</span> | <span style="color:gray">Planned</span> | |
| 31 | + |
| 32 | + |
| 33 | + |
| 34 | + |
0 commit comments