Numerics library - cppreference.com

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

Basic linear algebra algorithms

(since C++26)

The header

<linalg>

provides basic linear algebra algorithms which are based on BLAS.

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.

Complex number arithmetic

Numeric arrays

numeric arrays, array masks and array slices
(class template)Numeric algorithms

The header

<numeric>

provides numeric algorithms below:

Factor operations (since C++17)

(C++17)

computes the greatest common divisor of two integers
(function template)

[edit]

(C++17)

computes the least common multiple of two integers
(function template)

[edit]

Interpolation operations (C++20)

Saturation arithmetic (since C++26)

Defined in header

<numeric>

saturating_add

(C++26)

saturating addition operation on two integers
(function template)

[edit]

saturating_sub

(C++26)

saturating subtraction operation on two integers
(function template)

[edit]

saturating_mul

(C++26)

saturating multiplication operation on two integers
(function template)

[edit]

saturating_div

(C++26)

saturating division operation on two integers
(function template)

[edit]

saturating_cast

(C++26)

returns an integer value clamped to the range of another integer type
(function template)

[edit]

Numeric operations

Defined in header

<numeric>

iota

(C++11)

fills a range with successive increments of the starting value
(function template & algorithm function object)

[edit]

ranges::iota

(C++23)

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]

Miscellaneous

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. The byte ordering (

endianness

) of scalar types can be inspected via std::endian facility.

Checked integer arithmetic (since C++26)

The C compatibility header

<stdckdint.h>

provides several function templates for checked integer arithmetic.

(C++26)

checked addition operation on two integers
(function template)

[edit]

(C++26)

checked subtraction operation on two integers
(function template)

[edit]

(C++26)

checked multiplication operation on two integers
(function template)

[edit]

See also