- •Лабораторна робота № 1
- •Загальні положення
- •1.1 Мета роботи
- •1.2 Організація самостійної роботи студентів
- •1.3 Варіанти індивідуальних завдань
- •Додаток а інструкція з техніки безпеки при виконанні лабораторних робіт
- •Додаток г особливості розробки звіту
- •1. Название лабораторной работы
- •Базовые функции
- •2. Математические функции
- •2.1 Математические функции ('math.H')
- •2.2 Версия библиотеки
- •2.3 Acos,acosf - арккосинус
- •2.4 Acosh, acoshf - обратный гиперболический косинус
- •2.5 Asin, asinf - арксинус
- •2.6 Asinh, asinhf - обратный гиперболический синус
- •2.7 Atan, atanf - арктангенс
- •2.8 Atan2, atan2f - арктангенс от y/X
- •2.9 Atanh, atanhf - обратный гиперболический тангенс
- •2.10 JN,jNf,yN,yNf - функции Бесселя
- •2.11 Сbrt,cbrtf - кубический корень
- •2.12 Copysign, copysignf - число с абсолютным значением х и со
- •2.13 Cosh, coshf - гиперболический косинус
- •2.14 Erf, erff, erfc, erfcf - функции ошибки
- •2.15 Exp, expf - экспонента
- •2.16 Expm1, expm1f - экспонента минус 1
- •2.17 Fabs, fabsf - абсолютное значение (модуль)
- •2.18 Floor, floorf, ceil, ceilf - наименьшее и наибольшее ближайшие целые
- •2.19 Fmod, fmodf - остаток от деления в виде числа с плавающей точкой
- •2.20 Frexp,frexpf - разбиение числа с плавающей точкой
- •2.21 Gamma, gammaf, lgamma, lgammaf, gamma_r, gammaf_r, lgamma_r, lgammaf_r
- •2.22 Hypot, hypotf - расстояние от начала координат
- •2.23 Ilogb, ilogbf - получение показателя степени в представлении числа с плавающей точкой
- •2.24 Infinity, infinityf - представление бесконечности
- •2.25 Isnan, isnanf, isinf, isinff, finite, finitef - тест для чисел структуры exception
- •2.26 Ldexp, ldexpf - задание показателя
- •2.27 Log, logf - натуральные логарифмы
- •2.28 Log10, log10f - логарифмы по основанию 10
- •2.30 Matherr - изменяемый обработчик математических ошибок
- •2.31 Modf, modff - разбиение на дробную и целую части
- •2.32 Nan, nanf - представление бесконечности
- •2.33 Nextafter, nextafterf - получение ближайшего числа
- •2.34 Pow, powf - X в степени y
- •2.35 Rint, rintf, remainder, remainderf - округление и остаток
- •2.36 Scalbn, scalbnf - масштабирование
- •2.37 Sqrt, sqrt - арифметический квадратный корень
- •2.38 Sin, sinf, cos, cosf - синус и косинус
- •2.39 Sinh, sinhf - гиперболический синус
- •2.40 Tan, tanf - тангенс
- •2.41 Tanh, tanhf - гиперболический тангенс
2.30 Matherr - изменяемый обработчик математических ошибок
#include <math.h>
int matherr(struct exception *e);
matherr вызывается всегда, когда функция из математической библиотеки генерирует ошибку. Вы можете видоизменить matherr своей собственной подпрограммой для того, чтобы выбрать необходимое обращение с ошибками. Выбранный matherr должен выдавать 0, если ему не удается распознать ошибку, и число, отличное от нуля в противном случае.
Когда matherr принимает ненулевое значение, сообщение об ошибке не выводится, и значение errno не изменяется. Вы можете подстроить под себя одно или оба этих обстоятельства в своей версии matherr, используя ту информацию, что содержится в структуре *e.
Ниже представлена структура exception (определенная в 'math.h'):
struct exception {
int type;
char *name;
double arj1, arj2, retval;
int err;
};
Поля структуры exception имеют следующие значения:
type – Тип произошедшей ошибки. Множество закодированных типов ошибок также находится в 'math.h'.
name – Указатель на строку, заканчивающуюся нулем, содержащую имя той функции из математической библиотеки, в которой произошла ошибка.
arj1, arj2 – Аргументы, вызвавшие ошибку.
retval – Возвращаемое значение ошибки (то значение, которое будет иметь вызываемая функция).
err – Если не ноль, то это новое значение, присвоенное errno.
Типы ошибок, определенные в 'math.h' представлают собой возможные математические ошибки типа:
DOMAIN – Аргумент не в области определения функции; например log(-1.0).
SING – Предполагаемые вычисления привели бы к появлению особой точки, например pow(0.0, -2.0).
OVERFLOW – Вычисления привели бы к результату слишком большому для представления, например exp(1000.0).
UNDERFLOW – Вычисления привели бы к результату слишком маленькому для представления, например exp(-1000.0).
TLOSS – Полная потеря разрядности. Результат не имел бы значащих цифр, например sin(10e70).
PLOSS – Частичная потеря разрядности.
Библиотечное определение matherr возвращает 0 во всех случаях.
Вы можете изменить результат вызываемой функции совершив в matherr изменение e->retval; этот результат передается к источнику вызова.
Если функций matherr возвращает 0 (что означает неспособность разрешить ошибку), источник вызова присваивает errno необходимоеое значение и выводит сообщение об ошибке.
matherr - не ANSI-функция.
2.31 Modf, modff - разбиение на дробную и целую части
#include <math.h>
double modf(double val, double *ipart);
float modff(float val, float *ipart);
modf разделяет переменную val типа double на целую и дробную части, возвращая дробную часть и сохраняя целую в *ipart. Не происходит никакого округления, сумма дробной и целой частей гарантированно составит val. То есть, если realpart = mod(val, &intpart); тогда 'realpart + intpart' в точности будет равняться val.
modff идентичен с точностью до типов.
Возвращается дробная часть. Знак результата совпадает со знаком исходного аргумента val.
modf удовлетворяет стандарту ANSI C. modff является расширением.
2.32 Nan, nanf - представление бесконечности
#include <math.h>
double nan(void);
float nanf(void);
nan и nanf возвращают NaN, определенный в IEEE, двойной и одинарной точности соответственно.
