Редактирование: ПОД (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> | ||
- | Данный алгоритм работает быстрее, чем упорядоченное суммирование, и при этом дает более аккуратный результат. | ||
== Оценка полной ошибки для суммирования положительных чисел. == | == Оценка полной ошибки для суммирования положительных чисел. == | ||
Пример расчета полной ошибки для суммирования положительных чисел | Пример расчета полной ошибки для суммирования положительных чисел |