expm1(), expm1f()

Вычислить экспоненту числа, затем вычесть единицу

Прототип:

#include <math.h>
double expm1( double n );
float expm1f( float n );

Аргументы:

n
Число, для которого требуется рассчитать экспоненциальную функцию и вычесть единицу.

Библиотека:

libm

Описание:

Функции expm1() и expm1f() вычисляют экспоненциальную функцию от числа n, и отнимают от результата 1: (eⁿ - 1).

Ошибка диапазона возникает при слишком больших значениях числа n.

Значение expm1( n ) может быть более точным, чем exp( n ) - 1.0 для малых значений n.

Функции expm1() и log1p() полезны для финансовых расчетов ((1 + x)ⁿ - 1) / x, особенно:

expm1( n * log1p( x ) ) / x

когда n очень мало (например, при выполнении расчетов с небольшой дневной процентной ставкой). Эти функции также упрощают процесс написания функций для точных обратных гиперболических вычислений.

Возвращаемое значение:

Экспоненциальное значение n с вычтенной единицей.


Note: В случае возникновения ошибки, эти функции возвращают 0, который также может быть и достоверным математическим результатом. Если вам необходимо проверить, возникла ли ошибка, установите errno в 0, вызовите функцию, и затем снова проверьте errno. Эти функции не изменяют errno в случае отсутствия ошибок.

Примеры:

#include <stdio.h>
#include <errno.h>
#include <inttypes.h>
#include <math.h>
#include <fpstatus.h>
int main( void )
{
double a, b;
a = 2;
b = expm1( a );
printf( "(e ^ %f) -1 is %f \n", a, b );
return (0);
}

Код генерирует следующий вывод:

$ ./a.out (e ^ 2.000000) -1 is 6.389056

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

exp(), log1p()




Предыдущий раздел: Описание API математической библиотеки