В статье рассматриваются ключевые аспекты технологии программной
реализации таблично ориентированных функций вещественной переменной.
Применительно к функциям в описании технологии термин "вычисление"
означает выработку значения функции для заданного аргумента
посредством некоторого численного метода, а термин "нахождение
значения" подразумевает, что для выработки значения функции
применяется поиск в таблице по (возможно, модифицированному)
аргументу. Главная проблема технологии состоит в построении таблицы
значений заданной функции для всех аргументов из некоторого
стандартного диапазона. При этом погрешность вычислений и область
определения функции определяются двоичным форматом представления
чисел, а переход от значений функции для аргументов из стандартного
диапазона к значениям функции для всей области определения не влияет
на окончательную точность нахождения значений.
В статье представлены и обоснованы требования, которым должны
удовлетворять методы формирования таблиц значений: во-первых, методы
должны учитывать особенности и особенности процесса формирования,
во-вторых, методы должны обеспечивать верификацию вычисленных
значений. В интересах реализации и массового применения таблично
ориентированных функций вычисленные значения предлагается эффективно
сжимать с тем, чтобы обеспечить их относительно компактное хранение и
быстрый поиск. Для исследования технологии предлагается использовать
набор модельных функций, включающий элементарные и специальные
функции. Основные этапы технологии проиллюстрированы на примере
логарифмической функции. В заключении приводятся обнадеживающие
результаты практической проверки технологии на тестовых функциях.
I. ВВЕДЕНИЕ
II. СТРУКТУРНЫЙ АНАЛИЗ НАУЧНОЙ ЗАДАЧИ
III. ВЫБОР АЛГОРИТМОВ ВЫЧИСЛЕНИЯ ТАБЛИЧНЫХ ЗНАЧЕНИЙ МОДЕЛЬНЫХ ФУНКЦИЙ
IV. ВЫБОР СТАНДАРТНЫХ ДИАПАЗОНОВ И ГЕНЕРАЦИЯ ЗНАЧЕНИЙ МОДЕЛЬНЫХ ФУНКЦИЙ
V. РАЗРАБОТКА СПОСОБОВ ХРАНЕНИЯ ТАБЛИЦ МОДЕЛЬНЫХ ФУНКЦИЙ
VI. РАЗРАБОТКА АЛГОРИТМОВ НАХОЖДЕНИЯ ЗНАЧЕНИЙ МОДЕЛЬНЫХ ФУНКЦИЙ
VII. ЗАКЛЮЧЕНИЕ
Работоспособность описанного подхода проверена [14] на четырех
модельных функциях float → float, использующих библиотеку math.h языка
C++. Принятые в эксперименте стандартные диапазоны не накладывают
ограничений на аргументы функций, то есть объем линейного списка
значений составляет 4 Gb. В результате проведенных испытаний
установлено, что для выбранных модельных функций наилучшим вариантом
упаковки является метод равных блоков, предварительно подвергнутых
дельта-кодированию. При этом объем сжатых таблиц (для алгоритма LZMA2)
составляет от 20 до 70 Mb, а соответствующие функции с использованием
процессора Intel Core-i7 3770k позволяют находить от 8 до 11 миллионов
значений в секунду. Столь обнадеживающие оценки для типа float ставят
на повестку дня проверку описанного подхода для типа double. Вместе с
тем, серьезное увеличение количества разрядов в мантиссе неизбежно
актуализирует теоретические исследования в области численного анализа.
БИБЛИОГРАФИЯ
[1]
Люстерник Л.А., Абрамов А.А., Шестаков В.И., Шура-Бура М.Р.
Решение математических задач на автоматических цифровых машинах. - М.: Изд-во АН СССР, 1952.
[2]
Березин И.С., Жидков Н.П. Методы вычислений, том 1. - М.: ГИФМЛ, 1959.
[3]
Смирнов Г.С. Семейство ЭВМ "Урал-1". Страницы истории разработок. - Пенза, 2005.
[4]
Люстерник Л.А., Червоненкис О.А., Янпольский А.Р.
Математический анализ. Вычисление элементарных функций. - М.: Физматгиз, 1963.
[5]
Попов Б.А., Теслер Г.С. Вычисление функций на ЭВМ. - Киев: Наукова думка, 1984.
[6]
R. Brent, P. Zimmermann, Modern Computer Arithmetic. Cambridge University Press, 2011.
[7]
Яшкардин В.Л. IEEE 754: стандарт двоичной арифметики с плавающей точкой.
[Электронный ресурс]. Страница доступа: http://www.softelectro.ru/ieee754.html.
[8]
Стефанюк В.Л. Рекурсивное оценивание арифметических
функций в системах ЛИСП. Программирование, 1981, No.5. С. 92-94.
[9]
Сальников М.С. Рекурсивный алгоритм вычисления логарифма.
// Информационные процессы, том 12, No. 3, 2012. C. 248-252.
[10]
Соловьев С.Ю. Алгоритм вычисления логарифмов методом вытеснения.
// Вестн. Моск. ун-та сер. 15 Вычисл. матем. и киберн., 2013, No. 2. С. 38-43.
[11]
Теслер Г.С. Адаптивные аппроксимации и итеративные
процессы. // Математические машины и системы, том 2,. 2004. С.22-41.
[12]
Воеводин В.В., Воеводин Вл.,В Параллельные вычисления. - СПб.: БХВ-Петергург, 2002.
[13]
Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия
данных. Устройство архиваторов, сжатие изображений и видео. - М.: ДИАЛОГ-МИФИ, 2003.
[14]
Казаков А.А. Исследование алгоритмов упаковки таблично
заданных функций // Сборник тезисов лучших выпускных работ
факультета ВМК МГУ. - M.: МАКС Пресс, 2015. С. 93-95.