Jump to content

C mathematical functions: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Removing iw
Ruud Koot (talk | contribs)
m Reverted edits by Christian75 (talk) to last version by 1exec1
Line 179: Line 179:


[[Category:C Standard Library]]
[[Category:C Standard Library]]

[[cs:Math.h]]
[[de:Math.h]]
[[es:Math.h]]
[[ko:Math.h]]
[[it:Math.h]]
[[pt:Math.h]]
[[ru:Math.h]]
[[sk:Math.h]]
[[tr:Math.h]]
[[uk:Math.h]]

Revision as of 22:40, 31 October 2011

C mathematical operations are a group of functions in the standard library of the C programming language[citation needed] implementing basic mathematical functions. Most of the functions involve the use of floating point numbers. [1] Most of the functions involve the use of floating point numbers. Different C standards provide different albeit backwards-compatible, sets of functions. C mathematical functions are inherited in C++.

Overview of functions

Most of the mathematical functions are placed in math.h header (cmath header in C++). The functions that operate on integers, such as abs, labs, div, and ldiv, are instead specified in the stdlib.h header (cstdlib header in C++).

Any functions that operate on angles use radians as the unit of angle.[1]

In C89, all functions accept only the type double for the floating-point arguments. In C99, this limitation was fixed by introducing new sets of functions with f and l suffixes that work on float and long double arguments respectively.

  • abs, labs, llabs - computes absolute value of an integral value
  • fabs - computes absolute value of a floating point value
  • div, ldiv, lldiv - computes the quotient and remainder of integer division
  • fmod- remainder of the floating point division operation
  • remainder - signed remainder of the division operation
  • remquo - signed remainder as well as the three last bits of the division operation
  • fma - fused multiply-add operation
  • fmax - larger of two floating point values
  • fmin - smaller of two floating point values
  • fdim - positive difference of two floating point values
  • nan, nanf, nanl - returns a not-a-number (NaN)
Exponential functions
  • exp - returns e raised to the given power
  • exp2 - returns 2 raised to the given power
  • expm1 - returns e raised to the given power, minus one
  • log - computes natural (base e) logarithm (to base e)
  • log10 - computes common (base 10) logarithm
  • log1p - computes natural logarithm (to base e) of 1 plus the given number
  • ilogb - extracts exponent of the number
  • logb - extracts exponent of the number
Power functions
Trigonometric functions
Hyperbolic functions
  • sinh - computes hyperbolic sine
  • cosh - computes hyperbolic cosine
  • tanh - computes hyperbolic tangent
  • asinh - computes hyperbolic arc sine
  • acosh - computes hyperbolic arc cosine
  • atanh - computes hyperbolic arc tangent
Error and gamma functions
Nearest integer floating point operations
  • ceil - returns the nearest integer not less than the given value
  • floor - returns the nearest integer not greater than the given value
  • trunc - returns the nearest integer not greater in magnitude than the given value
  • round, lround, llround - returns the nearest integer, rounding away from zero in halfway cases
  • nearbyint - returns the nearest integer using current rounding mode
  • rint, lrint, llrint - returns the nearest integer using current rounding mode with exception if the result differs
Floating point manipulation functions
  • frexp - decomposes a number into significand and a power of 2
  • ldexp - multiplies a number by 2 raised to a power
  • modf - decomposes a number into integer and fractional parts
  • scalbn, scalbln - multiplies a number by FLT_RADIX raised to a power
  • nextafter, nexttoward - returns next representable floating point value towards the given value
  • copysign - copies the sign of a floating point value
Classification
  • fpclassify - categorizes the given floating point value
  • isfinite - checks if the given number has finite value
  • isinf - checks if the given number is infinite
  • isnan - checks if the given number is NaN
  • isnormal - checks if the given number is normal
  • signbit - checks if the given number is negative

Floating point environment

Declaration Description
int feclearexcept(int excepts); clear exceptions specified by excepts
int fegetenv(fenv_t *penv); store current floating-point environment in penv
int fegetexceptflag(fexcept_t *pflag, int excepts); store current status flags in pflags
int fegetround(void); retrieve current rounding direction
int feholdexcept(fenv_t *penv); save current floating-point environment to penv and clear all exceptions
int feraiseexcept(int excepts); raise floating-point exceptions
int fesetenv(const fenv_t *penv); set current floating-point environment to penv
int fesetexceptflag(const fexcept_t *pflags, int excepts); set current status flags to those stored in pflags
int fesetround(int round); set current rounding direction to round
int fetestexcept(int excepts); test whether certain exceptions have been raised
int feupdateenv(const fenv_t *penv); restore floating-point environment penv, but keep current exceptions
int fesetprec(int prec) Sets the precision mode to the value specified by prec.


Complex numbers

C99 adds a new _Complex keyword that provides support for complex numbers. Any floating point type can be modified with _Complex. In that case, a variable of such type contains a pair of floating point numbers and in such a way defines a complex number. C++ does not provide complex numbers in backwards compatible way. As an alternative, std::complex can be used.

All operations on complex numbers are defined in complex.h header.


Basic operations
Exponentiation operations
Trigonometric operations
Hyperbolic operations

Type-generic functions

The header tgmath.h defines a type-generic macro for each mathematical function, so that the same function name can be used to call functions accepting different types of the arguments.

References

  1. ^ a b ISO/IEC 9899:1999 specification (PDF). p. 212, § 7.12.