Metadata-Version: 2.1
Name: arith-lib
Version: 2.0.0
Summary: A set of functions for miscellaneous arithmetic calculation
Home-page: UNKNOWN
Author: JM Allard
Author-email: jma214@gmail.com
License: UNKNOWN
Keywords: gcd lcm bezout pseudo prime miller rabin factorization divisor chinese remainder phi euler totient moebius base frobenius isqrt
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Scientific/Engineering :: Mathematics
Description-Content-Type: text/markdown

## arith_lib: A set of functions for miscellaneous arithmetic calculation

### List of implemented functions

* **gcd(\*arg):**
Greatest common divisor of a set of integers

* **lcm(\*arg):**
Least common multiple of a set of integers

* **bezout(a, b):**
Provides a particular solution to diophantine equation a.u+b.v=gcd(a, b)

* **modulo_inv(a, b):**
Inverse of a modulo b

* **chinese_remainder(r, m):**
Solves the modular system:
   * x = r1 mod m1
   * x = r2 mod m2
   * ...
   * x = r_n mod m_n

* **gene_pseudo_prime():**
A generator which provides 2, 3, 5 and then all integers non multiple of 2, 3, 5

* **is_prime(n):**
Check for n primality. Miller-Rabin primality test is used

* **next_prime(n):**
Provides the first prime greater or equal to n

* **previous_prime(n)**
Provides the first prime smaller or equal to n

* **prime_factorization(n, frmt):**
Prime factorization of n

* **divisors(n):**
Provides all divisors of n

* **phi(n):**
Euler totient function

* **moebius(n):**
Moebius function

* **to_base(n, \*kwarg):**
Conversion from base 10 to base B

* **frobenius(\*A, n=None):**
Solves equation a1.x1 + a2.x2 + .. + ap.xp = n or finds
the greatest n for which this equation has no solution.
a1, a2, ... are positive integers.
x1, x2, ... are the unknowns, positive integers

* **isqrt(n)**
Provides the integer part of the square root of n
where n is an integer of any size

* **is_miller_rabin_witness(a, n)**
Return True if 'a' is a Miller-Rabin witness for n

* **get_random_prime(nbits, lessthan)**
Provides a random prime with exactly or at most 'nbits' bits

* **is_strong_pseudoprime(a, n)**
Return True is n is a strong pseudo prime to base 'a'


### Installation

pip install arith_lib


### Utilization

from arith_lib import \*

\>>> gcd(15, 20)
5






