Вычислить экспоненту числа, затем вычесть единицу
#include <math.h>double expm1( double n );float expm1f( float 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 с вычтенной единицей.
![]() | В случае возникновения ошибки, эти функции возвращают 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
Предыдущий раздел: Описание API математической библиотеки