The implicit layers approach to calculating gradients requires solving a linear system with A::Matrix \ x::Vector where A is the Jacobian dG/d(u,p) where G = [ F, det(J) ]. Let's make a plot of the percentage error between finite difference and autodiff as the condition number for A is increased. @rveltz I use the same linear solvers as you, do you know what happens when your matrix J = dF/du is ill-conditioned?