--- Quote Start ---
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.
--- Quote End ---
Thank you kaz ! I will work on your suggestions. I really appreciate !
Have a nice day !