Spec-Zone.ru › Ada 2005
Справочник Ada 2005

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
Arcsin 1.0 n.a. Cycle/4.0 π/2.0
Arcsin –1.0 n.a. –Cycle/4.0 –π/2.0
Arccos 0.0 n.a. Cycle/4.0 π/2.0
Arccos –1.0 n.a. Cycle/2.0 π
Arctan и Arccot 0.0 положительное Cycle/4.0 π/2.0
Arctan и Arccot 0.0 отрицательное –Cycle/4.0 –π/2.0
Arctan и Arccot отрицательное +0.0 Cycle/2.0 π
Arctan и Arccot отрицательное –0.0 –Cycle/2.0 –π
Arctan и Arccot отрицательное 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