Substituting y=−2x−1 into the original equation gives
f(0)=22x−11f(f(x))f(−2x−1).(1)
So, if f(−2x)=0 for at least one x then also f(0)=0. Then taking x=0 and arbitrary y in the original identity gives f(1+2y)=0, i.e., f≡0.
Assume in the rest that f(−2x)=0 for every x. Substituting y=−2x into the original equation gives f(−2x)=22x1f(f(x))f(−2x). Hence, for every x,
f(f(x))=22x(2)
Substituting (2) into the original equation and taking y=0, we obtain
f(2x)=f(f(x))f(0)=22xf(0) for all x, which implies
f(x)=2xf(0)(3)
for all positive x. On the other hand, applying (2) to (1) gives
f(−2x−1)=22x22x−1⋅f(0)=2−2x−1f(0)
for all x, which implies (3) also for all negative x.
We have shown above that f(0)=0 implies f(x)=0 for all x. Hence we may assume that f(0) is either positive or negative. By taking x=0 in (2) and applying (3), we obtain 2=220=f(f(0))=2f(0)⋅f(0). Both f(0)<1 and f(0)>1 would lead to contradiction, hence f(0)=1 and the only non-zero solution is thus f(x)=2x.