def eta(alpha):
return (alpha*alpha).trace()
def find_small(alpha):
while True:
plus=a*alpha
minus=alpha/a
if eta(plus)<eta(alpha):
alpha=plus
continue
if eta(minus)<eta(alpha):
alpha=minus
continue
return alpha
def eta_ideal(J):
return eta(find_small(J.gen(0)))