This PR adds a safer M2L computation, as well as improved full fmm tests. This entails a change in the way the M2L operators are looked up during the main loop. A significant bug was found in the computation of hilbert keys, this has been fixed but a rigorous unit test is still missing. Furthermore, the regularisation in the computation of the inverse of the Check 2 Equivalent Kernel matrix was found to have a significant impact on the L2L operator, this needs further investigation.
Further questions remain, specifically whether there is a mistake in translating from a point to a hilbert key and back to a point. And vice versa. This will be the subject of a future PR though, and for now I am satisfied that the major bugs in the downward pass have been addressed.
This PR adds a safer M2L computation, as well as improved full fmm tests. This entails a change in the way the M2L operators are looked up during the main loop. A significant bug was found in the computation of hilbert keys, this has been fixed but a rigorous unit test is still missing. Furthermore, the regularisation in the computation of the inverse of the Check 2 Equivalent Kernel matrix was found to have a significant impact on the L2L operator, this needs further investigation.
Further questions remain, specifically whether there is a mistake in translating from a point to a hilbert key and back to a point. And vice versa. This will be the subject of a future PR though, and for now I am satisfied that the major bugs in the downward pass have been addressed.