Редактирование: ПОД (3 поток), Ответы

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 321 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1774: Строка 1774:
-
== Попарное суммирование ==
 
-
Ниже представлен алгоритм, в цикле обрабатывающий массив — на каждой итерации суммируются числа парами, при этом размер массива уменьшается вдвое.
 
-
<pre>
 
-
/* Pairwise Summation */
 
- 
-
float fp_add(float * flt_arr)
 
-
{
 
-
long i, j, limit;
 
-
float sum[ARR_SIZE / 2 + 1];
 
- 
-
if (ARR_SIZE == 2)
 
-
return flt_arr[0] + flt_arr[1];
 
-
else if (ARR_SIZE == 1)
 
-
return flt_arr[0];
 
- 
-
for (i = j = 0; i < ARR_SIZE / 2; i++, j += 2)
 
-
sum[i] = flt_arr[j] + flt_arr[j + 1];
 
-
if (ARR_SIZE & 1)
 
-
sum[ARR_SIZE / 2] = flt_arr[ARR_SIZE - 1];
 
-
limit = (ARR_SIZE + 1) / 2;
 
- 
-
while (limit > 2) {
 
-
for (i = j = 0; i < limit / 2; i++, j += 2)
 
-
sum[i] = sum[j] + sum[j + 1];
 
- 
-
if (limit & 1)
 
-
sum[limit / 2] = sum[limit - 1];
 
-
limit = (limit + 1) / 2;
 
-
}
 
- 
-
return sum[0] + sum[1];
 
-
}
 
-
</pre>
 
-
Данный алгоритм работает быстрее, чем упорядоченное суммирование, и при этом дает более аккуратный результат.
 
== Оценка полной ошибки для суммирования положительных чисел. ==
== Оценка полной ошибки для суммирования положительных чисел. ==
Пример расчета полной ошибки для суммирования положительных чисел
Пример расчета полной ошибки для суммирования положительных чисел

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Шаблоны, использованные на этой странице:

Личные инструменты
Разделы