mpu.math

Mathematical functions which are not adequately covered by standard libraries.

Standard libraries are:

mpu.math.argmax(iterable: Iterable)Optional[int][source]

Find the first index of the biggest value in the iterable.

Parameters

iterable (Iterable) –

Returns

argmax

Return type

Optional[int]

Examples

>>> argmax([0, 0, 0])
0
>>> argmax([1, 0, 0])
0
>>> argmax([0, 1, 0])
1
>>> argmax([])
mpu.math.factorize(number: int)List[int][source]

Get the prime factors of an integer except for 1.

Parameters

number (int) –

Returns

primes

Return type

List[int]

Examples

>>> factorize(-17)
[-1, 17]
>>> factorize(8)
[2, 2, 2]
>>> factorize(3**25)
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> factorize(1)
[1]
mpu.math.gcd(a: int, b: int)int[source]

Calculate the greatest common divisor.

Currently, this uses the Euclidean algorithm.

Parameters
  • a (int) – Non-zero

  • b (int) – Non-zero

Returns

greatest_common_divisor

Return type

int

Examples

>>> gcd(1, 7)
1
>>> gcd(-1, -1)
1
>>> gcd(1337, 42)
7
>>> gcd(-1337, -42)
7
>>> gcd(120, 364)
4
>>> gcd(273, 1870)
1
mpu.math.generate_primes()Iterator[int][source]

Generate an infinite sequence of prime numbers.

The algorithm was originally written by David Eppstein, UC Irvine. See: http://code.activestate.com/recipes/117119/

Examples

>>> g = generate_primes()
>>> next(g)
2
>>> next(g)
3
>>> next(g)
5
mpu.math.is_prime(number: int)bool[source]

Check if a number is prime.

Parameters

number (int) –

Returns

is_prime_number

Return type

bool

Examples

>>> is_prime(-17)
False
>>> is_prime(17)
True
>>> is_prime(47055833459)
True
mpu.math.product(iterable: Iterable, start: int = 1)int[source]

Calculate the product of the iterables.

Parameters
  • iterable (iterable) – List, tuple or similar which contains numbers

  • start (number, optional (default: 1)) –

Returns

product

Return type

number

Examples

>>> product([1, 2, 3, 4, 5])
120
>>> product([])
1
mpu.math.round_down(x: float, decimal_places: int)float[source]

Round a float down to decimal_places.

Parameters
  • x (float) –

  • decimal_places (int) –

Returns

rounded_float

Return type

float

Examples

>>> round_down(1.23456, 3)
1.234
>>> round_down(1.23456, 2)
1.23
mpu.math.round_up(x: float, decimal_places: int)float[source]

Round a float up to decimal_places.

Parameters
  • x (float) –

  • decimal_places (int) –

Returns

rounded_float

Return type

float

Examples

>>> round_up(1.2344, 3)
1.235
>>> round_up(1.234, 3)
1.234
>>> round_up(1.23456, 3)
1.235
>>> round_up(1.23456, 2)
1.24