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

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, результат определяется реализацией.
Границы ошибок для конкретных комплексных функций приведены в таблице ниже. В таблице граница ошибки приведена как коэффициент от CT.Real'Model_Epsilon.
Этот абзац был удалён.
Максимальная относительная ошибка, указанная выше, применима ко всему области функции Compose_From_Polar, когда параметр Cycle указан. Когда параметр Cycle опущен, максимальная относительная ошибка применяется только тогда, когда абсолютное значение параметра Argument меньше или равно порогу угла (см. G.2.4). Для функции Exp и для прямых гиперболических (соответственно, тригонометрических) функций максимальная относительная ошибка, указанная выше, также применяется только тогда, когда абсолютное значение мнимой (соответственно, вещественной) составляющей параметра X (или абсолютное значение самого параметра в случае функции Exp с параметром чисто мнимого типа) меньше или равно порогу угла. Для больших углов точность определяется реализацией.
Границы ошибок для конкретных комплексных функций
Функция или оператор Характер
результата
Характер
границы
Граница ошибки
Модуль вещественный макс. отн. ошибка 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
Предписанные результаты, указанные в G.1.2 для определённых функций при конкретных значениях параметров, имеют приоритет над границами ошибок; фактически, они сужают интервал результатов, допускаемый границами ошибок, для компонента результата. Ниже приведены дополнительные правила с аналогичным эффектом для определённых обратных тригонометрических и обратных гиперболических функций при определённых значениях параметров, для которых компонент математического результата является трансцендентным. В каждом случае правило точности, которое имеет приоритет над границами ошибок, заключается в том, что интервал результатов для указанного компонента результата — это модель интервал типа CT.Real, связанный с точным математическим значением компонента. Соответствующие случаи следующие:
  • Когда параметр X имеет значение ноль, вещественная (соответственно, мнимая) составляющая результата функции Arccot (соответственно, Arccoth) находится в модельном интервале типа CT.Real, связанном со значением PI/2.0.
  • Когда параметр X имеет значение единица, вещественная составляющая результата функции Arcsin находится в модельном интервале типа CT.Real, связанном со значением PI/2.0.
  • Когда параметр X имеет значение -1.0, вещественная составляющая результата функции Arcsin (соответственно, Arccos) находится в модельном интервале типа CT.Real, связанном со значением -PI/2.0 (соответственно, PI).
Количество, на которое компонент результата обратной тригонометрической или обратной гиперболической функции допускается переходить в смежный квадрант, соответствующий главному ответвлению, как указано в G.1.2, ограничено. Правило состоит в том, что результат принадлежит наименьшему модель интервалу типа CT.Real, который содержит обе границы квадранта, соответствующего главному ответвлению. Это правило также имеет приоритет над максимальными границами ошибок, фактически сужая интервал результатов, допускаемый ими.
Наконец, результаты, допускаемые границами ошибок, сужаются ещё одним правилом: абсолютное значение каждого компонента результата функции Exp для чисто мнимого параметра никогда не превышает единицу.

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

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


Spec-Zone.ru

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