Skip to main content

### Mathematical Libraries

Project description

Daddy's boring math library

Python package of modules of a mathematical nature. The project name was suggested by my then 13 year old daughter Mary.

Overview

Here are the modules and executables which make up the grscheller.boring-math PyPI project.

Library Modules

Integer Math Module

  • Number Theory
    • Function gcd(int, int) -> int
      • greatest common divisor of two integers
      • always returns a non-negative number greater than 0
    • Function lcm(int, int) -> int
      • least common multiple of two integers
      • always returns a non-negative number greater than 0
    • Function coprime(int, int) -> tuple(int, int)
      • make 2 integers coprime by dividing out gcd
      • preserves signs of original numbers
    • Function iSqrt(int) -> int
      • integer square root
      • same as math.isqrt
    • Function isSqr(int) -> bool
      • returns true if integer argument is a perfect square
    • Function primes(start: int, end: int) -> Iterator[int]
      • now using Wilson's Theorem
    • Function legendre_symbol(a: int, p: int) -> int
      • where p > 2 is a prime number
    • Function jacobi_symbol(a: int, n: int) -> int
      • where n > 0
  • Combinatorics
    • Function comb(n: int, m: int) -> int
      • returns number of combinations of n items taken m at a time
      • pure integer implementation of math.comb

Pythagorean Triple Module

  • Pythagorean Triple Class
    • Method Pythag3.triples(a_start: int, a_max: int, max: Optional[int]) -> Iterator[int]
      • Returns an iterator of tuples of primitive Pythagorean triples
    • A Pythagorean triple is a tuple in positive integers (a, b, c)
      • such that a² + b² = c²
      • a, b, c represent integer sides of a right triangle
      • a Pythagorean triple is primitive if gcd of a, b, c is 1
    • Iterator finds all primitive Pythagorean Triples
      • where 0 < a_start <= a < b < c <= max where a <= a_max
      • if max = 0 find all theoretically possible triples with a <= a_max

Recursive Function Module

Ackermann's Function

  • Function ackermann_list(m: int, n: int) -> int
    • an example of a total computable function that is not primitive recursive
    • becomes numerically intractable after m=4
    • see CLI section below for mathematical definition

Fibonacci Sequences

  • Function fibonacci(f0: int=0, f1: int=1) -> Iterator[int]

    • returns a Fibonacci sequence iterator where
      • f(0) = f0 and f(1) = f1
      • f(n) = f(n-1) + f(n-2)
    • yield defaults to 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
  • Function rev_fibonacci(f0: int=0, f1: int=1) -> Iterator[int]

    • returns a Reverse Fibonacci sequence iterator where
      • rf(0) = f0 and rf(1) = f1
      • rf(n) = rf(n-1) - rf(n-2)
        • rf(0) = fib(-1) = 1
        • rf(1) = fib(-2) = -1
        • rf(2) = fib(-3) = 2
        • rf(3) = fib(-4) = -3
        • rf(4) = fib(-5) = 5
    • yield defaults to 1, -1, 2, -3, 5, -8, 13, -21, ...

CLI Applications

Implemented in an OS and package build tool independent way via the project.scripts section of pyproject.toml.

Ackermann's function CLI scripts

Ackermann, a student of Hilbert, discovered early examples of totally computable functions that are not primitively recursive.

A fairly standard definition of the Ackermann function is recursively defined for m,n >= 0 by

   ackermann(0,n) = n+1
   ackermann(m,0) = ackermann(m-1,1)
   ackermann(m,n) = ackermann(m-1, ackermann(m, n-1))

CLI program ackermann_list

  • Given two non-negative integers, evaluates Ackermann's function
  • Implements the recursion via a Python array
  • Usage: ackerman_list m n

Pythagorean triple CLI script

Geometrically, a Pythagorean triangle is a right triangle with positive integer sides.

CLI program pythag3

  • Generates primitive Pythagorean triples
    • A primitive Pythagorean triple is a 3-tuple of integers (a, b, c) such that
      • a³ + b³ = c³ where a,b,c > 0 and gcd(a,b,c) = 1
    • The integers a, b, c represent the sides of a right triangle
  • Usage: pythag3 [m [n [max]]
    • 3 args print all triples with m <= a <= n and a < b < c <= max
    • 2 args print all triples with m <= a <= n
    • 1 arg prints all triples with a <= m
    • 0 args print all triples with 3 <= a <= 100

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grscheller_boring_math-0.4.5.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

grscheller_boring_math-0.4.5-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file grscheller_boring_math-0.4.5.tar.gz.

File metadata

File hashes

Hashes for grscheller_boring_math-0.4.5.tar.gz
Algorithm Hash digest
SHA256 e0da8e4d8eb2c5ca319ac7c695d2fb72624475b43353b2b300db8e11f18929ca
MD5 c4bd2e14984342a98dad9b11dccba987
BLAKE2b-256 5eb1a2ae8da7b40770ae36f49b773a1c6c58c2f6e432f1f14c16b8558cf4a0a1

See more details on using hashes here.

File details

Details for the file grscheller_boring_math-0.4.5-py3-none-any.whl.

File metadata

File hashes

Hashes for grscheller_boring_math-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 10ba2b98320b65087ea68b47b2a33065348649afc836ec548f35f66691952b48
MD5 75af5f9dbc16db97cbc0709522f0fdba
BLAKE2b-256 6475bf6e56bd4fb4fbf6de9cbdc595722731e3eb5584e46f9373caeb25b4f2bd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page