debería<math.h>头包含了与数学打交道的几个函数的原型。在ISO标准的1990版本中,仅double指定了函数的版本; 1999版增加了floatresponder cantandolong double版本。要使用这些数学函数,必须将程序与数学库链接。对于某些编译器(包括GCC),必须指定附加参数-lm[1] [2].
数学函数可能会产生两种错误之一。当函数的参数无效时会发生域错误,例如负数作为sqrt的参数(平方根函数)。如果函数的结果不能以特定的浮点类型表示,则会发生范围错误,例如pow(1000.0,1000.0),如果double的最大值大约为10 308.
这些功能可以分为以下几类:
三角函数
acosresponder cantandoasinfuncionalidad
deberíaacos函数返回其参数的反余弦弧度,和asin函数返回其参数的反正弦弧度。所有函数都期望参数在[-1,+ 1]范围内。反余弦返回[0,π]范围内的值; arcsine返回[-π/ 2,+π/ 2]范围内的值。
1TP5Incluido <math.h> float asinf (float x ); / * C99 * / float acosf (float x ); / * C99 * / double asin (double x ); 双 acos (双 x ); 长 双 asinl (长 双 x ); / * C99 * / 长 双 acosl (长 双 x ); / * C99 * /
atanresponder cantandoatan2funcionalidad
deberíaatan函数返回其参数的反正切弧度,和atan2函数返回的反正切y/x弧度。的atan功能的范围内返回一个值[-π/ 2,+π/ 2](之所以±π/ 2被包括在范围内是因为,浮点型值可以表示无穷大,ATAN(±∞)= ±π/ 2); 该atan2功能在范围[-π,+π]返回一个值。因为atan2,如果两个参数都为零,则可能会出现域错误。
1TP5Incluido <math.h> float atanf (float x ); / * C99 * / float atan2f (float y , float x ); / * C99 * / double atan (double x ); 双 atan2 (双 y , 双 x ); long double atanl (long double x ); / * C99 * / 长 双 atan2l (长 双 y , 长 双 x ); / * C99 * /
cos(matemáticas) génerosinresponder cantandotanfuncionalidad
(utilizado como expresión nominal)cos(matemáticas) génerosinresponder cantandotan函数返回余弦,正弦,和参数的正切,以弧度表示。
1TP5Incluido <math.h> float cosf (float x ); / * C99 * / float sinf (float x ); / * C99 * / float tanf (float x ); / * C99 * / 双 cos (双 x ); 双 罪(双 x ); 双 棕褐色(双 x ); 长 双 cosl (长 双 x ); / * C99 * / long double sinl(长 双 x ); / * C99 * / 长 双 tanl (长 双 x ); / * C99 * /
双曲函数
的COSH,双曲正弦和双曲正切函数计算双曲余弦,双曲正弦,和分别自变量的双曲正切。对于双曲正弦和余弦函数,如果参数的幅度太大,则会发生范围错误。
所述ACOSH函数计算参数的反双曲余弦值。参数小于1时发生域错误。
所述ASINH函数计算参数的反双曲正弦。
所述ATANH函数计算参数的反双曲正切。如果参数不在区间[-1,+ 1]中,则会发生域错误。如果参数等于-1或+1,则可能发生范围错误。
1TP5Incluido <math.h> float coshf (float x ); / * C99 * / float sinhf (float x ); / * C99 * / float tanhf (float x ); / * C99 * / double cosh (double x ); double sinh (double x ); double tanh (double x ); 长 双 coshl (长 双 x ); / * C99 * / 长 双 sinhl(长 双 x ); / * C99 * / 长 双 tanhl (长 双 x ); / * C99 * / float acoshf (float x ); / * C99 * / float asinhf (float x ); / * C99 * / float atanhf (float x ); / * C99 * / 双 acosh (双 x ); / * C99 * / double asinh (double x ); / * C99 * / 双 atanh (双 x ); / * C99 * / long double acoshl (long double x ); / * C99 * / long double asinhl (long double x ); / * C99 * / long double atanhl (long double x ); / * C99 * /
指数和对数函数
exp(matemáticas) géneroexp2responder cantandoexpm1funcionalidad
(utilizado como expresión nominal)exp函数计算碱基Ë的指数函数x(Ë X)。如果幅度x太大,则会发生范围错误。
(utilizado como expresión nominal)exp2函数计算的基数为2的指数函数x(2 X)。如果幅度x太大,则会发生范围错误。
(utilizado como expresión nominal)expm1函数计算碱基Ë参数的指数函数,如果减去的大小发生1.一种范围误差x过大。
1TP5Incluido <math.h> float expf (float x ); / * C99 * / double exp (double x ); 长 双 爆(长 双 x ); / * C99 * / float exp2f (float x ); / * C99 * / double exp2 (double x ); / * C99 * / long double exp2l (long double x ); / * C99 * / float expm1f (float x); / * C99 * / double expm1 (double x ); / * C99 * / long double expm1l (long double x ); / * C99 * /
frexp(matemáticas) géneroldexp(matemáticas) géneromodf(matemáticas) géneroscalbn,和scalblnfuncionalidad
这些函数在软件浮点仿真器中大量使用,但很少直接调用。
在计算机内部,每个浮点数由两部分表示:
- 有效数位于[1/2,1]范围内,或者等于零。
- 指数是一个整数。
浮点数的值 {\ displaystyle v} 是 {\ displaystyle v = {\ rm {significand}} \ times 2 ^ {\ rm {exponent}}}。
talfrexp函数将参数浮点数分解为valor指数和有效数这两部分。将它拆开后,它将指数存储在int指向的对象中ex,并返回有效数。换句话说,返回的值是给定浮点数的副本,但指数替换为0.如果valor为零,则结果的两个部分都为零。
deberíaldexp功能由2的整数幂乘一个浮点数并返回结果。换句话说,它返回给定浮点数的副本,指数增加了ex。可能会出现范围错误。
talmodf函数将参数valor分解为整数和小数部分,每个部分都与参数具有相同的符号。它们将整数部分存储在指向的对象中*iptr并返回分数部分。它*iptr是一个浮点类型,而不是“int”类型,因为它可能用于存储一个像1 000 000 000 000 000 000 000这样的整数,这个整数太大而不适合int。
deberíascalbnresponder cantandoscalbln计算x× 。是浮点系统的基础; 如果它是2,则函数相当于。 FLT_RADIXnFLT_RADIXldexp
1TP5Incluido <math.h> float frexpf (float value , int * ex ); / * C99 * / double frexp (double value , int * ex ); long double frexpl (long double value , int * ex ); / * C99 * / float ldexpf (float x , int ex ); / * C99 * / double ldexp (double x , int ex); long double ldexpl (long double x , int ex ); / * C99 * / float modff (float value , float * iptr ); / * C99 * / double modf (double value , double * iptr ); long double modfl (long double value , long double * iptr ); / * C99 * / float scalbnf (float x , int ex ); / * C99 * / double scalbn (double x , int ex ); / * C99 * / long double scalbnl (long double x , int ex ); / * C99 * / float scalblnf (float x , long int ex ); / * C99 * / double scalbln (double x , long int ex ); / * C99 * / long double scalblnl (long double x , long int ex ); / * C99 * /
大多数C浮点库还实现了IEEE754推荐的nextafter(),nextUp()和nextDown()函数。
log(matemáticas) génerolog2(matemáticas) génerolog1p,和log10funcionalidad
deberíalog函数计算碱基ë自然((prefijo negativo)常见)参数的对数,并返回结果。如果参数为负,则会发生域错误。如果参数为零,则可能发生范围错误。
deberíalog1p函数计算碱基ë自然((prefijo negativo)常见)一个加参数的对数,并返回结果。如果参数小于-1,则会发生域错误。如果参数为-1,则可能发生范围错误。
(utilizado como expresión nominal)log10函数计算参数的共同(基-10)对数并返回结果。如果参数为负,则会发生域错误。如果参数为零,则可能发生范围错误。
(utilizado como expresión nominal)log2函数计算参数的基本对数2并返回结果。如果参数为负,则会发生域错误。如果参数为零,则可能发生范围错误。
1TP5Incluido <math.h> float logf (float x ); / * C99 * / double log (double x ); long double logl (long double x ); / * C99 * / float log1pf (float x ); / * C99 * / double log1p (double x ); / * C99 * / long double log1pl (long double x ); / * C99 * / float log10f (float x); / * C99 * / double log10 (double x ); long double log10l (long double x ); / * C99 * / float log2f (float x ); / * C99 * / double log2 (double x ); / * C99 * / long double log2l (long double x ); / * C99 * /
ilogbresponder cantandologbfuncionalidad
talilogb函数将指数提取x为signed int值。如果x为零,则返回值FP_ILOGB0; 如果x是无限的,他们会返回值INT_MAX; 如果x不是数字则返回值FP_ILOGBNAN; 否则,它们相当于调用相应的logb函数并将返回的值转换为type int。如果x为零,则可能发生范围错误。FP_ILOGB0además deFP_ILOGBNAN是定义的宏math.h; INT_MAX是一个定义的宏limits.h.
tallogbfunción (matem.)x以浮点格式提取指数为有符号整数值。如果x是低于正常的,则将其视为标准化; 因此,对于正有限x,1≤ x× < 。是标题中定义的浮点数的基数。 FLT_RADIX-logb(x)FLT_RADIXFLT_RADIXfloat.h
1TP5Incluido <math.h> int ilogbf (float x ); / * C99 * / int ilogb (double x ); / * C99 * / int ilogbl (long double x ); / * C99 * / float logbf (float x ); / * C99 * / double logb (double x ); / * C99 * / long double logbl (long double x ); / * C99 * /
电源功能
powfuncionalidad
deberíapow函数计算x幂,y并返回结果。如果x为负且y不是整数值,则会发生域错误。如果在x零为零且y小于或等于零时无法表示结果,则会发生域错误。可能会出现范围错误。
1TP5Incluido <math.h> float powf (float x , float y ); / * C99 * / 双 POW (双 X , 双 ÿ ); long double powl (长 双 x , 长 双 y ); / * C99 * /
sqrtfuncionalidad
deberíasqrt函数计算的正平方根x,并返回结果。如果参数为负,则会发生域错误。
1TP5Incluido <math.h> float sqrtf (float x ); / * C99 * / double sqrt (double x ); long double sqrtl (long double x ); / * C99 * /
cbrtfuncionalidad
deberíacbrt函数计算的立方根x并返回结果。
1TP5Incluido <math.h> float cbrtf (float x ); / * C99 * / double cbrt (double x ); / * C99 * / long double cbrtl (long double x ); / * C99 * /
hypot功能
(utilizado como expresión nominal)hypot函数计算的平方和的平方根xresponder cantandoy,没有上溢或下溢,并返回结果。
1TP5Incluido <math.h> float hypotf (float x , float y ); / * C99 * / 双 hypot将(双 X , 双 ÿ ); / * C99 * / 长 双 长皮(长 双 x , 长 双 y ); / * C99 * /
最近的整数,绝对值和余数函数
ceilresponder cantandofloorfuncionalidad
deberíaceil函数计算最小的积分值不小于x并返回结果; 该floor函数计算不大于最大积分值x,并返回结果。
1TP5Incluido <math.h> float ceilf (float x ); / * C99 * / double ceil (double x ); 长 双层 毛巾(长 双 x ); / * C99 * / float floorf (float x ); / * C99 * / 双 地板(双 X ); 长 双 floorl (长 双 X ); / * C99 * /
fabsfuncionalidad
talfabs函数计算浮点数的绝对值x并返回结果。
1TP5Incluido <math.h> float fabsf (float x ); / * C99 * / double fabs (double x ); long double fabsl (long double x ); / * C99 * /
fmodfuncionalidad
(utilizado como expresión nominal)fmod函数计算的浮点余x/y,并返回值x– me * y,对于某些整数me,使得如果y不为零,则结果具有相同的符号x和幅度小于的幅度y。如果y为零,则是否发生域错误或fmod函数返回零是实现定义的。
1TP5Incluido <math.h> float fmodf (float x , float y ); / * C99 * / double fmod (double x , double y ); long double fmodl (long double x , long double y ); / * C99 * /
nearbyint(matemáticas) génerorint(matemáticas) génerolrint,和llrintfuncionalidad
talnearbyint函数使用当前的舍入方向将它们的参数四舍五入为浮点格式的整数值,而不会引发“不精确”的浮点异常。
talrint函数与函数类似,nearbyint只是如果结果与参数的值不同,它们可以引发“不精确”的浮点异常。
(utilizado como expresión nominal)lrintresponder cantandollrint根据当前的舍入方向函数的循环它们的参数为最接近的整数值。如果结果超出返回类型的值范围,则数值结果未定义,并且如果参数的大小太大,则可能发生范围错误。
1TP5Incluido <math.h> float nearbyintf (float x ); / * C99 * / double nearbyint (double x ); / * C99 * / long double nearbyintl (long double x ); / * C99 * / float rintf (float x ); / * C99 * / 双 rint (双 x ); / * C99 * / long double rintl (long double x ); / * C99 * / long int lrintf(浮动 x ); / * C99 * / long int lrint (double x ); / * C99 * / long int lrintl (long double x ); / * C99 * / long long int llrintf (float x ); / * C99 * / long long int llrint (double x ); / * C99 * / long long int llrintl (long double x ); / * C99 * /
round(matemáticas) génerolroundresponder cantandollroundfuncionalidad
deberíaround轮的参数在浮点格式的最接近的整数值的功能,舍入半例远离零,而不考虑当前的舍入方向的。
(utilizado como expresión nominal)lroundresponder cantandollround函数的循环参数为最接近的整数的值,舍入半例远离零,而不考虑当前的舍入方向的。如果结果超出返回类型的值范围,则数值结果未定义,并且如果参数的大小太大,则可能发生范围错误。
1TP5Incluido <math.h> float roundf (float x ); / * C99 * / 双 圆(双 X ); / * C99 * / long double roundl (long double x ); / * C99 * / long int lroundf (float x ); / * C99 * / long int lround (double x ); / * C99 * / long int lroundl (long double x ); / * * C99 / 长 很长 int llroundf (float x ); / * C99 * / long long int llround (double x ); / * C99 * / long long int llroundl (long double x ); / * C99 * /
truncfuncionalidad
(utilizado como expresión nominal)trunc函数的循环其参数在浮点格式的整数值最接近但在幅度上大于该参数没有大。
1TP5Incluido <math.h> float truncf (float x ); / * C99 * / double trunc (double x ); / * C99 * / long double truncl (long double x ); / * C99 * /
remainderfuncionalidad
talremainder函数计算IEC 60559定义的余数xREM y。定义为:“当y ≠0时,无论舍入模式如何,通过数学简化r = x – ny定义余数r = x REM y,其中n是最接近x / y精确值的整数;只要| n – x / y | =½,则n是偶数。因此,余数总是精确的。如果r = 0,则其符号应为x的符号“这个定义适用于所有实现。
1TP5Incluido <math.h> float remainderf (float x , float y ); / * C99 * / 双 余数(双 x , 双 y ); / * C99 * / long double remainderl (long double x , long double y ); / * C99 * /
remquofuncionalidad
deberíaremquo函数返回相同的其余部分的remainder功能。在所指向的对象中quo,它们存储一个值,其符号为x/ 的符号,y其大小与/ 的整数商的大小一致2 n,其中n是大于或等于3的实现定义的整数。 xy
1TP5Incluido <math.h> float remquof (float x , float y , int * quo ); / * C99 * / double remquo (double x , double y , int * quo ); / * C99 * / long double remquol (long double x , long double y , int * quo ); / * C99 * /
错误和伽玛函数
deberíaerf函数计算参数的误差函数{\ displaystyle {\ frac {2} {\ sqrt {\ pi}}} \ int _ {0} ^ {x} e ^ { – t ^ {2}} \,\ mathrm {d} t}; 的erfc函数计算参数的互补误差函数(即,1 – ERF X)。对于erfc函数,如果参数太大,则可能发生范围错误。
deberíalgamma函数计算参数的伽玛的绝对值的自然对数(即,日志Ë |Γ(X)|)。如果参数是负整数或零,则可能发生范围错误。
(utilizado como expresión nominal)tgamma函数计算参数的伽马(即,Γ(x)的)。如果参数是负整数,或者如果参数为零时无法表示结果,则会发生域错误。可能会出现范围错误。
1TP5Incluido <math.h> float erff (float x ); / * C99 * / double erf (double x ); / * C99 * / 长 双 erfl (长 双 x ); / * C99 * / float erfcf (float x ); / * C99 * / double erfc (double x ); / * C99 * / long double erfcl (long double x ); / * C99 * / float lgammaf (float x ); / * C99 * / double lgamma (double x ); / * C99 * / long double lgammal (long double x ); / * C99 * / float tgammaf (float x ); / * C99 * / double tgamma (double x ); / * C99 * / long double tgammal (long double x ); / * C99 * /
Supongo que quieres leer:Programación en C. Intermedio C 8. Biblioteca



