These two methods should give the same result, but one terminates when the result is unchanged (to machine precision) while the other continues for the full 100 allowed cycles. Why?
x = -.01;
FixedPointList[(#^2 + x) &, x, 100]
(* {-0.01, -0.0099, -0.00990199, -0.00990195, -0.00990195, -0.00990195,
-0.00990195, -0.00990195, -0.00990195, -0.00990195, -0.00990195} *)
FixedPointList[(#^2 + y) &, y, 100] /. y -> -.01
(* {-0.01, -0.0099, -0.00990199, -0.00990195, -0.00990195, -0.00990195,
-0.00990195, -0.00990195, -0.00990195, -0.00990195, -0.00990195,
-0.00990195, -0.00990195, -0.00990195, -0.00990195, -0.00990195,
...
-0.00990195, -0.00990195, -0.00990195, -0.00990195, -0.00990195,
-0.00990195, -0.00990195, -0.00990195, -0.00990195, -0.00990195}*)
ygets substituted only at the very end, and this leads toFixedPointListbeing evaluated completely differently. I described a similar issue here. – Leonid Shifrin Feb 18 '16 at 22:49