Skip to content

Separation criterion for list 3 far switches target and source radii

Here:

inline bool meets_sep_smaller_criterion(
    coord_t root_extent,
    coord_vec_t target_center, int target_level,
    coord_vec_t source_center, int source_level,
    coord_t stick_out_factor)
{
    coord_t target_rad = LEVEL_TO_RAD(target_level);
    coord_t source_rad = LEVEL_TO_RAD(source_level);
    coord_t max_allowed_center_l_inf_dist = (
        3 * target_rad
        + (1 + stick_out_factor) * source_rad);

    coord_t l_inf_dist = 0;
    %for i in range(dimensions):
        l_inf_dist = fmax(
            l_inf_dist,
            fabs(target_center.s${i} - source_center.s${i}));
    %endfor

    return l_inf_dist >= max_allowed_center_l_inf_dist * (1 - 8 * COORD_T_MACH_EPS);
}

I am pretty sure the line should be

    coord_t max_allowed_center_l_inf_dist = (
        3 * source_rad
        + (1 + stick_out_factor) * target_rad);

because the stickout is on the target and not the source.