find all polynomials $f$ over $\mathbb{C}$ with $f(x)f(-x)=f(x^2)$.
I've seen the following solution, but I'm not sure that the very general solution includes all polynomial solutions (clearly we also need $p,q,r \ge 0$).
Edit: Upon further review based on the answer provided, it seems that all solutions are of the form $f(x) = x^p (x+1)^q (x-1)^r P(x),$ where $p + q + r$ is even and $P(x)$ is the product of polynomials of the form $(\frac{1-x^m}{1-x})^k$ for some $m\in\mathbb{Z}^+, k\ge 0$ (m is odd). The condition that $p+q+r$ is even is required so that $f(x)f(-x) = (-1)^p x^{2p} (-1)^q (x^2 - 1)^q (-1)^r (x^2 -1)^r P(x)P(-x) = f(x^2)$. Note that $P(x)P(-x)=P(x^2)$ for all x.

Apart from $0$, all roots must be if the form $\exp 2a\pi i$, $a\in [0,1)$, and if $a$ occurs, so must every $2^ma\bmod 1$. Finiteness then implies that $a$ is rational. Multiply with the common denominator $N$ to obtain a subset of $\Bbb Z/N\Bbb Z$ that is closed under doubling