--- Quote Start ---
discard 16 lsbs yielding 16 bits result as x^2 (but keep in head that it is x^2/2^16)
now x^2*x is 16bits * 16bits yielding 32 bits, discard 16 lsbs and so on.
So x^3 would be ((x^2/2^16)*x)/2^16, so when I sum, I have to add 32 zeros to x^3 ?
Am I right or I am missing something?
--- Quote End ---
The question addresses an interesting point. Assumed you have signed 16 bit numbers with a number range of -2^15..2^15-1. And you are raising a 16 bit input number to the 7th power. What's the minimum input value that gives a non-zero result?
The result will be only slightly better for unsigned 16 bit numbers. For many DSP related problems, fixed point arithmetic helps to overcome range and scaling problems, but in this case, only a considerably larger bit width or a floating point representation can help.
As a minor point, to keep the result resolution of signed multiply, you'll strip off only 15 LSBs and apply saturation logic to handle the special case (-2^15)*(-2^15).