Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Библиотека мат функ.doc
Скачиваний:
0
Добавлен:
03.01.2020
Размер:
104.45 Кб
Скачать

http://security.opennet.ru/docs/RUS/mlib/m_lib_ru-2.html

2.1 Математические функции('math.H')

В этой части собрано множество разнообразных математических функций. Соответствующие им определения и объявления содержатся в 'math.h'. Обратим внимание на два определения из 'math.h', которые представляют собой определенный интерес.

  1. Бесконечность в типе double определяется как HUGE_VAL; многие функции возвращают это значение при переполнении.

  2. Структура exception используется при написании определенных Вами обработчиков ошибок для математических функций. Вы можете определить свой способ обработки ошибок для большинства этих функций, выбрав собственную версию matherr; см. описание функции matherr для выяснения подробностей.

Поскольку обработчик ошибок вызывает fputs, математические подпрограммы требуют заглушек (фиктивных модулей) или минимальных реализаций (имплементаций) для списка подпрограмм ОС, из fputs: close, fstat, isatty, lseek, read, sbrk, write. Cм. раздел "System Calls" в The Cygnum C Support Library, для получения помощи и примеров таких реализаций программ поддержки.

Альтернативные объявления математическик функций, позволяющие эффективнее использовать возможности машины, - но, как правило, хуже отслеживающие ошибки и могущие вызывать дополнительные трудности на некоторых машинах, - доступны при подключении 'fastmath.h' вместо 'math.h'.

2.2 Версия библиотеки

Существуют четыре различных версии программ математических библиотек: IEEE, POSIX, X/Open, и SVID. Версия может быть выбрана Вами в период прогона программы заданием глобальной переменной _LIB_VERSION, определенной в 'math.h'. Она может принимать значение одной из следующих констант, определенных в 'math.h': _IEEE_, _POSIX_, _XOPEN_, или _SVID_. Переменная _LIB_VERSION не является специальной для каждой части программы, и изменение ее сказывается на всех частях.

Версии библиотеки различаются только по принципу обработки ошибок.

В режиме IEEE функция matherr не вызывается, не печатается сообщение об ошибке, и не задается значение переменной errno.

В режиме POSIX переменной errno присваивается необходимое значение, но функция matherr не вызывается, и не выводится сообщение об ошибке.

В режиме X/Open переменная errno принимает соответствующее значение, вызывается функция matherr, но сообщение об ошибке не выводится.

В режиме SVID функции, в случае переполнения, не принимают значение бесконечности, а становятся равными 3.40282346638528860e+38, максимально возможному одноразрядному числу с плавающей точкой. Также переменной errno присваивается правильное значение, вызывается функция matherr, и, если matherr обращается в 0, то для некоторых ошибок выводится соответствующее сообщение. Например, в ответ на 'log(-1.0)' печатается сообщение об ошибке в стандартном виде вывода: log: DOMAIN error. По умолчанию реализуется режим X/Open.

2.3 Acos,acosf - арккосинус

#include <math.h>

double acos(double x);

float acosf(float x);

acos вычисляет арккосинус (arccos) от заданного аргумента. Аргумент для acos должен находиться в отрезке [-1,1].

acosf идентичен acos, различие состоит в типах (double и floats), с которыми проводятся вычисления.

acos и acosf возвращают значения в радианах на промежутке от 0 до pi.

Если х не в промежутке [-1,1], то возвращаемое значение есть NaN (not a number), глобальная переменная errno принимает значение EDOM, и в стандартном выводе выносится сообщение DOMAIN error.

Вы можете изменить обработку ошибок для этих функций, используя matherr.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]