# SQNR when multiplying 2 16 bit signed integers and truncating result?

I'm trying to figure out what the Signal to Quantized Noise Ratio (SQNR) is if I multiply 2 16-bit signed integer values and store the result as a 16-bit signed integer, dropping the least significant bits. Since this is signed multiplication, I'm dropping 15 bits of precision.

For example:

a (16 bit signed) * b (16 bit signed) = c (16 bit signed) without the LSBs.

And to be more clear about what's after this, I am summing many successive values of the resulting 'c' - this sum is stored in an infinite length signed integer representation.

How do I calculate the SQNR in this situation?

-
You also need to provide the power of your signals in order to determine the ratio. – Juancho Dec 1 '12 at 11:19
@Juancho do you mean that the power of the signal is the maximum? In my case, the maximum is full range of the 16 bit signed integer. I don't know how these values plug in to en.wikipedia.org/wiki/Signal-to-quantization-noise_ratio the equations though.. – Nektarios Dec 1 '12 at 20:38
When you multiply the two 16 bit numbers you get the "true" 32 bit number and then you truncate to get a 16 bit number. The noise that is introduced when you truncate is a random value from $0$ to $2^{16}-1$ ($65535$), which averages out to $32767.5$ and has an average power (average of the square) of $1.43E9$. If you were rounding instead of truncating it would be a random value from $-(2^{15})$ to $2^{15}-1$, which averages out to approximately $0$ (no bias), and has an average power of $3.58E8$. That's why it's better to round than truncate, but that's a story for another day.
The truncation noise, therefore, is $1.43E9$. You get the signal power by multiplying your truncated data by $2^{16}$ (to make the 16 bit values into 32 bit values), squaring them, and then calculating the mean. You then calculate the SQNR by dividing the signal power by the truncation noise, $1.43E9$.