[an error occurred while processing this directive]
|
Цитата:
------------
Пусть исходные отсчеты = 1,4,1,4 и т.д... Используем 32 fixed и float...
Берем 268435443 отсчетов.
У меня будет конечная сумма = 671088606
У Вас будет = 1.34218e+008 = 134218000
Немножко разные суммы даже на глаз...
------------
- Да помилуйте, откуда Вы такое мне приписали?! Ничего подобного не будет!
Ваши числа во флоатинге будут соответственно:
1 ~ 2^-31 = 0х30000000 (IEEE754)
4 ~ 2^-29 = 0х31000000 (IEEE754)
Теперь просуммируем первые два слагаемые. Получим:
2^-31 + 2^-29 = 1*2^-31 + 4*2^-31 = 5*2^-31
(процессор сделает точно так же, как это сделал я).
Теперь просуммируем полученный результат 134217721 раз и в конце прибавим 2^-31 (т.е. получается как раз нужное число нужных слагаемых). В результате получаем:
0,3124999701976776123046875
а должны были бы получить вот это число:
0,3124999841675162315368652
Теперь вспомним, что считаем мы RMS и что нам надо еще разделить эту сумму на число отсчетов, т.е. на 268435443 и извлечь корень квадратный. Ну и что получаем? А получаем вот что:
В моем случае: 3,4119688797314022467326234464071e-5
В Вашем случае: 3,4119689559948560653759858504158e-5
Ну и что, сильно ошиблись? Видно, что абсолютная ошибка равна:
7,6263453818643362404008e-13