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

G.2.6 Требования к точности комплексных арифметических операций

В строгом режиме работа модулей Numerics.Generic_Complex_Types и Numerics.Generic_Complex_Elementary_Functions должна соответствовать указанным здесь требованиям.

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

Когда исключение не возникает, результат вычисления вещественной функции от экземпляра CT из Numerics.Generic_Complex_Types (т.е., функции, возвращающей значение типа CT.Real'Base или CT.Imaginary) принадлежит интервалу результатов, определенному для вещественных элементарных функций (см. G.2.4).
Когда исключение не возникает, каждая компонента результата вычисления комплексной функции от такого экземпляра или от экземпляра Numerics.Generic_Complex_Elementary_Functions, полученного путем инстанцирования последнего с CT (т.е., функции, возвращающей значение типа CT.Complex), также принадлежит интервалу результатов. Интервалы результатов для компонентов результата определяются либо максимальной относительной ошибкой, либо максимальной ошибкой прямоугольника. Если интервал результатов для вещественной (соответственно, мнимой) компоненты определён максимальной относительной ошибкой, он определяется так же, как и для вещественной функции, относительно точного значения вещественной (соответственно, мнимой) части результата соответствующей математической функции. Если он определён максимальной ошибкой прямоугольника, интервал результатов для компоненты результата является наименьшим модельным интервалом типа CT.Real, который содержит все значения соответствующей части f · (1.0 + d), где f — точное комплексное значение соответствующей математической функции при заданных значениях параметров, d — комплексное число, и |d| меньше или равно заданной максимальной ошибке прямоугольника. Функция возвращает значение, принадлежащее интервалу результатов (или значение, обе компоненты которого принадлежат своим соответствующим интервалам результатов), когда обе границы интервала результатов принадлежат безопасному диапазону CT.Real; в противном случае,
  • если CT.Real'Machine_Overflows равно True, функция либо возвращает значение, принадлежащее интервалу результатов (или значение, обе компоненты которого принадлежат своим соответствующим интервалам результатов), либо вызывает исключение Constraint_Error, сигнализирующее о переполнении;
  • если CT.Real'Machine_Overflows равно False, результат определяется реализацией.
Границы ошибок для конкретных комплексных функций приведены в таблице G-2. В таблице граница ошибки представлена как коэффициент от CT.Real'Model_Epsilon.
Этот абзац был удалён.
Таблица G-2: Границы ошибок для конкретных комплексных функций
Функция или оператор Характер
результата
Характер
границы
Граница ошибки
Модуль вещественный макс. относ. ошибка 3.0
Аргумент вещественный макс. относ. ошибка 4.0
Compose_From_Polar комплексный макс. относ. ошибка 3.0
"*" (оба операнда комплексные) комплексный макс. ошибка прямоугольника 5.0
"/" (правый операнд комплексный) комплексный макс. ошибка прямоугольника 13.0
Sqrt комплексный макс. относ. ошибка 6.0
Log комплексный макс. ошибка прямоугольника 13.0
Exp (комплексный параметр) комплексный макс. относ. ошибка 7.0
Exp (мнимый параметр) комплексный макс. относ. ошибка 2.0
Sin, Cos, Sinh, и Cosh комплексный макс. относ. ошибка 11.0
Tan, Cot, Tanh, и Coth комплексный макс. относ. ошибка 35.0
обратные тригонометрические комплексный макс. относ. ошибка 14.0
обратные гиперболические комплексный макс. относ. ошибка 14.0
Максимальная относительная ошибка, указанная выше, применяется во всем диапазоне функции Compose_From_Polar при указании параметра Cycle. Если параметр Cycle опущен, максимальная относительная ошибка применяется только тогда, когда абсолютное значение параметра Argument меньше или равно пороговому значению угла (см. G.2.4). Для функции Exp, а также для прямых гиперболических (соответственно, тригонометрических) функций, максимальная относительная ошибка, указанная выше, применяется только тогда, когда абсолютное значение мнимой (соответственно, вещественной) компоненты параметра X (или абсолютное значение самого параметра в случае функции Exp с параметром чисто мнимого типа) меньше или равно пороговому значению угла. Для больших углов точность определяется реализацией.
Результаты, указанные в G.1.2 для определенных функций при определённых значениях параметров, имеют приоритет над границами ошибок; фактически, они сужают интервал результатов, разрешённый границами ошибок для компоненты результата. Дополнительные правила с аналогичным эффектом приведены ниже для некоторых обратных тригонометрических и обратных гиперболических функций в определённых точках параметров, для которых компонента математического результата является трансцендентной. В каждом случае правило точности, которое имеет приоритет над границами ошибок, заключается в том, что интервал результатов для указанной компоненты результата является модельным интервалом типа CT.Real, связанным с точным математическим значением компоненты. Рассматриваемые случаи следующие:
  • Когда параметр X имеет значение ноль, вещественная (соответственно, мнимая) компонента результата функции Arccot (соответственно, Arccoth) находится в модельном интервале типа CT.Real, связанном со значением π/2.0.
  • Когда параметр X имеет значение один, вещественная компонента результата функции Arcsin находится в модельном интервале типа CT.Real, связанном со значением π/2.0.
  • Когда параметр X имеет значение –1.0, вещественная компонента результата функции Arcsin (соответственно, Arccos) находится в модельном интервале типа CT.Real, связанном со значением –π/2.0 (соответственно, π).
Величина, на которую компонента результата обратной тригонометрической или обратной гиперболической функции может выходить за пределы квадранта, соответствующего главному ветвлению, как указано в G.1.2, ограничена. Правило состоит в том, что результат принадлежит наименьшему интервалу модели типа CT.Real, содержащему обе границы квадранта, соответствующего главному ветвлению. Это правило также имеет приоритет над максимальными границами ошибок, эффективно сужая интервал результатов, разрешённый ими.
Наконец, результаты, разрешённые границами ошибок, сужаются ещё одним правилом: абсолютное значение каждой компоненты результата функции Exp для чисто мнимого параметра никогда не превышает единицу.

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

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


Spec-Zone.ru

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