- 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 nan() Function
The C++ nan() is used to generate a Not-a-Number (NaN) value, which is a special value in floating-point arithmetic. NaNs indicate that a particular computation does not have a valid numeric result. For example, operations like dividing zero by zero or taking the square root of a negative number will yield NaN.
Overall, std::nan() is a useful tool for ensuring that applications can manage invalid floating-point calculations effectively for floating-point calculations.
Syntax
Following is the syntax for C++ cmath nan() function.
double nan(const char* tagp); or float nanf(const char* tagp); or long double nanl(const char* tagp);
Parameters
tagp - A string used to provide an optional diagnostic message that can be associated with the NaN value. This parameter can be nullptr if no tag is needed.
Return Value
The function returns a NaN value of the specified floating-point type.
Time Complexity
The time complexity of this function is constant, i.e.,O(1).
Example 1
In the following example, we use std::nan() to create a NaN value without providing a diagnostic message.
#include <iostream>
#include <cmath>
int main() {
double nanValue = std::nan(nullptr); // Generate NaN without a tag
std::cout << "NaN value: " << nanValue << std::endl;
return 0;
}
Output
Output of the above code is as follows
NaN value: nan
Example 2
In this example, we create a NaN (Not a Number) value by assigning a specific tag.
#include <iostream>
#include <cmath>
int main() {
const char* tag = "Example Tag";
double nanValue = std::nan(tag); // Generate NaN with a tag
std::cout << "NaN value with tag: " << nanValue << std::endl;
return 0;
}
Output
Following is the output of the above code
NaN value with tag: nan
Example 3
In this example, we will demonstrate how to use NaN (Not a Number) in mathematical operations.
#include <iostream>
#include <cmath>
int main() {
double nanValue = std::nan("Operation Result");
double result = 5.0 + nanValue;
std::cout << "Result of adding 5.0 to NaN: " << result << std::endl;
return 0;
}
Output
If we run the above code it will generate the following output
Result of adding 5.0 to NaN: nan