https://github.com/simplisticated/swiftyalgebra
Algebra implemented in Swift
https://github.com/simplisticated/swiftyalgebra
algebra numbers swift
Last synced: 5 months ago
JSON representation
Algebra implemented in Swift
- Host: GitHub
- URL: https://github.com/simplisticated/swiftyalgebra
- Owner: simplisticated
- License: mit
- Created: 2018-04-05T06:00:21.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-28T23:32:12.000Z (almost 8 years ago)
- Last Synced: 2025-07-11T11:26:28.475Z (9 months ago)
- Topics: algebra, numbers, swift
- Language: Swift
- Size: 1.27 MB
- Stars: 41
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## At a Glance
Provides set of tools for managing numbers in Swift.
## How To Get Started
- Copy content of `Source` folder to your project.
or
- Use `SwiftyAlgebra` cocoapod
## Requirements
* iOS 9 and later
* Xcode 9 and later
* Swift 4
## Usage
### Introduction to Numbers
Instead of using many separate primitive numeric types, `SwiftyAlgebra` uses a universal type named `Number` which is working with all primitive types like `Double` values under the hood. The `Number` class is highly compatible with primitive types and currently supports:
- `Int`
- `Float`
- `Double`
Initializing new number is pretty simple:
```swift
let integerNumber = Number(value: 10)
let someFloatValue: Float = 4.3
let floatNumber = Number(value: someFloatValue)
let doubleNumber = Number(value: 9.124)
```
Also, you can get primitive value back easily:
```swift
let number = Number(value: 9.124)
number.int // 9
number.float // 9.124
number.double // 9.124
```
### Integer numbers
Check if number is integer:
```swift
let double1 = Number(value: 9.124)
double1.isInteger // false
let double2 = Number(value: 9.0)
double2.isInteger // true
```
Check if number is natural:
```swift
let int = Number(value: -20)
int1.isNatural // false
let double = Number(value: 20.0)
double.isNatural // true
```
Check if number is prime:
```swift
let int1 = Number(value: 10)
int1.isPrime // false
let int2 = Number(value: 3)
int2.isPrime // true
```
Natural divisors:
```swift
let int = Number(value: 16)
let divisors = int.naturalDivisors // [1, 2, 4, 8, 16]
```
Prime divisors:
```swift
let int = Number(value: 150)
let divisors = int.primeDivisors // [2, 3, 5]
```
Prime factorization:
```swift
let int = Number(value: 150)
let divisors = int.primeFactorization // [2, 3, 5, 5]
```
### Operators
One `Number` can be easily added to another:
```swift
let ten = Number(value: 10)
let two = Number(value: 2)
let sum = ten + two
sum.int // 12
```
In purpose of better compatibility with primitive numeric types, `SwiftyAlgebra` provides set of operators that might be helpful when you need to use `Number` and primitive variable in the same expression:
```swift
let number = Number(value: 10) + 2
number.int // 12
```
Full list of supported operators:
Left Type
Operator
Right Type
Example
Addition
Number
+
Number
Number(value: 10) + Number(value: 2)
Number
+
Int
Number(value: 10) + 2
Number
+
Float
Number(value: 10) + 2.0
Number
+
Double
Number(value: 10) + 2.0
Int
+
Number
10 + Number(value: 2)
Float
+
Number
10.0 + Number(value: 2)
Double
+
Number
10.0 + Number(value: 2)
Number
+=
Number
Number(value: 10.0) += Number(value: 2)
Number
+=
Int
Number(value: 10.0) += 2
Number
+=
Float
Number(value: 10.0) += 2.0
Number
+=
Double
Number(value: 10.0) += 2.0
Int
+=
Number
var value: Int = 10; value += Number(value: 2)
Float
+=
Number
var value: Float = 10.0; value += Number(value: 2.0)
Float
+=
Number
var value: Double = 10.0; value += Number(value: 2.0)
Float
++
None
let number = Number(value: 10); number++
Subtraction
Number
-
Number
Number(value: 10) - Number(value: 2)
Number
-
Int
Number(value: 10) - 2
Number
-
Float
Number(value: 10) - 2.0
Number
-
Double
Number(value: 10) - 2.0
Int
-
Number
10 - Number(value: 2)
Float
-
Number
10.0 - Number(value: 2)
Double
-
Number
10.0 - Number(value: 2)
Number
-=
Number
Number(value: 10.0) -= Number(value: 2)
Number
-=
Int
Number(value: 10.0) -= 2
Number
-=
Float
Number(value: 10.0) -= 2.0
Number
-=
Double
Number(value: 10.0) -= 2.0
Int
-=
Number
var value: Int = 10; value -= Number(value: 2)
Float
-=
Number
var value: Float = 10.0; value -= Number(value: 2.0)
Float
-=
Number
var value: Double = 10.0; value -= Number(value: 2.0)
Float
--
None
let number = Number(value: 10); number--
Multiplication
Number
*
Number
Number(value: 10) * Number(value: 2)
Number
*
Int
Number(value: 10) * 2
Number
*
Float
Number(value: 10) * 2.0
Number
*
Double
Number(value: 10) * 2.0
Int
*
Number
10 * Number(value: 2)
Float
*
Number
10.0 * Number(value: 2)
Double
*
Number
10.0 * Number(value: 2)
Number
*=
Number
Number(value: 10.0) *= Number(value: 2)
Number
*=
Int
Number(value: 10.0) *= 2
Number
*=
Float
Number(value: 10.0) *= 2.0
Number
*=
Double
Number(value: 10.0) *= 2.0
Int
*=
Number
var value: Int = 10; value *= Number(value: 2)
Float
*=
Number
var value: Float = 10.0; value *= Number(value: 2.0)
Float
*=
Number
var value: Double = 10.0; value *= Number(value: 2.0)
Division
Number
/
Number
Number(value: 10) / Number(value: 2)
Number
/
Int
Number(value: 10) / 2
Number
/
Float
Number(value: 10) / 2.0
Number
/
Double
Number(value: 10) / 2.0
Int
/
Number
10 / Number(value: 2)
Float
/
Number
10.0 / Number(value: 2)
Double
/
Number
10.0 / Number(value: 2)
Number
/=
Number
Number(value: 10.0) /= Number(value: 2)
Number
/=
Int
Number(value: 10.0) /= 2
Number
/=
Float
Number(value: 10.0) /= 2.0
Number
/=
Double
Number(value: 10.0) /= 2.0
Int
/=
Number
var value: Int = 10; value /= Number(value: 2)
Float
/=
Number
var value: Float = 10.0; value /= Number(value: 2.0)
Float
/=
Number
var value: Double = 10.0; value /= Number(value: 2.0)
## License
`SwiftyAlgebra` is available under the MIT license. See the [LICENSE](./LICENSE) file for more info.