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 | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
|
Functions | ||||||||||||||||
Basic operations | ||||||||||||||||
| ||||||||||||||||
Exponential functions | ||||||||||||||||
Power functions | ||||||||||||||||
Trigonometric and hyperbolic functions | ||||||||||||||||
Error and gamma functions | ||||||||||||||||
Nearest integer floating point operations | |||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||
Floating point manipulation functions | |||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||
Classification and comparison | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
Types | |||||||||||||||||||||||||||||||||||||||||
Macro constants | |||||||||||||||||||||||||||||||||||||||||
|
|
Defined in header <cstdlib> | ||
Defined in header <cmath> | ||
int abs(int num); | (1) | (constexpr since C++23) |
long abs(long num); | (2) | (constexpr since C++23) |
longlong abs(longlong num); | (3) | (since C++11) (constexpr since C++23) |
Defined in header <cstdlib> | ||
long labs(long num); | (4) | (constexpr since C++23) |
longlong llabs(longlong num); | (5) | (since C++11) (constexpr since C++23) |
Defined in header <cinttypes> | ||
std::intmax_t abs(std::intmax_t num); | (6) | (since C++11) (constexpr since C++23) |
std::intmax_t imaxabs(std::intmax_t num); | (7) | (since C++11) (constexpr since C++23) |
Computes the absolute value of the integer numbernum. The behavior is undefined if the result cannot be represented by the return type.
Ifstd::abs
is called with an unsigned integral argument that cannot be converted toint byintegral promotion, the program is ill-formed.
Overload(6) of | (since C++11) |
Contents |
num | - | integer value |
The absolute value ofnum (i.e.|num|
), if it is representable.
In2's complement systems, the absolute value of the most-negative value is out of range, e.g. for 32-bit 2's complement typeint,INT_MIN is-2147483648, but the would-be result2147483648 is greater thanINT_MAX, which is2147483647.
#include <climits>#include <cstdlib>#include <iostream> int main(){std::cout<<std::showpos<<"abs(+3) = "<< std::abs(3)<<'\n'<<"abs(-3) = "<< std::abs(-3)<<'\n'; // std::cout << std::abs(INT_MIN); // undefined behavior on 2's complement systems}
Output:
abs(+3) = +3abs(-3) = +3
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2192 | C++98 | overloads ofstd::abs wereinconsistently declared in two headers | declared these overloads in both headers |
(C++11)(C++11) | absolute value of a floating point value (\(\small{|x|}\)|x|) (function)[edit] |
returns the magnitude of a complex number (function template)[edit] | |
applies the functionabs to each element of valarray (function template)[edit] | |
C documentation forabs,labs,llabs |