Jump to content

Математическая библиотека

В информатике математическая библиотека (или математическая библиотека) — это компонент программирования языка стандартной библиотеки , содержащий функции (или подпрограммы ) для наиболее распространенных математических функций , таких как тригонометрия и возведение в степень . Также могут быть включены функции обработки битов и управления, связанные с числами с плавающей запятой (например, в C).

Примеры включают в себя:

В некоторых языках (например, Haskell) части стандартной библиотеки (включая математические вычисления) импортируются по умолчанию. [4]

Более расширенные функции, такие как линейная алгебра, обычно предоставляются в сторонних библиотеках, таких как библиотека линейной алгебры или библиотека векторной математики .

Схема реализации

[ редактировать ]

Основные операции

[ редактировать ]

В математической библиотеке часто бывает полезно использовать каламбур типов , чтобы интерпретировать число с плавающей запятой как целое число без знака того же размера. Это позволяет быстрее проверять определенные числовые свойства (положительные или нет) и сравнивать числа. В более сложных случаях перестановка битов может использоваться для изменения числа определенным образом.

Для более точной работы дабл-дабл или даже тройной дабл можно использовать формат . В этом случае число высокой точности выражается как сумма двух или трех чисел с плавающей запятой. [5]

Трансцендентные функции

[ редактировать ]

Трансцендентные функции, такие как логарифмические, экспоненциальные и триггерные функции, составляют основу любой математической библиотеки. Эти функции обычно реализуются с помощью полиномиальной аппроксимации , обычно полинома Тейлора или полинома Чебышева, полученных с помощью алгоритма Ремеза (имеющего преимущество улучшенной оценки ошибки), но этапы предварительной обработки не менее важны. [5]

Тригнометрия

[ редактировать ]

Сокращение диапазона (также сокращение аргументов , разделение домена ) — это первый шаг для любой функции после проверок на необычные значения (бесконечность и NaN выполнения ). Целью здесь является уменьшение области определения аргумента для обработки полинома, используя симметрию и периодичность функции (если таковые имеются), устанавливая флаги, указывающие, например, следует ли в конце инвертировать результат (если необходимо). Стоит отметить, что периодические функции при сокращении требуют более высокой точности, чем входные, причем прототипным методом является алгоритм Пейна – Ханека – Корбетта. [6] После уменьшения диапазона значения, близкие к нулю, могут подвергаться «быстрому пути»: например, крошечный входной сигнал x может быть возвращен непосредственно в sin , а 1 − | х | может использоваться для cos .

Следующим шагом является оценка полинома с использованием традиционного метода Горнера . После этого перед возвратом знак результата может быть изменен в соответствии с информацией из процедуры уменьшения диапазона.

Логарифм и экспонента

[ редактировать ]

Логарифмирование по основанию 2 относительно просто, поскольку целая часть k уже находится в показателе с плавающей запятой; соответственно выполняется предварительное уменьшение дальности, что дает k . Мантисса x (где log2( x ) находится между -1/2 и 1/2) затем сравнивается с таблицей и интервалами для дальнейшего уменьшения до z в диапазоне с известным log2 и x/z , а также с полиномиальными коэффициентами. используется для интервала x/z . Тогда результатом будет log( z ) + log( x/z ) + k . [7] Логарифмирование в других системах счисления использует аналогичный подход, с той разницей, что (а) используется другая таблица; (б) k необходимо умножить на log2( new-base ). [7]

Экспонента в базе 2 аналогично «базовому случаю» из-за структуры с плавающей запятой. Процедура представляет собой просто комбинацию уменьшения диапазона (обычно путем поиска) и полинома по оставшейся мантиссе. [7] Натуральный показатель степени может быть реализован с помощью отдельной таблицы для обеспечения точности, тогда как exp10 может быть просто exp( x × log2(10)) когда он находится в диапазоне. [7] Наконец, в общем случае функция экспоненты с произвольной базой pow() построена на основе exp() и log(). [7]

См. также

[ редактировать ]
  1. ^ «Математическая библиотека C» .
  2. ^ «Математическая библиотека Java» .
  3. ^ «Математическая прелюдия Haskell» .
  4. ^ «Прелюдия Хаскелла» .
  5. ^ Перейти обратно: а б Дарами-Луара, Катрин; Дефур, Дэвид; Динешен, Флоран де; Галле, Матье; Гаст, Николас; Лаутер, Кристоф; Мюллер, Жан-Мишель (декабрь 2006 г.). CR-LIBM Библиотека правильно округленных элементарных функций двойной точности (Отчет).
  6. ^ Бризбарр, Н.; Дефур, Д.; Корнеруп, П.; Мюллер, Ж.-М.; Револ, Н. (март 2005 г.). «Новый алгоритм уменьшения дальности» . Транзакции IEEE на компьютерах . 54 (3): 331–339. дои : 10.1109/TC.2005.36 .
  7. ^ Перейти обратно: а б с д и математический каталог musl v1.2.2 , log1p.c , log2.c , log10.c , exp2.c
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f18fa594c3c26afbcd347d3476377937__1691433540
URL1:https://arc.ask3.ru/arc/aa/f1/37/f18fa594c3c26afbcd347d3476377937.html
Заголовок, (Title) документа по адресу, URL1:
Math library - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)