С помощью прагмы STDC CX_LIMITED_RANGE можно указать, разрешено ли применять обычные математические формулы (установка on), или же особое внимание должно уделяться предельным значениям (установка off):
#include
#pragma STDC CX_LIMITED_RANGE on
850 Приложение Б
Библиотечные функции поставляются в трех разновидностях: double, float и long double. В табл. Б.УЗ перечислены функции для версии double. В версиях float и long double к именам функций добавляются, соответственно, f и 1. То есть csinf() — это версия float функции csin(), a csinl() — версия long double той же функции. Углы измеряются в радианах.
Таблица 6.V.3. Функции для работы с комплексными числами

Справочные материалы 851
Обработка символов: ctype.h
Эти функции принимают аргументы int, которые должны иметь возможность быть представленными либо как unsigned char, либо как EOF; в случае передачи других значений поведение не определено. В табл. B.V.4 значение true используется в качестве синонима для ненулевого значения. Интерпретация некоторых определений зависит от текущих локальных установок, которые управляются функциями из заголовочного файла locale.h; таблица демонстрирует интерпретацию для локальной установки "С".
Таблица 6.V.4. Функции обработки символов

Сообщение об ошибках: errno.h
Заголовочный файл errno.h поддерживает старый механизм сообщения об ошибках. Этот механизм предоставляет ячейку во внешней статической памяти, которая доступна через идентификатор (или, возможно, макрос) ERRNO. Некоторые библиотечные функции помещают в эту ячейку значение, чтобы сообщить об ошибке. Программа, включающая заголовочный файл errno.h, может затем проверить значение ERRNO, чтобы выяснить, возникла ли конкретная ошибка. Механизм, использующий ERRNO, считается устаревшим, и математические функции больше не обязаны устанавливать значения ERRNO. В стандарте предусмотрены три значения в виде макросов, которые представляют определенные ошибки, но конкретные реализации могут предоставлять их больше. В табл. B.V.5 перечислены стандартные макросы.
852 Приложение Б
Таблица 6.V.5. Макросы в errno.h

Среда плавающей запятой: fenv.h (С99)
Стандарт С99 предоставляет доступ и возможность управления средой плавающей запятой через заголовочный файл fenv.h.
Среда плавающей запятой состоит из набора флагов состояния и режимов управления. Исключительные ситуации, возникающие во время вычислений с плавающей занятой, такие как деление на ноль, могут “генерировать исключение”. Это означает, что событие устанавливает один из флагов среды плавающей запятой. Значение режима управления может управлять, например, направлением округления. В заголовочном файле fenv.h определен набор макросов, представляющих несколько исключений и режимов управления, а также прототипы функций, которые взаимодействуют со средой. Заголовок также предоставляет прагму для включения или отключения дос тупа к среде плавающей запятой.
Директива
#pragma STDC FENV_ACCESS on включает доступ к этой среде, а директива
#pragma STDC FENV_ACCESS off
отключает его. Если прагма является внешней, она должна находиться перед любым внешним объявлением или же в начале составного блока. Она остается в силе до тех пор, пока не будет переключена другим экземпляром прагмы, либо до достижения конца файла (внешняя директива) или конца составного оператора (блочная директива).
В заголовочном файле fenv.h определены два типа, показанные в табл. B.V.6.
Таблица 6.V.6. Типы в fenv.h

В заголовочном файле fenv.h также определены макросы, представляющие несколько возможных исключений плавающей запятой и управляющих состояний. Реализации могут определять дополнительные макросы, назначая им имена, которые начинаются с FE_ и состоят из заглавных букв. В табл. B.V.7 приведены стандартные макросы исключений.
Справочные материалы 853
Таблица 6.V.7. Макросы в fenv.h

В табл. B.V.8 показаны прототипы стандартных функций из заголовочного файла fenv.h. Обратите внимание, что очень часто значения аргументов и возвращаемые значения соответствуют макросам из табл. B.V.7. Например, FE_UPWARD является подходящим аргументом для feset round().
Читать дальше