To clear the way for a general consensus, I have removed the division from the float pipeline. The samples aren't touched by anything else than multiplication anymore. Attached you'll find the source code and a binary.
You can execute it with 'java -jar FloatLoss.jar <number of iterations>', for example:
java -jar FloatLoss.jar 50
The results for the new version are as follows:
It will adjust the number of samples automatically for about 1 minute of number crunching on a 2.4 GHz Core 2 Duo.
Peak SNR after 5 iterations: -125,410 dB
RMS SNR after 5 iterations: -144,166 dB
Peak SNR after 10 iterations: -122,216 dB
RMS SNR after 10 iterations: -141,154 dB
Peak SNR after 60 iterations: -115,551 dB
RMS SNR after 60 iterations: -133,167 dB
Peak SNR after 120 iterations: -111,625 dB
RMS SNR after 120 iterations: -129,867 dB
Peak SNR after 500 iterations: -105,804 dB
RMS SNR after 500 iterations: -122,141 dB
Peak SNR after 1000 iterations: -102,149 dB
RMS SNR after 1000 iterations: -117,724 dB
Peak SNR after 5000 iterations: -94,230 dB
RMS SNR after 5000 iterations: -105,638 dB
Peak SNR after 10000 iterations: -90,009 dB
RMS SNR after 10000 iterations: -99,916 dB
Peak SNR after 100000 iterations: -74,356 dB
RMS SNR after 100000 iterations: -80,183 dB
(HA's 'code tag' handling of white space could be improved.)
As before '1 iteration' means one pair of gain and inverse gain has been applied.