def expand(n): if n <= 0: return (0,1) if not n in lookup.keys(): frac = addf((2,1), expand(n-1)) lookup[n] = (frac[1], frac[0]) return lookup[n]
def eval_continued(cont, depth): if depth <= 0: return (0,1) n = cont.next() f = addf( (n,1), eval_continued(cont, depth-1) ) f = (f[1], f[0]) return f
def expand(n): if n <= 0: return (0, 1) if not n in lookup.keys(): frac = addf((2, 1), expand(n - 1)) lookup[n] = (frac[1], frac[0]) return lookup[n]
def sqrt2(n): return addf( (1,1), expand(n) )
def eval_continued_fraction(fraction, depth): assert(len(fraction) == 2) return addf( (fraction[0],1), eval_continued(fraction[1], depth) )
def sqrt2(n): return addf((1, 1), expand(n))