Functions satisfying $f\left( f(x)^2+f(y) \right)=xf(x)+y$

Find all functions $f:\mathbb{R} \rightarrow \mathbb{R}$ such that $f\left( f(x)^2+f(y) \right)=xf(x)+y$ for all real numbers $x$ and $y$.

Clearly $f(x)=x$ is a solution, check by substitution.

I'm at a loss as to how to show this is the only one or find others.

Any help would be very much appreciated.


Solution 1:

lemmas in order they were noticed, all easy:

$f$ is injective

$f$ is surjective

$f(f(y)=y$ (let $f(x)=0$)

$f(-x)=-f(x)$ for nonzero $f(x)$ ($f$ is odd)

$f(0)=0$ by bijectivity and oddness

$f(f(x)^2)=xf(x)$ taking $y=0$

$f(u^2)=uf(u)$ by taking $x=f(u)$

$f(f(x)^2 + xf(x)) = xf(x) + x^2$ , (let $y=x^2$)

$f(x)^2=x^2$ (apply $f$ to both sides of preceding +injectivity)

$f(x) = \pm x$

We see now that $f(x)=-x$ is also a solution. Let $f(x) = s(x)x$ with $|s|=1$. Note $s(-x)=s(x)$

Taking $x$ with $x^2 > |y|$, $s(x)s(y)=1$ ($x$ sets the sign of each side, then compare the $y$ terms) so that $s(x)=s(y)$. Also $s(x^2)=s(x)$ for nonzero $x$ from $f(x^2)=xf(x)$.

Iterating this, the sign is constant on $|x|>1$ and on $|x|<1$. You can check by calculation whether there is a solution with the sign chosen differently on these intervals.