Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.

See all packages published by objecthub.

objecthub/swift-numberkit 2.4.1

Advanced numeric data types for Swift 5, including BigInt, Rational, and Complex numbers.

⭐️ 40

🕓 2 weeks ago

iOS
macOS

.package(url: "https://github.com/objecthub/swift-numberkit.git", from: "2.4.1")

This is a framework implementing advanced numeric data types for the Swift programming language on macOS, iOS and Linux. Currently, the framework provides three new numeric types, each represented as a struct:

`BigInt`

: arbitrary-precision signed integers`Rational`

: signed rational numbers`Complex`

: complex floating-point numbers

**Note**: So far, with every major version of Swift, Apple decided to change the foundational APIs of the numeric
types in Swift significantly and consistently in a backward incompatible way. In order to be more isolated from
such changes in future, with Swift 3, I decided to introduce a distinct integer type used in NumberKit based on a
new protocol `IntegerNumber`

. All standard numeric integer types implement this protocol. This is now consistent
with the usage of protocol `FloatingPointNumber`

for floating point numbers, where there was, so far, never a
real, generic enough foundation (and still isn't).

`BigInt`

objects are immutable, signed, arbitrary-precision integers that can be used as a
drop-in replacement for the existing binary integer types of Swift 5.
Struct `BigInt`

defines all
the standard arithmetic integer operations and implements the corresponding protocols defined
in the standard library.

Struct `Rational<T>`

defines immutable, rational numbers based on an existing signed integer
type `T`

, like `Int32`

, `Int64`

, or `BigInt`

. A rational number is a signed number that can
be expressed as the quotient of two integers *a* and *b*: *a / b*.

Struct `Complex<T>`

defines complex numbers based on an existing floating point type `T`

, like `Float`

or `Double`

. A complex number
consists of two components, a real part *re* and an imaginary part *im* and is typically written as: *re + im * i*
where *i* is the *imaginary unit*.

The following technologies are needed to build the components of the *Swift NumberKit* framework:

- Xcode 12.5
- Swift 5.4
- Swift Package Manager
- macOS, iOS or Linux

Author: Matthias Zenger (matthias@objecthub.net)

Copyright © 2016-2021 Matthias Zenger. All rights reserved.

link |

Stars: 40 |

Last commit: 2 weeks ago |

Release 2.4.1

2 weeks ago

- Support random number generation for BigInt
- Migrated project to Swift 5.5 and Xcode 13.2

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics