Руководство по Ada (Ada 2022)
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.
Этот абзац был удалён.
| Функция или оператор | Характер результата |
Характер границы |
Граница погрешности |
|---|---|---|---|
| Модуль | вещественное | макс. относ. погрешность | 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, так как это не обеспечит необходимую точность в некоторых частях области определения.