I want to generate all the fractions between 1 and limit (with
limit>1) in an orderly fashion, without duplicates.

def all_ratios(limit):
    s = set()
    hi = 1.0
    lo = 1.0
    while True:
        if hi/lo not in s:
            s.add(hi/lo)
            yield (hi,lo)
        hi += 1
        if hi/lo > limit:
            lo += 1
            hi = lo

I use a set to keep from giving duplicates; but is this safe?  In C
they always tell you not to trust floating point equality comparisons,
since they may not work as you expect.  My code seems fine for the
limited amount I've tested, but I'm curious: is there a gaurantee
about sets of floats?  Or a warning?

Thanks,

Tom

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to