a), logit(i_b, alpha), logit(i_u, alpha)
        # Compute the new alpha (controlled so it doesn&#39;t go to inf)
        alpha = 1 / 1000 * (i_u - i_u ** 2)
        # alpha = alpha.clamp(.01, 10.)
        # Obtain the corresponding i_a, i_b, i_u
        i_a, i_b, i_u = sig(a, alpha), sig(b, alpha), sig(u, alpha)
        
        # Compute the image of u, and update bounds
        fu = f(u, *args, **kwargs)
            
        lt, gt = fu &lt; x, fu &gt; x
        i_a = torch.where(lt, i_u, i_a)
        i_