def get_supporting_points(exponent_bits, linear_bits):
    """
    Get supporting points that have a coarse exponential segments and fine 
    linear segments in the range of 0 to 0.5. The number of segments are 
    given as bits. This kind of support structure is optimal for icdf and 
    hardware implementations.
    """
    points = [0.5]
    for exp in range(2**exponent_bits):
        for lin in range(2**linear_bits):
            pos = (1 + lin * 2 ** (-linear_bits)) * 2 ** (-exp - 2)
            points.append(pos)
    return sorted(points)