This is a framework implementing advanced numeric data types for the Swift 4 programming language. The current version provides three new numeric types:
BigInt: arbitrary-precision signed integers
Rational: signed rational numbers
Complex: complex floating-point numbers
- Xcode 10.0
- Swift 4.2
- macOS with Xcode or Swift Package Manager
- Linux with Swift Package Manager
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
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). Unfortunately, this is a change that might break some client usage
of NumberKit. Adaptations should be straightforward.
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 4. Struct
BigInt defines all
the standard arithmetic integer operations and implements the corresponding protocols defined
in the standard library.
Rational<T> defines immutable, rational numbers based on an existing signed integer
BigInt. A rational number is a signed number that can
be expressed as the quotient of two integers a and b: a / b.
Complex<T> defines complex numbers based on an existing floating point type
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.
Help us keep the lights on
2.2.5 - Oct 20, 2018
- Use new hashing API to improve hashing algorithm and to speed up hashing compound data structures
2.2.4 - Sep 29, 2018
- Fix Swift version number
2.2.3 - Sep 29, 2018
- Fix Swift 4.2 support
2.2.2 - Sep 29, 2018
Support Swift 4.2.
2.2.1 - Jun 3, 2018
- Support Linux