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.7.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

grscheller_boring_math-0.4.7-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for grscheller_boring_math-0.4.7.tar.gz
Algorithm Hash digest
SHA256 8766f8db39c84e208ea7654d149051ca29ef39847a7585685cbc2bb6d057fbfd
MD5 ffd81623fa6d5acf2cbf56629d1e525d
BLAKE2b-256 ebcc19041ea011205f8b9297e9e936b6a3ddd2369841fb6b63f5a3940fc4d662

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grscheller_boring_math-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 2d6bbdf8b127d8ac7707a549981b9881f37c16c302921a8a43d3183df12d1906
MD5 9fad94f73600a9265de6352589b38a88
BLAKE2b-256 2f080a58895935894587b008796970b36a294aa5399f0f0e5a30efd21b4aa0b7

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