Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по функциям С++.doc
Скачиваний:
168
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

_Matherr

-----------------------------------------------------------------

НазначениеПрограмма обработки ошибок в вычислениях с пла-

вающей точкой.

Синтаксис#include<math.h>

double _matherr(_mexcep why, char *fun,

double *arg1p, double *arg2p,

double retval);

Прототип вmath.h

Замечания_matherr служит указателем на обработчик ошибок

во всех программах математической библиотеки;

она вызывает matherr и обрабатывает значение,

возвращаемое matherr. _matherr никогда не вызы-

вается из программ пользователей.

Где бы в математической библиотеке ни возникла

ошибка, вызывается программа _matherr с нес-

колькими аргументами.

_matherr делает 4 вещи:

* использует аргументы для заполнения структуры

exeption

* вызывает matherr с указателем на структуру

exeption, чтобы проверить, может ли matherr

обработать ошибку

* проверяет значение, возвращенное matherr сле-

дующим образом:

если matherr вернула 0 (что указывает на

то, что она не может обработать ошибку),

_matherr устанавливает errno (см.дальше) и

печатает сообщение об ошибке

если matherr вернула ненулевое значение

(что указывает на то, что matherr может

обработать ошибку), то _matherr не уста-

навливает errno и не печатает сообщение об

ошибке.

* возвращает е->errval вызывающей программе.

Следует отметить, что matherr может изменять

e->retval для уточнения значения вызывающей

программе.

Когда _matherr устанавливает errno (основываясь

на возвращенном 0), она помещает тип обнаружен-

ной ошибки (из поля type структуры exeption) в

errno: либо EDOM, либо ERANGE.

Возвращаемое_matherr возвращает значение e->retval. Это

значениезначение первоначально равно входному параметру

retval, переданному _matherr, и может быть мо-

дифицировано matherr.

Для результатов математических функций больших,

чем MAXDOUBLE, retval по умолчанию равен макро-

су HUGE_VAL того же знака, что и до обращения к

matherr. Для результатов математических функций

меньших, чем MINDOUBLE, retval устанавливается

в 0 и передается _matherr. В обоих случаях, ес-

ли matherr не изменяет e->errval, _matherr ус-

танавливает errno в

ERANGE - результат выходит за предел

Смотри такжеmatherr

-----------------------------------------------------------------