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
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.
Rational
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.
Complex
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.
Requirements
The following technologies are needed to build the components of the Swift NumberKit framework:
Swift NumberKit
Overview
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 integersRational
: signed rational numbersComplex
: complex floating-point numbersNote: 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 protocolFloatingPointNumber
for floating point numbers, where there was, so far, never a real, generic enough foundation (and still isn’t).BigInt
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. StructBigInt
defines all the standard arithmetic integer operations and implements the corresponding protocols defined in the standard library.Rational
Struct
Rational<T>
defines immutable, rational numbers based on an existing signed integer typeT
, likeInt32
,Int64
, orBigInt
. A rational number is a signed number that can be expressed as the quotient of two integers a and b: a / b.Complex
Struct
Complex<T>
defines complex numbers based on an existing floating point typeT
, likeFloat
orDouble
. 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.Requirements
The following technologies are needed to build the components of the Swift NumberKit framework:
Copyright
Author: Matthias Zenger (matthias@objecthub.net)
Copyright © 2016-2023 Matthias Zenger. All rights reserved.