# 9. Numeric and Mathematical Modules

The modules described in this chapter provide numeric and math-related functions and data types. The `numbers` module defines an abstract hierarchy of numeric types. The `math` and `cmath` modules contain various mathematical functions for floating-point and complex numbers. For users more interested in decimal accuracy than in speed, the `decimal` module supports exact representations of decimal numbers.

The following modules are documented in this chapter:

- 9.1. `numbers` — Numeric abstract base classes
  - 9.1.1. The numeric tower
  - 9.1.2. Notes for type implementors
    - 9.1.2.1. Adding More Numeric ABCs
    - 9.1.2.2. Implementing the arithmetic operations
- 9.2. `math` — Mathematical functions
  - 9.2.1. Number-theoretic and representation functions
  - 9.2.2. Power and logarithmic functions
  - 9.2.3. Trigonometric functions
  - 9.2.4. Angular conversion
  - 9.2.5. Hyperbolic functions
  - 9.2.6. Special functions
  - 9.2.7. Constants
- 9.3. `cmath` — Mathematical functions for complex numbers
  - 9.3.1. Conversions to and from polar coordinates
  - 9.3.2. Power and logarithmic functions
  - 9.3.3. Trigonometric functions
  - 9.3.4. Hyperbolic functions
  - 9.3.5. Classification functions
  - 9.3.6. Constants
- 9.4. `decimal` — Decimal fixed point and floating point arithmetic
  - 9.4.1. Quick-start Tutorial
  - 9.4.2. Decimal objects
    - 9.4.2.1. Logical operands
  - 9.4.3. Context objects
  - 9.4.4. Signals
  - 9.4.5. Floating Point Notes
    - 9.4.5.1. Mitigating round-off error with increased precision
    - 9.4.5.2. Special values
  - 9.4.6. Working with threads
  - 9.4.7. Recipes
  - 9.4.8. Decimal FAQ
- 9.5. `fractions` — Rational numbers
- 9.6. `random` — Generate pseudo-random numbers
- 9.7. `itertools` — Functions creating iterators for efficient looping
  - 9.7.1. Itertool functions
  - 9.7.2. Recipes
- 9.8. `functools` — Higher-order functions and operations on callable objects
  - 9.8.1. `partial` Objects
- 9.9. `operator` — Standard operators as functions
  - 9.9.1. Mapping Operators to Functions