BInt

public struct BInt:
	SignedNumeric, // Implies Numeric, Equatable, ExpressibleByIntegerLiteral
	BinaryInteger, // Implies Hashable, CustomStringConvertible, Strideable, Comparable
	ExpressibleByFloatLiteral,
	Sendable

BInt is an arbitrary precision integer value type. It stores a number in base 2^64 notation as an array. Each element of the array is called a limb, which is of type UInt64, the whole array is called limbs and has the type [UInt64]. A boolean sign variable determines if the number is positive or negative. If sign == true, then the number is smaller than 0, otherwise it is greater or equal to 0. It stores the 64 bit digits in little endian, that is, the least significant digit is stored in the array index 0:

limbs == [] := undefined, should throw an error
limbs == [0], sign == false := 0, defined as positive
limbs == [0], sign == true := undefined, should throw an error
limbs == [n] := n if sign == false, otherwise -n, given 0 <= n < 2^64

limbs == [l0, l1, l2, ..., ln] :=
(l0 * 2^(0*64)) +
(11 * 2^(1*64)) +
(12 * 2^(2*64)) +
... +
(ln * 2^(n*64))

Internal data

  • Required by protocol Numeric

    Declaration

    Swift

    public typealias Magnitude = UInt64
  • The absolute magnitude of the integer as a UInt64.

    Declaration

    Swift

    public var magnitude: UInt64 { get }
  • Declaration

    Swift

    public typealias Words = [UInt]
  • A collection containing the words of this value’s binary representation, in order from the least significant to most significant.

    Declaration

    Swift

    public var words: BInt.Words { get }
  • Returns the size of the BInt in bits.

    Declaration

    Swift

    public var size: Int { get }
  • Returns a formatted human readable string that says how much space (in bytes, kilobytes, megabytes, or gigabytes) the BInt occupies.

    Declaration

    Swift

    public var sizeDescription: String { get }

Initializers

  • Create an instance initialized to an integer value.

    Declaration

    Swift

    public init(_ z: Int)
  • Create an instance initialized to an unsigned integer value.

    Declaration

    Swift

    public init(_ n: UInt)
  • Create an instance initialized to a string value.

    Declaration

    Swift

    public init?(_ str: String)
  • Declaration

    Swift

    public init(floatLiteral value: Double)
  • Declaration

    Swift

    public init(integerLiteral value: Int)
  • Required by protocol Numeric

    Declaration

    Swift

    public init?<T>(exactly source: T) where T : BinaryInteger
  • Creates an integer from the given floating-point value, rounding toward zero.

    Declaration

    Swift

    public init<T>(_ source: T) where T : BinaryFloatingPoint
  • Creates a new instance from the given integer.

    Declaration

    Swift

    public init<T>(_ source: T) where T : BinaryInteger
  • Creates a new instance with the representable value that’s closest to the given integer.

    Declaration

    Swift

    public init<T>(clamping source: T) where T : BinaryInteger
  • Creates an integer from the given floating-point value, if it can be represented exactly.

    Declaration

    Swift

    public init?<T>(exactly source: T) where T : BinaryFloatingPoint
  • Creates a new instance from the bit pattern of the given instance by sign-extending or truncating to fit this type.

    Declaration

    Swift

    public init<T>(truncatingIfNeeded source: T) where T : BinaryInteger

CustomStringConvertible conformance

Struct functions

  • Hash value for BInt based on sign and limbs representation.

    Declaration

    Swift

    public func hash(into hasher: inout Hasher)
  • A Boolean value indicating whether this type is a signed integer type.

    Declaration

    Swift

    public static var isSigned: Bool { get }
  • Returns -1 if this value is negative and 1 if it’s positive; otherwise, 0.

    Declaration

    Swift

    public func signum() -> BInt
  • The number of bits in the current binary representation of this value.

    Declaration

    Swift

    public var bitWidth: Int { get }
  • The number of trailing zeros in this value’s binary representation.

    Declaration

    Swift

    public var trailingZeroBitCount: Int { get }

BInt Shifts

  • Declaration

    Swift

    public static func << <T>(lhs: BInt, rhs: T) -> BInt where T : BinaryInteger
  • Declaration

    Swift

    public static func <<= <T>(lhs: inout BInt, rhs: T) where T : BinaryInteger
  • Declaration

    Swift

    public static func >> <T>(lhs: BInt, rhs: T) -> BInt where T : BinaryInteger
  • Declaration

    Swift

    public static func >>= <T>(lhs: inout BInt, rhs: T) where T : BinaryInteger

BInt Bitwise AND

  • Returns the result of performing a bitwise AND operation on the two given values.

    Declaration

    Swift

    public static func & (lhs: BInt, rhs: BInt) -> BInt
  • Stores the result of performing a bitwise AND operation on the two given values in the left-hand-side variable.

    Declaration

    Swift

    public static func &= (lhs: inout BInt, rhs: BInt)

BInt Bitwise OR

BInt Bitwise NOT

BInt Addition

  • Undocumented

    Declaration

    Swift

    public prefix static func + (x: BInt) -> BInt
  • Required by protocol Numeric

    Declaration

    Swift

    public static func += (lhs: inout BInt, rhs: BInt)
  • Required by protocol Numeric

    Declaration

    Swift

    public static func + (lhs: BInt, rhs: BInt) -> BInt

BInt Negation

  • Negates the value by flipping its sign.

    Declaration

    Swift

    public mutating func negate()
  • Required by protocol SignedNumeric

    Declaration

    Swift

    public prefix static func - (n: BInt) -> BInt

BInt Subtraction

  • Required by protocol Numeric

    Declaration

    Swift

    public static func - (lhs: BInt, rhs: BInt) -> BInt
  • Required by protocol Numeric

    Declaration

    Swift

    public static func -= (lhs: inout BInt, rhs: BInt)

BInt Multiplication

  • Required by protocol Numeric

    Declaration

    Swift

    public static func * (lhs: BInt, rhs: BInt) -> BInt
  • Required by protocol SignedNumeric

    Declaration

    Swift

    public static func *= (lhs: inout BInt, rhs: BInt)

BInt Division

BInt Modulus

BInt Comparing

  • Required by protocol Equatable

    Declaration

    Swift

    public static func == (lhs: BInt, rhs: BInt) -> Bool
  • Required by protocol Comparable

    Declaration

    Swift

    public static func < (lhs: BInt, rhs: BInt) -> Bool
  • Required by protocol Comparable

    Declaration

    Swift

    public static func > (lhs: BInt, rhs: BInt) -> Bool
  • Required by protocol Comparable

    Declaration

    Swift

    public static func <= (lhs: BInt, rhs: BInt) -> Bool
  • Required by protocol Comparable

    Declaration

    Swift

    public static func >= (lhs: BInt, rhs: BInt) -> Bool