# Chapter 15. Numeric Processing

You can perform some numeric computations with operators (covered in “Numeric Operations”) and built-in functions (covered in “Built-in Functions”). Python also provides modules that support additional numeric computations, covered in this chapter: `math` and `cmath` in “The math and cmath Modules”, `operator` in “The operator Module”, `random` in “The random Module”, `fractions` in “The fractions Module”, and `decimal` in “The decimal Module”. “The gmpy2 Module” also mentions the third-party module `gmpy2`, which further extends Python’s numeric computation abilities. Numeric processing often requires, more specifically, the processing of arrays of numbers, covered in “Array Processing”, focusing on the standard library module `array` and popular third-party extension NumPy.

# The math and cmath Modules

The `math` module supplies mathematical functions on floating-point numbers; the `cmath` module supplies equivalent functions on complex numbers. For example, `math.sqrt(-1)` raises an exception, but `cmath.sqrt(-1)` returns `1j`.

Just like for any other module, the cleanest, most readable way to use these is to have, for example, `import math` at the top of your code, and explicitly call, say, `math.sqrt` afterward. However, if your code includes many calls to the modules’ well-known mathematical functions, it’s permissible, as an exception to the general guideline, to use at the top of your code `from math import *`, and afterward just call `sqrt`.

Each module exposes two `float ...`

Get Python in a Nutshell, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.