Некоторые методы оптимизации работы с длинными арифметическими выражениями:
- Классическая длинная арифметика. 1 Число хранится в виде массива его цифр. 1 Операции над числами производятся с помощью алгоритмов сложения, вычитания, умножения, деления столбиком. 1 Также к ним применимы алгоритмы быстрого умножения: быстрое преобразование Фурье и алгоритм Карацубы. 14
- Длинная арифметика по системе простых модулей (схема Гарнера). 1 Выбирается система модулей (обычно небольших, помещающихся в стандартные типы данных). 1 Число хранится в виде вектора из остатков от его деления на каждый из этих модулей. 1 Этот метод позволяет экономить память по сравнению с классической длинной арифметикой. 1 Кроме того, в модульном виде можно очень быстро производить сложения, вычитания и умножения. 1
- Замена двух делений одним. 1 Если скорость работы чрезвычайно важна, то можно посчитать только целую часть от деления, а затем уже посчитать по ней остаток от деления (с помощью одной операции умножения). 1
- Выделение позиции плавающей точки в отдельный тип. 1 Если требуется производить расчёты с очень большими либо очень маленькими числами, но при этом не допускать их переполнения, то вводится ещё одна целочисленная переменная, отвечающая за экспоненту. 1 После выполнения каждой операции дробное число «нормализуется», то есть возвращается в отрезок [0,1; 1), путём увеличения или уменьшения экспоненты. 1
Также в современных языках программирования существует много готовых оптимизированных библиотек для длинной арифметики. 3