Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

MATHERR(3M)

НАЗВАНИЕ
matherr - функция обработки ошибок

СИНТАКСИС

	#include <math.h>
	
	int matherr (x)
	struct exception *x;

ОПИСАНИЕ
Функция matherr вызывается функциями из математической библиотеки при обнаружении ошибок. Пользователи могут определить собственные процедуры обработки ошибок, включая в свои программы функцию с именем matherr. Функция matherr должна иметь описанный выше вид. При возникновении ошибки указатель x на структуру exception будет передан разработанной пользователем функции matherr. Эта структура, определенная во включаемом фай- ле <math.h>, имеет следующий вид:

	struct exception {
	  int type;
	  char *name;
	  double arg1, arg2, retval;
	};
Элемент type представляет собой целое число, описываю- щее тип случившейся ошибки, из следующего списка конс- тант (определенных во включаемом файле):
DOMAIN Выход за пределы области определения.
SING Попадание аргумента в точку сингулярности.
OVERFLOW Переполнение.
UNDERFLOW Исчезновение порядка.
TLOSS Полная потеря значащих цифр.
PLOSS Частичная потеря значащих цифр.
Элемент name указывает на цепочку символов, содержащую имя функции, при обращении к которой произошла ошибка. Компоненты arg1 и arg2 содержат значения аргументов при вызове функции. Полю retval присвоено значение, которое будет возвращено функцией по умолчанию, то есть в том случае, если пользовательская функция matherr не прис- воит ей иного значения. Если пользовательская функция matherr возвращает нену- левое значение, то не будет выдаваться сообщение об ошибке и не будет устанавливаться значение переменной errno. Если функция matherr пользователем не предоставлена, то при возникновении ошибки по умолчанию будут вызываться процедуры, описанные вместе с соответствующими матема- тическими функциями. Сведения об этих процедурах об - единены в таблице, приводимой далее. В каждом случае переменной errno присваивается значение EDOM либо ERANGE и выполнение программы продолжается.

ПРИМЕР

	#include <math.h>

	int
	matherr (x)
	register struct exception *x;
	{
	  switch (x->type) {
	  case DOMAIN:
	    /* Возврат значения sqrt(-arg1) вместо 0 */
	    if (!strcmp(x->name, "sqrt")) {
	      x->retval=sqrt(-x->arg1);
	      return(0); /* Выдать сообщ., устан. errno */
	    }
	  case SING:
	    /* Для остальных DOMAIN и SING ошибок:
	       выдать сообщение и прекратить выполнение */
	    fprintf(stderr,"обл.определения в %s\n",x->name);
	    abort();
	  case PLOSS:
	    /* Выдать подробное сообщение об ошибке */
	    fprintf(stderr,"потеря знач.цифр в %s(%g)=%g\n",
	             x->name,x->arg1,x->retval);
	    return(1); /* Больше никаких действий */
	  }
	  return(0); /* Остальные ошибки - по умолчанию */
	}

Подразумеваемые процедуры обработки ошибок
Типы ошибок
тип DOMAIN SING OVERFLOW UNDERFLOW TLOSS
errno EDOM EDOM ERANGE ERANGE ERANGE
BESSEL: - - - - M,0
y0,y1,yn (арг<=0)M,-H----
EXP: - - H 0 -
LOG, LOG10:
(арг<0) M,-H - - - -
(арг=0) - M,-H - - -
POW:
(отр ** нецел) - - +/-H 0 -
(0 ** неполож) M,0 - - - -
SQRT: M,0 - - - -
GAMMA: - M,H H - -
HYPOT: - - H - -
SINH: - - +/-H - -
COSH: - - H - -
SIN, COS, TAN: - - - - M,0
ASIN, ACOS, ATAN2: M,0 - - - -

Сокращения:
* Значение возвращается со всеми неутерянными значащими цифрами
M Выдается сообщение (ошибка EDOM)
H Возвращается HUGE
-H Возвращается -HUGE
+/-H Возвращается HUGE или -HUGE
0 Возвращается 0

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...