Справочник Ada 2012
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, так как это не обеспечит требуемой точности в некоторых частях области.