Numerics library
The C++ numerics library includes common mathematical functions and types, as well as optimized numeric arrays and support for random number generation.
Mathematical functions and types
Common mathematical functions
The header <cmath> provides standard C library mathematical functions such as std::fabs, std::sqrt, and std::sin.
Mathematical special functions (since C++17)
The header <cmath> also provides several mathematical special functions such as std::beta, std::hermite, and std::cyl_bessel_i.
Mathematical constants (since C++20)
The header <numbers> provides several mathematical constants, such as std::numbers::pi or std::numbers::sqrt2
Complex number arithmetic
| Defined in header  <complex> | |
| a complex number type (class template) | |
Numeric arrays
| Defined in header  <valarray> | |
| numeric arrays, array masks and array slices (class template) | |
Numeric algorithms
The header <numeric> provides numeric algorithms below:
Factor operations
| Defined in header  <numeric> | |
| (C++17) | constexprfunction template returning the greatest common divisor of two integers(function template) | 
| (C++17) | constexprfunction template returning the least common multiple of two integers(function template) | 
Interpolation operations
| Defined in header  <numeric> | |
| (C++20) | midpoint between two numbers or pointers (function template) | 
| Defined in header  <cmath> | |
| (C++20) | linear interpolation function (function) | 
Numeric operations
| Defined in header  <numeric> | |
| (C++11) | fills a range with successive increments of the starting value (function template) | 
| (C++23) | fills a range with successive increments of the starting value (niebloid) | 
| sums up a range of elements (function template) | |
| (C++17) | similar to std::accumulate, except out of order (function template) | 
| (C++17) | applies an invocable, then reduces out of order (function template) | 
| computes the inner product of two ranges of elements (function template) | |
| computes the differences between adjacent elements in a range (function template) | |
| computes the partial sum of a range of elements (function template) | |
| (C++17) | similar to std::partial_sum, includes the ith input element in the ith sum (function template) | 
| (C++17) | similar to std::partial_sum, excludes the ith input element from the ith sum (function template) | 
| (C++17) | applies an invocable, then calculates inclusive scan (function template) | 
| (C++17) | applies an invocable, then calculates exclusive scan (function template) | 
Miscellanous
Pseudo-random number generation
The header <random> defines pseudo-random number generators and numerical distributions. The header <cstdlib> also includes C-style random number generation via std::srand and std::rand.
Floating-point environment (since C++11)
The header <cfenv> defines flags and functions related to exceptional floating-point state, such as overflow and division by zero.
Bit manipulation (since C++20)
The header <bit> provides several function templates to access, manipulate, and process individual bits and bit sequences.
| Defined in header  <bit> | |
| Defined in  namespace  std | |
| (C++20) | reinterpret the object representation of one type as that of another (function template) | 
| (C++23) | reverses the bytes in the given integer value (function template) | 
| (C++20) | checks if a number is an integral power of two (function template) | 
| (C++20) | finds the smallest integral power of two not less than the given value (function template) | 
| (C++20) | finds the largest integral power of two not greater than the given value (function template) | 
| (C++20) | finds the smallest number of bits needed to represent the given value (function template) | 
| (C++20) | computes the result of bitwise left-rotation (function template) | 
| (C++20) | computes the result of bitwise right-rotation (function template) | 
| (C++20) | counts the number of consecutive 0 bits, starting from the most significant bit (function template) | 
| (C++20) | counts the number of consecutive 1 bits, starting from the most significant bit (function template) | 
| (C++20) | counts the number of consecutive 0 bits, starting from the least significant bit (function template) | 
| (C++20) | counts the number of consecutive 1 bits, starting from the least significant bit (function template) | 
| (C++20) | counts the number of 1 bits in an unsigned integer (function template) | 
| (C++20) | indicates the endianness of scalar types (enum) |