/C++

# Numerics library

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`.

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

### Numeric operations

Defined in header `<numeric>`
(C++11)
fills a range with successive increments of the starting value
(function template)
sums up a range of elements
(function template)
(C++17)
similar to `std::accumulate`, except out of order
(function template)
(C++17)
applies a functor, 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)
(C++17)
similar to `std::partial_sum`, includes the ith input element in the ith sum
(function template)
(C++17)
similar to `std::partial_sum`, excludes the ith input element from the ith sum
(function template)
(C++17)
applies a functor, then calculates inclusive scan
(function template)
(C++17)
applies a functor, 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`
reinterpret the object representation of one type as that of another
(function template)
checks if a number is an integral power of two
(function template)
finds the smallest integral power of two not less than the given value
(function template)
finds the largest integral power of two not greater than the given value
(function template)
finds the smallest number of bits needed to represent the given value
(function template)