Swiftpack.co -  objecthub/swift-numberkit as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
objecthub/swift-numberkit
Advanced numeric data types for Swift 5, including BigInt, Rational, and Complex numbers.
.package(url: "https://github.com/objecthub/swift-numberkit.git", from: "2.4.0")

# 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:

1. `BigInt`: arbitrary-precision signed integers
2. `Rational`: signed rational numbers
3. `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:

Author: Matthias Zenger (matthias@objecthub.net)

### GitHub

 link Stars: 37 Last commit: 6 weeks ago

• Several enhancements of the `Complex` type