# Exploring the math module

I could write code for days using the `math` module and never hit the end. `math` is huge. It's designed to keep you from rewriting a stack of mathematical functions that someone had inevitably written before (formulas for calculating the sine, cosine, tangent, etc).

So rather than write a stack of example code, let's instead discuss what `math` can do for you. `math` can do any of these functions on integers only - `cmath` provides the same, but allows complex numbers.

### Number-theoretic and representation functions

These functions deal with a few basic theoretical calculations that didn't quite fit anywhere else. Things like `factorial()`, `fabs()` (which calculates absolute value), and `modf()` which returns the fractional and integer parts of a float can all be found here.

### Power and logarithmic functions

As can be expected, you'll find things with exponents and logarithms here. Need to calculate e^x? Use `exp(x)`. Need to get x^y? Use `pow(x, y)`. Logarithms use `log(x, [base])`. Easy stuff here.

### Trigonometric functions

This is where all of the trigonometric functions live: things like `sin(x)`, `cos(x)`, `tan(x)`. I wish I'd known about this in the eleventh grade with Mrs. May.

### Angular conversion functions

Need to go from degrees to radians? Use `radians(x)`. Need to go from radians to degrees? Use `degrees(x)`.

### Hyperbolic functions

I never used these in eleventh grade and am only moderately aware of what they do. If you need the hyperbolic tangent of x - `tanh(x)` - or the inverse hyperbolic cosine - `acosh(x)` - this is where to look.

### Error functions

Same thing for error functions. I am not proud of how much math I don't know right now.

### Constants

These I've got, though! This is where `pi` and `e` live.

`math` is great, and if you're going to using Python for statistical or scientific computing, it's a must-know.