At a Glance
Provides set of tools for managing numbers in Swift.
How To Get Started
- Copy content of
Sourcefolder to your project.
or
- Use
SwiftyAlgebracocoapod
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:
IntFloatDouble
Initializing new number is pretty simple:
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:
let number = Number(value: 9.124)
number.int // 9
number.float // 9.124
number.double // 9.124Integer numbers
Check if number is integer:
let double1 = Number(value: 9.124)
double1.isInteger // false
let double2 = Number(value: 9.0)
double2.isInteger // trueCheck if number is natural:
let int = Number(value: -20)
int1.isNatural // false
let double = Number(value: 20.0)
double.isNatural // trueCheck if number is prime:
let int1 = Number(value: 10)
int1.isPrime // false
let int2 = Number(value: 3)
int2.isPrime // trueNatural divisors:
let int = Number(value: 16)
let divisors = int.naturalDivisors // [1, 2, 4, 8, 16]Prime divisors:
let int = Number(value: 150)
let divisors = int.primeDivisors // [2, 3, 5]Prime factorization:
let int = Number(value: 150)
let divisors = int.primeFactorization // [2, 3, 5, 5]Operators
One Number can be easily added to another:
let ten = Number(value: 10)
let two = Number(value: 2)
let sum = ten + two
sum.int // 12In 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:
let number = Number(value: 10) + 2
number.int // 12Full 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 file for more info.

