def METHOD_NAME(variants_vec_backends_once_rgb):
    total = int(1e8)
    sampler = mi.load_dict({'type': 'independent', 'sample_count': total})
    sampler.seed(seed = 4, wavefront_size = total)
    si = dr.zeros(mi.SurfaceInteraction3f)
    si = mi.SurfaceInteraction3f()
    si.p = [0, 0, 0]
    si.n = [0, 0, 1]
    si.sh_frame = mi.Frame3f(si.n)
    ctx = mi.BSDFContext()
    for long_roughness in list(dr.linspace(mi.Float, 0.2, 1.0, 4)):
        for azi_roughness in list(dr.linspace(mi.Float, 0.4, 1.0, 3)):
            si.wi = mi.warp.square_to_uniform_hemisphere(sampler.next_2d())
            bsdf = mi.load_dict({
                'type': 'hair',
                'sigma_a': {
                    'type': 'rgb',
                    'value': mi.ScalarColor3f(0.25)
                },
                'longitudinal_roughness': long_roughness,
                'azimuthal_roughness': azi_roughness,
            })
            def helper_Li(vec):
                return vec.z * vec.z
            bs, spec = bsdf.sample(ctx, si, sampler.next_1d(), sampler.next_2d())
            importance = spec * helper_Li(bs.wo)
            wo = mi.warp.square_to_uniform_sphere(sampler.next_2d())
            uniform = bsdf.eval(ctx, si, wo) * helper_Li(wo) * (dr.pi * 4)
            assert dr.allclose(dr.sum(importance.y), dr.sum(uniform.y), rtol=0.05, atol=1e-3)