Math.h
math.h
math.h — заголовочный файл стандартной библиотеки языка программирования С, разработанный для выполнения простых математических операций. Большинство функций привлекают использование чисел с плавающей точкой. C++ также реализует данные функции для обеспечения совместимости, все они содержатся в заголовочном файле cmath.
Содержание
Базовые функции
| Имя | Описание |
|---|---|
| acos | арккосинус |
| asin | арксинус |
| atan | арктангенс |
| atan2 | арктангенс с двумя параметрами |
| ceil | округление до ближайшего большего целого числа |
| cos | косинус |
| cosh | гиперболический косинус |
| exp | вычисление экспоненты |
| fabs | абсолютная величина (числа с плавающей точкой) |
| floor | округление до ближайшего меньшего целого числа |
| fmod | вычисление остатка от деления нацело для чисел с плавающей точкой |
| frexp | разбивает число с плавающей точкой на мантиссу и показатель степени. |
| ldexp | умножение числа с плавающей точкой на целую степень двух |
| log | натуральный логарифм |
| log10 | логарифм по основанию 10 |
| modf(x,p) | извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой |
| pow(x,y) | результат возведения x в степень y, x y |
| sin | синус |
| sinh | гиперболический синус |
| sqrt | квадратный корень |
| tan | тангенс |
| tanh | гиперболический тангенс |
Функции стандарта C99
Расширения XSI
Эти функции не описаны в стандартах ANSI или ISO C, но могут присутствовать в системах в качестве расширений X/Open.
| Имя | Описание |
|---|---|
| j0(x) | значение функций Бесселя первого рода порядков 0 для аргумента x |
| j1(x) | значение функций Бесселя первого рода порядков 1 для аргумента x |
| jn(n,x) | значение функций Бесселя первого рода порядка n |
| scalb(x,y) | x * FLT_RADIX y (x и y типа double ) |
| y0(x) | значение функций Бесселя второго рода порядков 0 для аргумента x |
| y1(x) | значение функций Бесселя второго рода порядков 1 для аргумента x |
| yn(n,x) | значение функций Бесселя второго рода порядка n |
Ссылки
Полезное
Смотреть что такое «Math.h» в других словарях:
math — math … Dictionnaire des rimes
Math 55 — is a two semester long first year undergraduate mathematics course at Harvard University. The official titles of the course is Honors Abstract Algebra and Honors Real and Complex Analysis. (The official title was previously Honors Advanced… … Wikipedia
Math — Math, vollständiger Name Math fab Mathonwy [maːθ vaːb ma θonwi] oder Math ap Mathonwy („Math, Sohn des Mathonwy“), ist in der keltischen Mythologie von Wales König von Gwynedd. Seine Neffen sind Gwydyon und Gilfaethwy, seine Nichte ist… … Deutsch Wikipedia
math — S2 [mæθ] n [U] [Date: 1800 1900; Origin: mathematics] AmE mathematics British Equivalent: maths ▪ Tim s good at math and science. ▪ a set of simple math problems (=questions that are related to math) ▪ She s learning calculus in math class. ▪ a… … Dictionary of contemporary English
Math.h — Saltar a navegación, búsqueda math.h es un archivo de cabecera de la biblioteca estándar del lenguaje de programación C diseñado para operaciones matemáticas básicas. Muchas de sus funciones incluyen el uso de números en coma flotante. C++… … Wikipedia Español
Math — (m[a^]th), n. [AS. m[=ae][eth]; akin to m[=a]wan to mow, G. mahd math. See
Include math h что это
Существуют четыре различных версии программ математических библиотек: 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.
acosf идентичен acos, различие состоит в типах (double и floats), с которыми проводятся вычисления.
acos и acosf возвращают значения в радианах на промежутке от 0 до pi.
Если х не в промежутке [-1,1], то возвращаемое значение есть NaN (not a number), глобальная переменная errno принимает значение EDOM, и в стандартном выводе выносится сообщение DOMAIN error.
Вы можете изменить обработку ошибок для этих функций, используя matherr.
x должен быть больше либо равен 1.
acoshf аналогичен acosh с точностью до типов.
acosh и acoshf принимают вычисленные значения. Если х меньше 1, возвращается NaN, при этом errno получает значение EDOM.
Ни acosh, ни acoshf не удовлетворяют стандарту ANSI C. Не рекомендуется использовать их в программах, которые могут быть перенесены на другие машины.
asinf идентичен asin, различие состоит в типах (double и float), с которыми проводятся вычисления.
Вы можете изменить обработку ошибок для этих функций, используя matherr.
Если х не в промежутке [-1,1], то возвращаемое значение есть NaN (not a number), глобальная переменная errno принимает значение EDOM, и в стандартном выводе выносится сообщение DOMAIN error.
Вы можете изменить обработчик ошибок для этих функций, используя matherr.
asinhf аналогичен с точностью до типов.
asinh и asinhf возвращают вычисленные значения.
atanf аналогичен с точностью до типов.
atan удовлетворяет стандарту ANSI C. atanf является расширением.
atan2f идентичен atan, различие состоит в типах (double и float), с которыми проводятся вычисления.
В случае, когда и х и y оба равны нулю, возникает ошибка DOMAIN error.
Вы можете изменить обработку ошибок для этих функций, используя matherr.
atan2 удовлетворяет стандарту ANSI C. atan2f является расширением.
atanh и atanhf возвращают вычисленное значение.
Если ЁхЁ превосходит 1, то возвращаемое значение есть NaN, errno принимает значение EDOM, и выводится сообщение DOMAIN error.
Если ЁхЁ равно 1, то возвращаемое значение есть бесконечность (infinity) со знаком аргумента, errno принимает значение EDOM, и выводится сообщение SIGN error.
Вы можете изменить обработку ошибок для этих программ, используя matherr.
jn вычисляет функцию Бесселя первого рода порядка n. j0 и j1 представляют собой частные случаи с порядками 0 и 1 соответственно.
jnf, j0f, j1f, ynf, y0f, y1f проводят те же самые вычисления, но с переменными типа float.
Каждая функция Бесселя возвращает свое значение в заданной точке х.
Ни одна из этих функций не входит в ANSI C.
Возвращается кубический корень.
сbrt принадлежит System V release 4. cbrtf является расширением.
copysignf производит те же операции, но работает с переменными типа float.
copysign возвращает число типа double с модулем х и знаком y, copysignf возвращает число типа float с модулем х и знаком y.
copysign не входит ни в ANSI C ни в System V Interface Definition, Издание 2.
Углы определены в радианах. coshf аналогичен с точностью до типов.
cosh и coshf возвращают вычисленное значение. Когда происходит переполнение, cosh возвращает значение HUGE_VAL с соответствующим знаком, глобальная переменная errno принимает значение ERANGE.
Вы можете изменить обработку ошибок для этих программ, используя matherr.
cosh coответствует стандарту ANSI. coshf является расширением.
erff и erfcf отличаются только типами входных данных и результатов.
Ни один из этих вариантов не в ANSI C.
Вы можете использовать функцию matherr (не-ANSI) для выбора обработчика ошибок для этих функций.
В случае успеха exp и expf возвращают вычисленное значение. Если результат слишком мал, возвращается значение 0. Если результат слишком велик, возвращается значение HUGE_VAL. В обоих случаях errno принимает значение ERANGE.
exp coответствует стандарту ANSI. expf является расширением.
Ни expм1, ни expm1f не соответствуют стандарту ANSI и System V Interface Definition.
Возвращается вычисленное значение. Никаких ошибок не возникает.
fabs coответствует стандарту ANSI. fabsf является расширением.
floor и ceil возвращают вычисленное значение типа double. floorf и ceilf возвращают вычисленное значение типа float.
floor и ceil coответствуют стандарту ANSI. floorf и ceilf являются расширениями.
Функция fmod возвращает значение x-i*y, для наибольшего такого i, что если y отличен от 0, результат имеет тот же знак, что и х, а по модулю не превосходит модуля y.
fmod(x,0) возвращает NaN, errno присваивается значение EDOM.
Вы можете изменить обработчик ошибок для этих функций, используя matherr.
fmod coответствует стандарту ANSI. fmodf является расширением.
m и р вычисляются так что
frexp возвращает мантиссу m. Если val = 0 или NaN, frexp присваивает *exp значение 0, и возвращает val.
frexp coответствует стандарту ANSI. frexpf является расширением.
Знак результата сохраняется в глобальной переменной signgam, которая объявлена в math.h.
gammaf производит те же вычисления, что и gamma, но оперирует с переменными типа float.
Не путайте функцию gamma_r, которая запрашивает дополнительный аргумент, являющийся указателем на целое, с функцией _gamma_r, которая запрашивает дополнительный аргумент, являющийся указателем на структуру повторной входимости.
В случае успеха возвращается вычисленное значение.
Вы можете изменить обработчик ошибок для этих функций, используя matherr.
В случае успеха возвращается расстояние. При переполнении hypot возвращает HUGE_VAL и присваивает переменной errno значение ERANGE.
Эта обработка ошибок может быть изменена с помощью функции matherr.
Ни ilogb, ни ilogbf не входят в ANSI C и System V Interface Definition.
Существует пять основных форматов чисел: zero
используется для представления чисел с нулевым показателем, но ненулевой дробью.
Число с показателем степени и с дробной частью.
Число с показателем, состоящим из одних единиц (в битовом представлении) и нулевой дробью.
Число с показателем, состоящим из одних единиц, и ненулевой дробью.
isnan возвращает 1, если аргумент равен nan. isinf возвращает 1, если аргумент равен infinity. finite возвращает 1, если аргумент равен zero, subnormal или normal. isnanf, isinff и finitef производят те же действия, что и их аналоги isnan, isinf и finite, но с одноразрядными числами с плавающей точкой.
ldexp вычисляет величину val*(p**exp). ldexpf аналогична с точностью до типов.
ldexp и ldexpf возвращают вычисленные значения.
При переполнении в обе стороны переменной errno присваивается значение ERANGE. При переполнении в отрицательную сторону ldexp и ldexpf приобретают значение 0.0. При переполнении в положительную сторону ldexp становится равной HUGE_VAL со знаком плюс или минус.
ldexp удовлетворяет стандарту ANSI C. ldexpf является расширением.
Вы можете изменить обработку ошибок для этих функций, используя matherr.
log удовлетворяет стандарту ANSI C. logf является расширением.
logf идентичен с точностью до входных и выходных типов.
Обе функции возвращают вычисленные значения.
Для получения справки об ошибках, обратитесь к разделу, описывающему log.
log удовлетворяет стандарту ANSI C. logf является расширением.
log1pf идентичен с точностью до входных и выходных типов.
Ни log1p, ни log1pf не входят в ANSI C и System V Interface Definition.
Когда matherr принимает ненулевое значение, сообщение об ошибке не выводится, и значение errno не изменяется. Вы можете подстроить под себя одно или оба этих обстоятельства в своей версии matherr, используя ту информацию, что содержится в структуре *e.
Ниже представлена структура exception (определенная в ‘math.h’):
Тип произошедшей ошибки. Множество закодированных типов ошибок также находится в ‘math.h’.
Указатель на строку, заканчивающуюся нулем, содержащую имя той функции из математической библиотеки, в которой произошла ошибка.
Аргументы, вызвавшие ошибку.
Возвращаемое значение ошибки (то значение, которое будет иметь вызываемая функция).
Если не ноль, то это новое значение, присвоенное errno. Типы ошибок, определенные в ‘math.h’ представлают собой возможные математические ошибки типа: DOMAIN
Аргумент не в области определения функции; например log(-1.0).
Вычисления привели бы к результату слишком большому для представления, например exp(1000.0).
Вычисления привели бы к результату слишком маленькому для представления, например exp(-1000.0).
Полная потеря разрядности. Результат не имел бы значащих цифр, например sin(10e70).
Частичная потеря разрядности. Библиотечное определение matherr возвращает 0 во всех случаях.
Вы можете изменить результат вызываемой функции совершив в matherr изменение e->retval; этот результат передается к источнику вызова.
Если функций matherr возвращает 0 (что означает неспособность разрешить ошибку), источник вызова присваивает errno необходимоеое значение и выводит сообщение об ошибке.
modff идентичен с точностью до типов.
Возвращается дробная часть. Знак результата совпадает со знаком исходного аргумента val.
modf удовлетворяет стандарту ANSI C. modff является расширением.
возвращает число ближайшее к val в направлении к dir число.
Ни nextafter, ни nextafterf не входят в ANSI C и System V Interface Definition.
В случае успеха возвращается вычисленное значение.
Вы можете изменить обработку ошибок для этих функций, используя matherr.
pow отвечает стандарту ANSI C. powf является расширением.
rint и remainder возвращают целое значение в виде double.
rint и remainder входят в System V release. rintf и remainderf являются расширениями.
Вы можете изменить обработку ошибок для этих функций, используя matherr.
В случае успеха возвращается вычисленное значение квадратного корня. Если х веществененный и неотрицательный, результат неотрицателен. Если х вещественный и отрицательный, переменной errno присваивается значение EDOM (ошибка DOMAIN error).
sqrt удовлетворяет стандарту ANSI C. sqrtf является расширением.
sinf и cosf аналогичны с точностью до типов.
Возвращается значение синуса или косинуса.
sin и cos отвечают стандарту ANSI C. sinf и cosf являются расширением.
sinh(x) определяется как (exp(x)-exp(-x))/2
sinhf аналогичен с точностью до типов.
sinh и sinhf возвращают вычисленное значение.
Когда происходит переполнение (результат слишком велик), sinh возвращает значение HUGE_VAL с соответствующим знаком, глобальная переменная errno принимает значение ERANGE.
Вы можете изменить обработку ошибок для этих программ, используя matherr.
sinh coответствует стандарту ANSI. sinhf является расширением.
tanf идентичен с точностью до типов.
Возвращается значение тангенса от х.
tan отвечает стандарту ANSI C. tanf является расширением.
tanh(x) определяется как sinh(x)/cos(x)
tanh и tanhf возвращают вычисленное значение гиперболического тангенса.
tanh coответствует стандарту ANSI. tanhf является расширением.
Стандартная библиотека С++ (Часть 1)
Этот урок состоит из двух частей:
В предыдущих уроках мы уже подключали библиотеку ввода/вывода ( iostream ). Теперь также подключим две новых библиотеки:
1 Математическая библиотека Си/С++
Нахождение квадратного корня числа a. Вы любите комплексные числа? sqrt тоже, поэтому не задавайте ему отрицательные числа. Пример:
Ну и картинка для лучшего понимания:
Желательно чтобы в операции a=sqrt(b) обе переменные были вещественными, используя другие виды переменных возможно получить ошибку компиляции или неверное решение.
pow(a,b)
fmod(a,b)
Теперь тригонометрические функции, т.е косинусы, синусы, тангенсы и их арк-версии, ВНИМАНИЕ, в С++ используются не градусы а радианы. Универсальная формула:
Программе задается угол в градусах или радианах (для этого замените строку на комментарий под ней), и она выдает тригонометрические функции от этого угла.
Программе задается тригонометрическая функция, и она выдает их арк-функции в радианах и градусах. Мне кажется, что комментарии к коду излишни, так как все должно быть понятно даже при беглом просмотре.
Наиболее часто используемые математические фукнции стандартной библиотеки приведены в таблице:
| Функция | Описание работы функции |
|---|---|
| double sqrt (double x); | Данная математическая функция вычисляет и возвращает корень из положительного числа, принимая его в качестве аргумента х |
| double pow (double x, double y); | Возводит число, принимаемое в качестве аргумента х, в степень, принимаемую в качестве аргумента y. |
| double fabs (double x); | Вычисляет абсолютное значение числа х (иными словами, его модуль) |
| double fmod (double x, double y); | Вычисляет остаток от деления х на y. |
| double ceil (double x); | Вычисляет наименьшее целое, значение которого не будет меньшим, чем х. Например, функция ceil (4.68) вернет значение 5.00. |
| double floor (double x); | В отличии от предыдущей функции эта функция вычисляет наибольшее целое, по значению не превосходящее х. Например, функция floor (4.68) вернет значение 4.00. |
| double modf (double value, double *ptr); | Разбивает значение аргумента value на целую и дробные части. Целую часть функция сохраняет в объекте на который указывает указатель *ptr, а дробную возвращает. |
| double cos (double x); | Вычисляет косинус аргумента х, который задается в радианах |
| double sin (double x); | То же, но синус |
| double tan (double x); | То же, но тангенс |
| double acos (double x); | Вычисляет главное значение арккосинуса х. Аргумент х должен быть из интервала [-1 ; +1]. Функция возвращает значение в радианах из интервала [0; p] |
| double asin (double x); | Вычисляет главное значение арксинуса х. Аргумент х должен быть из интервала [-1 ; +1]. Функция возвращает значение в радианах из интервала [- p/2; + p/2] |
| double atan (double x); | Вычисляет главное значение арктангенса х. |
| double exp (double x); | Вычисляет значение показательной функции аргумента х. |
| double log (double x); | Вычисляет натуральный логарифм аргумента х. |
| double log10 (double x); | Вычисляет десятичный логарифм аргумента х. |
2 Работа с файлами и другими потоками в С++
Под файлом тут понимается область внешней памяти (жесткого диска), которой в операционной системе присвоено имя. При закрытии программы, область памяти, в которой работала программа возвращается операционной системе, при этом мы никак не сможем повторно получить эти данные. Если нужно хранить информацию между запусками программы — используем файлы.
Поддержка операционной системы состоит в том, что в ней имеются средства:
создания файлов;
уничтожения файлов;
поиска файлов на внешнем носителе;
чтения и записи из файлов и в файлы;
открытия файлов;
закрытия файлов;
позиционирования файлов.
Любой сколько-нибудь развитый язык программирования должен содержать средства для организации хранения информации на внешних запоминающих устройствах и доступа к этой информации. Язык С++ не лишен таких возможностей.
Любой файл в С++ имеет три характерные особенности:
у файла есть имя, это дает возможность работать с несколькими файлами одновременно;
содержит компоненты одного типа (типом может быть любой тип, кроме файлового);
длина вновь создаваемого файла никак не ограничена при объявлении и ограничивается лишь емкостью внешних устройств памяти.
Файлы могут быть текстовыми и двоичными (типизированными). Вид файла определяется способом хранения информации в файле.
Текстовый файл можно представить как набор строк произвольной длины. Для деления на строки используется управляющий символ «\n». Он является файлом последовательного доступа. Логически текстовый файл можно представить как именованную цепочку байтов, имеющую начало и конец. Чтение (или запись) из файла (в файл) ведется байт за байтом от начала к концу. Перед первым обращением к функциям ввода-вывода указатель файла стоит в его начале и указывает на первый компонент. После каждого чтения или записи указатель сдвигается на заданное количество байт. Такой способ доступа называется последовательным. Текстовые файлы оказываются переносимыми с одного типа компьютера на другой, если символы, содержащиеся в файле, принадлежат стандартному набору символов (т.е. не используются дополнительные символы, такие, например, как символы псевдографики фирмы IBM).
Рассмотрим текстовые файлы. Каждой программе доступны два стандартных файла stdin (клавиатура) и stdout (экран). Это — текстовые файлы. Любые другие файлы становятся доступными после выполнения специальных процедур. Рассмотрим основные функции для работы с текстовыми файлами.
Например, необходимо создать текстовый файл и записать в него строку «Скоро Новый год!». Для этого необходимо проделать следующие шаги:
создать объект класса ofstream;
связать этот объект с файлом, в который будет производиться запись;
записать строку в файл;
закрыть файл.
Например, создаём объект fout для записи в файл:
ofstream out ; // объект класса ofstream
Объект создан, связываем его с файлом, в который планируется записать строку:
out.open(«out.txt»); // связываем объект с файлом
Указанный файл будет создан в текущей директории. Если файл с таким именем существует, то существующий файл будет заменен новым. Итак, файл открыт, записываем в него нужную строку:
Так как больше нет необходимости изменять содержимое файла, его нужно закрыть, то есть отделить объект от файла.
out.close (); // закрываем файл
Шаги по созданию объекта и связыванию его с файлом можно объединить:
Объединим весь код и получим следующую программу.
При считывании данных из файла может произойти ситуация достижения конца файла (end of file, сокращенно EOF). После достижения конца файла никакое чтение из файла невозможно. Для того чтобы проверить состояние файла, необходимо вызвать метод eof(). Данный метод возвращает true, если конец файла достигнут или false, если не достигнут. Например, в файле в текстовом файле File.txt хранится последовательность целых чисел, необходимо их считать и найти сумму:
Кроме того, состояние файлового потока можно проверить, если просто использовать в качестве условия результат, возвращаемой операцией считывания. Если считывание было удачным, то результат считается истиной, а если неудачным – ложью:
Организацию считывания файла построчно (считая, что строка заканчивается символом перехода на новую строку) продемонстрируем на примере кодирования файла путем замены кода символа следующим кодом из таблицы ASCII :



