code: def agm_fixed(a, b, prec):
      """
      Fixed-point computation of agm(a,b), assuming
      a, b both close to unit magnitude.
      """
      i = 0
      while 1:
          anew = (a + b) >> 1
          if i > 4 and abs(a - anew) < 8:
              return a
          b = isqrt_fast(a * b)
          a = anew
          i += 1
      return a
  
imports: import math
  from bisect import bisect
  from .backend import xrange
  from .backend import MPZ, MPZ_ZERO, MPZ_ONE, MPZ_TWO, MPZ_FIVE, BACKEND
  from .libmpf import round_floor, round_ceiling, round_down, round_up, round_nearest, round_fast, ComplexResult, bitcount, bctable, lshift, rshift, giant_steps, sqrt_fixed, from_int, to_int, from_man_exp, to_fixed, to_float, from_float, from_rational, normalize, fzero, fone, fnone, fhalf, finf, fninf, fnan, mpf_cmp, mpf_sign, mpf_abs, mpf_pos, mpf_neg, mpf_add, mpf_sub, mpf_mul, mpf_div, mpf_shift, mpf_rdiv_int, mpf_pow_int, mpf_sqrt, reciprocal_rnd, negative_rnd, mpf_perturb, isqrt_fast
  from .libintmath import ifib
label_desc: Use image node_id 22 for calling a global function with example usage: agm_fixed(a, b, prec) and returns: a, a