canonicalize_radical() and evaluation return different answers
This code return proof that f^8(x)=f(f(f(f(f(f(f(f(x))))))))=x if f(x)=(x(sqrt(2)-1)-1)/(x-1):
def yx(x):
cst=sqrt(2)-1
if(x==1):
return -Infinity
return (cst*x-1)/(x-1)
tmp=x
for t in range(1,9):
tmp=(yx(tmp)).canonicalize_radical()
print(t, tmp.canonicalize_radical())
But this code looks directly at orbit of a point and shows that the statement above is false:
tmp=1.5
lst=[]
for t in range(1,9):
tmp=(yx(tmp)).canonicalize_radical()
print(t, tmp.canonicalize_radical().n(80))
lst.append((t,tmp.n()))
By giving the next output:
1 -0.75735931288071485359493
2 0.74754689570642838213503
3 2.7345908033901357840028
4 0.076504843704676803069591
5 1.0485281374238889523706
6 0.13254046199725214558851
7 -0.090964954340477885594991
8 0.35391568118499587774957
Why the output is so different? Bit precision don't seem to be a problem.