โ C++ <cmath> โ Perform Mathematical Operations with Standard Functions
๐งฒ Introduction โ Why Use <cmath> in C++
C++ provides a rich set of mathematical functions for scientific and numeric computing via the <cmath> header. Whether youโre calculating powers, roots, trigonometric values, or logarithms, <cmath> offers reliable and optimized functions for accurate computation.
๐ฏ In this guide, youโll learn:
- What functions <cmath>provides
- Categories: arithmetic, trigonometric, exponential, rounding
- Examples of common math functions
- Best practices for precision and performance
๐ What Is <cmath> in C++?
<cmath> is the C++ header that provides standard math functions, originally from the C library (<math.h>). It includes:
- Basic arithmetic
- Trigonometry
- Exponential/logarithmic functions
- Rounding and remainder operations
Include it with:
#include <cmath>
Functions are available in the std namespace.
โ Common <cmath> Functions
โ Power and Root
| Function | Description | Example | 
|---|---|---|
| pow(x, y) | x raised to the power y | pow(2, 3) โ 8 | 
| sqrt(x) | Square root | sqrt(9) โ 3 | 
| cbrt(x) | Cube root (C++11) | cbrt(8) โ 2 | 
โ Trigonometric Functions
| Function | Description | 
|---|---|
| sin(x) | Sine (x in radians) | 
| cos(x) | Cosine (x in radians) | 
| tan(x) | Tangent | 
| asin(x) | Arc sine | 
| acos(x) | Arc cosine | 
| atan(x) | Arc tangent | 
| atan2(y, x) | Arc tangent of y/x considering signs | 
โ Exponential and Logarithmic
| Function | Description | 
|---|---|
| exp(x) | e raised to the power x | 
| log(x) | Natural log (base e) | 
| log10(x) | Log base 10 | 
| log2(x) | Log base 2 (C++11) | 
โ Rounding Functions
| Function | Description | 
|---|---|
| floor(x) | Largest integer โค x | 
| ceil(x) | Smallest integer โฅ x | 
| round(x) | Nearest integer (rounds .5 away) | 
| trunc(x) | Truncates decimal (C++11) | 
| fabs(x) | Absolute value (floating-point) | 
| fmod(x, y) | Floating-point remainder of x/y | 
๐ป Code Examples โ With Output
โ Example: Basic Math
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    double a = 9.0;
    double b = 2.0;
    cout << "sqrt(a): " << sqrt(a) << endl;
    cout << "pow(a, b): " << pow(a, b) << endl;
    cout << "log(a): " << log(a) << endl;
    cout << "sin(PI/2): " << sin(3.14159265 / 2) << endl;
    return 0;
}
๐ข Output:
sqrt(a): 3  
pow(a, b): 81  
log(a): 2.1972  
sin(PI/2): 1
๐ง Mathematical Constants (C++20)
If using C++20, <numbers> provides constants like:
#include <numbers>
double pi = std::numbers::pi;
โ๏ธ Data Types and Overloads
Most <cmath> functions are overloaded for:
- float
- double
- long double
Example:
float f = sqrtf(9.0f);       // for float
long double ld = sqrtl(9.0L); // for long double
๐ก Best Practices & Tips
๐ Always include <cmath> for math-related operations
๐ก Prefer M_PI or std::numbers::pi for constants
โ ๏ธ Avoid using raw values like 3.14โuse library constants for precision
๐ฆ Use std::fixed and std::setprecision() to format float outputs
๐ ๏ธ Use Cases for <cmath>
๐งฎ Scientific Calculators โ Trig, log, power functions
๐ Graphics & Games โ Coordinate rotation, vector math
๐ฌ Simulations โ Physics models and formulas
๐ Geometry Applications โ Area, volume, angles
๐ Finance & Analytics โ Exponentials, logarithmic growth
๐ Summary โ Recap & Next Steps
๐ Key Takeaways:
- <cmath>provides essential math functions for C++ applications
- Covers power, root, trig, log, and rounding operations
- Use math functions with std::prefix and ensure correct types
โ๏ธ Real-World Relevance:
Used in every mathematical C++ applicationโfinance, engineering, simulation, robotics, and gaming.
โ
 Next Steps:
Explore ๐ค C++ <string> to perform string concatenation, manipulation, and formatting.
โFAQ โ C++ <cmath>
โ Whatโs the difference between abs() and fabs()?abs() works with integers; fabs() is for floating-point types.
โ Can I use degrees with trigonometric functions?
No. Convert degrees to radians first: radians = degrees * (ฯ / 180)
โ What does fmod(x, y) do?
It returns the remainder of floating-point division x / y.
โ Are <math.h> and <cmath> the same?
Mostly, but <cmath> puts functions in the std namespace and is preferred in C++.
โ Is <cmath> thread-safe?
Yes, in modern C++ implementations using reentrant functions.
Share Now :
