Absorb precompute_M2L_Helper into precompute_M2L so that matrix_M2L_Helper turns to a local variable
Use a dedicated function map_matrix_index() to assemble matrix_M2L from matrix_M2L_Helper
For Helmholtz kernel, keep matrix_M2L for only one level in memory during precomputation and evaluate to save memory, now M2L kernel start with loading matrix of a specific level