I am implementing an adaptive 3D FMM with the "basic" $O(p^4)$ translation operators. I am looking for clarification on the multipole-to-multipole (M2M) translation operator. I will explain my understanding: In equation 6.26, the arguments $\alpha,\beta$ of the multipole are the coordinates of the child box with respect to the coordinates of the parent box shifted to the origin. Furthermore, the multipole moments $O_{j-n}^{k-m}$ are those of the child, which account for all particles contained in the child and were calculated using (6) where the arguments of the multipole $\alpha_i,\beta_i$ are the coordinates of a particle in the child box with respect to the child box shifted to the origin.
In my implementation, I am testing the M2M operator by evaluating the multipole expansion (eq. 5) at a point sufficiently far from the parent of a child box using (1) the multipole moments of the child box and (2) the multipole moments of the child box translated to the parent box. That is, the only particles under consideration in the parent box are those that are also contained in the child box. My understanding is that the resulting potentials are analytically exact; the only error between these values should be attributed to floating-point error. However, the relative error that my test returns is quite high, see below (I repeat steps (1) and (2) for each of the 4 boxes created in an adaptive refinement).
I wonder if this error is attributed to my understanding of the fundamental theorems as described above? I have tested other aspects of the codebase that I believe could also affect the error.