Skip to content

Preview package for Swift Evolution proposal SE-0288

License

Notifications You must be signed in to change notification settings

swiftlang/swift-se0288-is-power

SE0288_IsPower

SE0288_IsPower is a standalone library that implements the Swift Evolution proposal SE-0288: Adding isPower(of:) to BinaryInteger. You can use this package independently, or as part of the standard library preview package.

Introduction

This package adds a public API isPower(of:), as an extension method, to the BinaryInteger protocol. It checks if an integer is a power of another. That is, a.isPower(of: b) checks whether there exists any integer n such that a == pow(b, n) is true.

import SE0288_IsPower

let x: Int = Int.random(in: 0000..<0288)
1.isPower(of: x)      // 'true' since x^0 == 1

let y: UInt = 1000
y.isPower(of: 10)     // 'true' since 10^3 == 1000

(-1).isPower(of: 1)   // 'false'

(-32).isPower(of: -2) // 'true' since (-2)^5 == -32

Usage

You can add this library as a dependency to any Swift package. Add this line to the dependencies parameter in your Package.swift file:

.package(url: "https://github.com/apple/swift-se0288-is-power", from: "2.0.0"),

Next, add the module as a dependency for your targets that will use the library:

.product(name: "SE0288_IsPower", package: "swift-se0288-is-power"),

You can now use import SE0288_IsPower to make the library available in any Swift file.

Contributing

We are no longer taking contributions to this repo. Please see the guide for Contributing to Swift for other opportunities within the Swift project. Thanks to all past contributors!