I would assume that they come from numerical precision issue.
Unfortunately, the more computations you do, the more small floating point error increase.
Given the large number of operations that you do to evaluate g0, I’m not surprised that you only get 3 digits of precision (remember that float is 6 digits precision for a single operation).