Making x=y=0 we have f(0)=0
Making y=0 we have
f(x^2)=xf(x) but
f((-x)^2)=f(x^2)=-xf(-x)
so f(x) is an odd function.
Making now x = -y we have
f(x^2-xf(x))=x f(0) = 0
so supposing that
f(x)=0 => x=0
(remember that f(x) is an odd function) we have
x^2-xf(x)=x(x-f(x))=0
considering x ne 0 we have
f(x)=x
Checking
(x^2+y x)=x(x+y)
Note. Another way of proof for f(x)=x is by doing for x ge 0
f(x) = x^(1/2)f(x^(1/2))= cdots = x^(1/2+1/4+cdots + 1/(2^n))f(x^(1/(2^n)))
but lim_(n->oo) x^(1/2^n) = 1 and lim_(n->oo)(1/2+1/4+cdots+1/(2^n))=1 so
f(x) = x f(1) now substituting this result into f(x^2)=xf(x) we obtain
f(x^2)=x^2f(1)->f(1)=1