Numerics library - cppreference.com (2025)

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

iota

(C++11)

ranges::iota

(C++23)

accumulate

inner_product

adjacent_difference

partial_sum

reduce

(C++17)

transform_reduce

(C++17)

inclusive_scan

(C++17)

exclusive_scan

(C++17)

transform_inclusive_scan

(C++17)

transform_exclusive_scan

(C++17)

C-style checked integer arithmetic

ckd_add

(C++26)

ckd_sub

(C++26)

ckd_mul

(C++26)


[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>

complex

a complex number type
(class template)

[edit] Numeric arrays

Defined in header <valarray>

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 <numeric>

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 <numeric>

midpoint

(C++20)

midpoint between two numbers or pointers
(function template) [edit]

Defined in header <cmath>

lerp

(C++20)

linear interpolation function
(function) [edit]

[edit] Saturation arithmetic (since C++26)

Defined in header <numeric>

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 <numeric>

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 <stdckdint.h>

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

Numerics library - cppreference.com (2025)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Saturnina Altenwerth DVM

Last Updated:

Views: 6414

Rating: 4.3 / 5 (64 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Saturnina Altenwerth DVM

Birthday: 1992-08-21

Address: Apt. 237 662 Haag Mills, East Verenaport, MO 57071-5493

Phone: +331850833384

Job: District Real-Estate Architect

Hobby: Skateboarding, Taxidermy, Air sports, Painting, Knife making, Letterboxing, Inline skating

Introduction: My name is Saturnina Altenwerth DVM, I am a witty, perfect, combative, beautiful, determined, fancy, determined person who loves writing and wants to share my knowledge and understanding with you.