cszatmary/DiscreteMathematics
Discrete Mathematics algorithms.
Examples
Operators
Congruence Modulo n ==%:
The equivalence relation a ≡ b(mod m) ↔ m | (b - a).
-8 ==% (7, 5) // true
2 ==% (8, 5) // falseDivides |%:
Returns whether or not a|b ↔ ∃ q ∈ N, b = q · a.
3 |% 9 // true
2 |% 7 // falseFunctions
Long Division
Performs division on two integers and returns the quotient and remainder.
a = q · b + r
longDivision(a: 8, b: 3) // (q: 2, r: 2)Greatest Common Divisor
gcd() returns the greatest common divisor using the Euclidean Algorithm.
gcd(5005, 4410) // 35
gcd(175, 155) // 5egcd() returns the GCD of two integers as an integer combination using the Extended Euclidean Algorithm.
a · x + b · y = d ```swift egcd(5005, 4410) // (d: 35, x: -37, y: 42) egcd(175, 155) // (d: 5, x: 8, y: -9)
#### Coprime
Two elements, a, b, are coprime if gcd(a, b) = 1.coprime(17, -60) // true
#### Linear Diophantine Equation
`lde()` returns a solution to the given Linear Diophantine Equation or `nil` if it has no solutions.lde(a: 175, b: 155, c: 50) // (x: 80, y: -90) lde(a: 234, b: 182, c: 10) // nil
`ldeSolutions()` returns a function that will compute all possible solutions to an LDE.let solutions = ldeSolutions(a: 175, b: 155, c: 50) solutions!(3) // (173, -195)
Installation
Swift Package Manager
The recommended way to install DiscreteMathematics is by using the Swift Package Manager.
To install it, add the following to your Package.swift's dependencies array:
.package(url: "https://github.com/cszatma/DiscreteMathematics.git", from: "2.0.0")CocoaPods
DiscreteMathematics is also available through CocoaPods.
To install it, add the following line to your Podfile:
pod 'DiscreteMathematics', '~> 2.0'License
DiscreteMathematics is available under the MIT License.
Contributing
Open an issue or submit a pull request.
Package Metadata
Repository: cszatmary/DiscreteMathematics
Stars: 0
Forks: 0
Open issues: 0
Default branch: master
Primary language: swift
License: MIT
README: README.md