Numerics library

From cppreference.com
< cpp
 
 
 

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.

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)
computes the greatest common divisor of two integers
(function template)
(C++17)
computes 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)

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)
returns an integer value clamped to the range of a another integer type
(function template)

Numeric operations

Defined in header <numeric>
(C++11)
fills a range with successive increments of the starting value
(function template)
fills a range with successive increments of the starting value
(niebloid)
sums up or folds a range of elements
(function template)
(C++17)
similar to std::accumulate, except out of order
(function template)
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)
similar to std::partial_sum, includes the ith input element in the ith sum
(function template)
similar to std::partial_sum, excludes the ith input element from the ith sum
(function template)
applies an invocable, then calculates inclusive scan
(function template)
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)
checks if a number is an integral power of 2
(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)
counts the number of consecutive 0 bits, starting from the most significant bit
(function template)
counts the number of consecutive 1 bits, starting from the most significant bit
(function template)
counts the number of consecutive 0 bits, starting from the least significant bit
(function template)
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)

See also

C documentation for Numerics