- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <multiset >
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <unordered_multiset>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ cmath fabs() Function
The C++ cmath fabs() function computes the absolute value of a floating-point number. The absolute value of a number is its distance from zero on the number line, without considering direction. This means that negative numbers become positive, while positive numbers and zero remain the same.
It accepts a single parameter of type float, double, or long double and returns the absolute (positive) value of that number with the same type. This function is commonly used in general mathematical operations where negative values need to be converted to their positive equivalents.
Syntax
Following is the syntax for C++ cmath fabs() function.
double fabs(double x); or float fabs(float x); or long double fabs(long double x);
Parameters
x - The value whose absolute value is to be computed.
Return Value
The function returns the absolute value of the given number as a floating-point value.
Time Complexity
The time complexity of this function is constant, i.e.,O(1).
Example 1
The following example, demonstrate the basic absolute value calculation using fabs() function.
#include <iostream>
#include <cmath>
int main() {
double num = -25.6;
std::cout << "Absolute value of " << num << " is: " << std::fabs(num) << std::endl;
return 0;
}
Output
Output of the above code is as follows
Absolute value of -25.6 is: 25.6
Example 2
This example illustrates, that fabs() correctly handles zero, returning 0.0 when the input is 0.
#include <iostream>
#include <cmath>
int main() {
double x = 0.0;
double result = fabs(x);
std::cout << "fabs(0.0) = " << result << std::endl;
return 0;
}
Output
If we run the above code it will generate the following output
fabs(0.0) = 0
Example 3
Let's take a real time scenario, finding the magnitude of changes in environmental measurements by using fabs(), ignoring whether the change was an increase or decrease.
#include <iostream>
#include <cmath>
int main() {
float temperature_difference = -3.2f;
float humidity_difference = 4.7f;
float temp_magnitude = std::fabs(temperature_difference);
float humidity_magnitude = std::fabs(humidity_difference);
std::cout << "Temperature change magnitude: " << temp_magnitude << "C" << std::endl;
std::cout << "Humidity change magnitude: " << humidity_magnitude << "%" << std::endl;
return 0;
}
Output
Following is the output of the above code
Temperature change magnitude: 3.2C Humidity change magnitude: 4.7%