Numerics library
The C++ numerics library includes common mathematical functions and types, as well as optimized numeric arrays and support for random number generation.
Contents |
[edit]Mathematical functions and types
[edit]Common mathematical functions
The header <cmath> provides standard C library mathematical functions such as std::fabs, std::sqrt, and std::sin.
[edit]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.
[edit]Mathematical constants(since C++20)
The header <numbers> provides several mathematical constants, such as std::numbers::pi or std::numbers::sqrt2
[edit]Basic linear algebra algorithms(since C++26)
The header <linalg> provides basic linear algebra algorithms which are based on BLAS.
[edit]Data-parallel types(since C++26)
The header <simd> provides portable types for explicitly stating data-parallelism and structuring data for more efficient SIMD access.
[edit]Complex number arithmetic
Defined in header <complex> | |
a complex number type (class template) |
[edit]Numeric arrays
Defined in header <valarray> | |
numeric arrays, array masks and array slices (class template) |
[edit]Numeric algorithms
The header <numeric> provides numeric algorithms below:
[edit]Factor operations (since C++17)
Defined in header <numeric> | |
(C++17) | computes the greatest common divisor of two integers (function template) |
(C++17) | computes the least common multiple of two integers (function template) |
[edit]Interpolation operations (C++20)
Defined in header <numeric> | |
(C++20) | midpoint between two numbers or pointers (function template) |
Defined in header <cmath> | |
(C++20) | linear interpolation function (function) |
[edit]Saturation arithmetic (since C++26)
Defined in header <numeric> | |
(C++26) | saturating addition operation on two integers (function template) |
(C++26) | saturating subtraction operation on two integers (function template) |
(C++26) | saturating multiplication operation on two integers (function template) |
(C++26) | saturating division operation on two integers (function template) |
(C++26) | returns an integer value clamped to the range of another integer type (function template) |
[edit]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 (algorithm function object) |
sums up or folds 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) |
[edit]Miscellaneous
[edit]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.
[edit]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.
[edit]Bit manipulation(since C++20)
The header <bit> provides several function templates to access, manipulate, and process individual bits and bit sequences. The byte ordering (endianness) of scalar types can be inspected via std::endian facility.
[edit]Checked integer arithmetic (since C++26)
The C compatibility header <stdckdint.h> provides several function templates for checked integer arithmetic.
Defined in header <stdckdint.h> | |
(C++26) | checked addition operation on two integers (function template) |
(C++26) | checked subtraction operation on two integers (function template) |
(C++26) | checked multiplication operation on two integers (function template) |
[edit]See also
C documentation for Numerics |