def METHOD_NAME(self):
    """
    Test the EA raymarching algorithm.
    """
    (
        rays_z,
        rays_densities,
        rays_features,
        depths_gt,
        features_gt,
        opacities_gt,
    ) = TestRaymarching._init_random_rays(
        n_rays=1000, n_pts_per_ray=9, device=None, dtype=torch.float32
    )
    # init the EA raymarcher
    raymarcher_ea = EmissionAbsorptionRaymarcher()
    # allow gradients for a differentiability check
    rays_densities.requires_grad = True
    rays_features.requires_grad = True
    # render the features first and check with gt
    data_render = raymarcher_ea(rays_densities, rays_features)
    features_render, opacities_render = data_render[..., :-1], data_render[..., -1]
    self.assertClose(opacities_render, opacities_gt)
    self.assertClose(
        features_render * opacities_render[..., None],
        features_gt * opacities_gt[..., None],
    )
    # get the depth map by rendering the ray z components and check with gt
    depths_render = raymarcher_ea(rays_densities, rays_z[..., None])[..., 0]
    self.assertClose(depths_render * opacities_render, depths_gt * opacities_gt)
    # check differentiability
    loss = features_render.mean()
    loss.backward()
    for field in (rays_densities, rays_features):
        self.assertTrue(torch.isfinite(field.grad.data).all())