--- Quote Start ---
Thank you Kaz,
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 or I'm totally confused as always ?
I can make it work !! i know !!
--- Quote End ---
we are pre-dividing each result by 2^16(by discarding 16 lsbs) so each mult result is correct by this ratio.
don't worry what each stage means in maths. just discard 16 LSBs from each and every mult then make final compensation by inserting 16 leading zeros in the adder result.
Thus anything that enters adder is not true value but scaled version by 2^16.
you can do same thing when multiplying by a,b,c etc. before final adder and apply same thing to any constant term.