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.

[edit] See also