Numerics library - cppreference.com (original) (raw)
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 provides standard C library mathematical functions such as std::fabs, std::sqrt, and std::sin.
[edit] Mathematical special functions (since C++17)
The header 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 provides several mathematical constants, such as std:🔢:pi or std:🔢:sqrt2
[edit] Basic linear algebra algorithms (since C++26)
The header provides basic linear algebra algorithms which are based on BLAS.
[edit] Data-parallel types (since C++26)
The header provides portable types for explicitly stating data-parallelism and structuring data for more efficient SIMD access.
[edit] Complex number arithmetic
[edit] Numeric arrays
[edit] Numeric algorithms
The header provides numeric algorithms below:
[edit] Factor operations (since C++17)
[edit] Interpolation operations (C++20)
[edit] Saturation arithmetic (since C++26)
Defined in header | |
---|---|
add_sat(C++26) | saturating addition operation on two integers (function template) [edit] |
sub_sat(C++26) | saturating subtraction operation on two integers (function template) [edit] |
mul_sat(C++26) | saturating multiplication operation on two integers (function template) [edit] |
div_sat(C++26) | saturating division operation on two integers (function template) [edit] |
saturate_cast(C++26) | returns an integer value clamped to the range of another integer type (function template) [edit] |
[edit] Numeric operations
Defined in header | |
---|---|
iota(C++11) | fills a range with successive increments of the starting value (function template) [edit] |
ranges::iota(C++23) | fills a range with successive increments of the starting value(algorithm function object)[edit] |
accumulate | sums up or folds a range of elements (function template) [edit] |
reduce(C++17) | similar to std::accumulate, except out of order (function template) [edit] |
transform_reduce(C++17) | applies an invocable, then reduces out of order (function template) [edit] |
inner_product | computes the inner product of two ranges of elements (function template) [edit] |
adjacent_difference | computes the differences between adjacent elements in a range (function template) [edit] |
partial_sum | computes the partial sum of a range of elements (function template) [edit] |
inclusive_scan(C++17) | similar to std::partial_sum, includes the ith input element in the ith sum (function template) [edit] |
exclusive_scan(C++17) | similar to std::partial_sum, excludes the ith input element from the ith sum (function template) [edit] |
transform_inclusive_scan(C++17) | applies an invocable, then calculates inclusive scan (function template) [edit] |
transform_exclusive_scan(C++17) | applies an invocable, then calculates exclusive scan (function template) [edit] |
[edit] Miscellaneous
[edit] Pseudo-random number generation
The header defines pseudo-random number generators and numerical distributions. The header also includes C-style random number generation via std::srand and std::rand.
[edit] Floating-point environment (since C++11)
The header 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 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.