# Enzyme.jl Critical Issues with Basic Arithmetic Operations in Automatic Differentiation

**URL:** <https://discourse.julialang.org/t/enzyme-jl-critical-issues-with-basic-arithmetic-operations-in-automatic-differentiation/129216>\
**Category:** Numerics\
**Tags:** autodiff, enzyme\
**Created:** [May 21, 2025, 1:11pm UTC](https://discourse.julialang.org/t/enzyme-jl-critical-issues-with-basic-arithmetic-operations-in-automatic-differentiation/129216 "2025-05-21T13:11:06Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [May 23, 2025, 10:19am UTC](https://discourse.julialang.org/t/enzyme-jl-critical-issues-with-basic-arithmetic-operations-in-automatic-differentiation/129216/6 "2025-05-23T10:19:10Z")

</div>

To get your mind around the way forward and reverse modes work in Enzyme, this discussion might help:

> [@Do I understand Enzyme properly?](https://discourse.julialang.org/t/do-i-understand-enzyme-properly/97760):
>
> I think I finally have a grasp on how Enzyme works, but I would like an expert to validate this. Consider a possibly mutating vector function f(x, y) which outputs a scalar value z. We denote by x\_a and y\_a the contents of x and y after execution. Enzyme works with a Jacobian including all of these variables (defined by blocks): J = \begin{pmatrix} \partial x\_a / \partial x & \partial x\_a / \partial y \\ \partial y\_a / \partial x & \partial y\_a / \partial y \\ \partial z / \partial x & \partia…

---

_[View the full topic](https://discourse.julialang.org/t/enzyme-jl-critical-issues-with-basic-arithmetic-operations-in-automatic-differentiation/129216)._
