C++
Compiler support | ||||
Freestanding and hosted | ||||
Language | ||||
Standard library | ||||
Standard library headers | ||||
Named requirements | ||||
Feature test macros (C++20) | ||||
Language support library | ||||
Concepts library (C++20) | ||||
Diagnostics library | ||||
Memory management library | ||||
Metaprogramming library (C++11) | ||||
General utilities library | ||||
Containers library | ||||
Iterators library | ||||
Ranges library (C++20) | ||||
Algorithms library | ||||
Strings library | ||||
Text processing library | ||||
Numerics library | ||||
Date and time library | ||||
Input/output library | ||||
Filesystem library (C++17) | ||||
Concurrency support library (C++11) | ||||
Execution control library (C++26) | ||||
Technical specifications | ||||
Symbols index | ||||
External libraries |
[edit]
Numerics library
Common mathematical functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mathematical special functions (C++17) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mathematical constants (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Basic linear algebra algorithms (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Data-parallel types (SIMD) (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Floating-point environment (C++11) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Numeric array (valarray) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bit manipulation (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Saturation arithmetic (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gcd (C++17) | lcm (C++17) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
midpoint (C++20) | lerp (C++20) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
[edit]
The C++ numerics library includes common mathematical functions and types, as well as optimized numeric arrays and support for random number generation.
Contents
- 1 Mathematical functions and types
- 1.1 Common mathematical functions
- 1.2 Mathematical special functions (since C++17)
- 1.3 Mathematical constants (since C++20)
- 1.4 Basic linear algebra algorithms (since C++26)
- 1.5 Data-parallel types (since C++26)
- 1.6 Complex number arithmetic
- 1.7 Numeric arrays
- 2 Numeric algorithms
- 2.1 Factor operations (since C++17)
- 2.2 Interpolation operations (C++20)
- 2.3 Saturation arithmetic (since C++26)
- 2.4 Numeric operations
- 3 Miscellaneous
- 3.1 Pseudo-random number generation
- 3.2 Floating-point environment (since C++11)
- 3.3 Bit manipulation (since C++20)
- 3.4 Checked integer arithmetic (since C++26)
- 3.5 See also
[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 | |
gcd (C++17) | computes the greatest common divisor of two integers (function template) [edit] |
lcm (C++17) | computes the least common multiple of two integers (function template) [edit] |
[edit] Interpolation operations (C++20)
Defined in header | |
midpoint (C++20) | midpoint between two numbers or pointers (function template) [edit] |
Defined in header | |
lerp (C++20) | linear interpolation function (function) [edit] |
[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 <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 | |
ckd_add (C++26) | checked addition operation on two integers (function template) [edit] |
ckd_sub (C++26) | checked subtraction operation on two integers (function template) [edit] |
ckd_mul (C++26) | checked multiplication operation on two integers (function template) [edit] |
[edit] See also
C documentation for Numerics