Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

G.2.4 Требования к точности для элементарных функций

В строгом режиме производительность Numerics.Generic_Elementary_Functions должна соответствовать указанному здесь описанию.

Требования к реализации

Когда исключение не возникает, результат вычисления функции в экземпляре EF из Numerics.Generic_Elementary_Functions принадлежит интервалу результатов, определенному как наименьший интервал модели EF.Float_Type, который содержит все значения вида f · (1.0 + d), где f — точное значение соответствующей математической функции при заданных значениях параметра, d — вещественное число, а |d| меньше или равно максимальной относительной ошибке функции. Функция возвращает значение, принадлежащее интервалу результатов, когда оба его предела принадлежат безопасному диапазону EF.Float_Type; в противном случае,
  • если EF.Float_Type'Machine_Overflows равно True, функция либо возвращает значение, принадлежащее интервалу результатов, либо вызывает Constraint_Error, сигнализируя о переполнении;
  • если EF.Float_Type'Machine_Overflows равно False, результат определяется реализацией.
Максимальная относительная ошибка, проявляемая каждой функцией, следующая:
  • 2.0 · EF.Float_Type'Model_Epsilon, в случае функций Sqrt, Sin и Cos;
  • 4.0 · EF.Float_Type'Model_Epsilon, в случае функций Log, Exp, Tan, Cot и обратных тригонометрических функций; и
  • 8.0 · EF.Float_Type'Model_Epsilon, в случае прямых и обратных гиперболических функций.
Максимальная относительная ошибка, проявляемая оператором возведения в степень, зависящая от значений операндов, равна (4.0 + |Right · log(Left)| / 32.0) · EF.Float_Type'Model_Epsilon.
Вышеуказанная максимальная относительная ошибка применима ко всему домену прямых тригонометрических функций, когда параметр Cycle указан. Когда параметр Cycle опущен, максимальная относительная ошибка применима только тогда, когда абсолютное значение параметра угла X меньше или равно некоторому определённому реализацией пороговому значению угла, которое должно быть по крайней мере EF.Float_Type'Machine_Radix Floor(EF.Float_Type'Machine_Mantissa/2). За пределами порогового значения угла точность прямых тригонометрических функций определяется реализацией.
Предписанные результаты, указанные в A.5.1 для определённых функций при конкретных значениях параметров, имеют приоритет над границами максимальной относительной ошибки; фактически они сужают интервал результатов, разрешённый границами максимальной относительной ошибки, до единственного значения. Дополнительные правила с аналогичным эффектом приведены в таблице G.1 для обратных тригонометрических функций в определённых точках параметров, для которых математический результат, возможно, не является числом модели EF.Float_Type (или, действительно, даже трансцендентным). В каждой строке таблицы значения параметров таковы, что результат лежит на оси между двумя квадрантами; соответствующее правило точности, имеющее приоритет над границами максимальной относительной ошибки, заключается в том, что интервал результатов представляет собой интервал модели EF.Float_Type, связанный с точным математическим результатом, указанным в таблице.
Этот абзац был удалён.
Последняя строка таблицы предназначена для применения, когда EF.Float_Type'Signed_Zeros равно False; две строки, непосредственно перед ней, — когда EF.Float_Type'Signed_Zeros равно True, а параметр Y имеет нулевое значение с указанным знаком.
Таблица G.1: Результаты элементарных функций с точным приближением
Функция Значение X Значение Y Точный результат
при указанном Cycle
Точный результат
при отсутствии Cycle
Арксинус 1.0 n.a. Cycle/4.0 π/2.0
Арксинус –1.0 n.a. –Cycle/4.0 –π/2.0
Арккосинус 0.0 n.a. Cycle/4.0 π/2.0
Арккосинус –1.0 n.a. Cycle/2.0 π
Арктангенс и арккотангенс 0.0 положительное Cycle/4.0 π/2.0
Арктангенс и арккотангенс 0.0 отрицательное –Cycle/4.0 –π/2.0
Арктангенс и арккотангенс отрицательное +0.0 Cycle/2.0 π
Арктангенс и арккотангенс отрицательное –0.0 –Cycle/2.0 –π
Арктангенс и арккотангенс отрицательное 0.0 Cycle/2.0 π
Величина, на которую результат обратной тригонометрической функции разрешается распространяться в прилегающий квадрант, соответствующий главной ветви, как указано в A.5.1, ограничена. Правило состоит в том, что результат принадлежит наименьшему интервалу модели EF.Float_Type, который содержит оба предела квадранта, соответствующего главной ветви. Это правило также имеет приоритет над границами максимальной относительной ошибки, эффективно сужая интервал результатов, разрешенный ими.
Наконец, следующие спецификации также имеют приоритет над границами максимальной относительной ошибки:
  • Абсолютное значение результата функций Sin, Cos и Tanh никогда не превышает единицы.
  • Абсолютное значение результата функции Coth никогда не меньше единицы.
  • Результат функции Cosh никогда не меньше единицы.

Рекомендации по реализации

Версии прямых тригонометрических функций без параметра Cycle не следует реализовывать, вызывая соответствующую версию с параметром Cycle равным 2.0*Numerics.Pi, так как это не обеспечит необходимой точности в некоторых частях области. По той же причине версию Log без параметра Base не следует реализовывать, вызывая соответствующую версию с параметром Base равным Numerics.e.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API