Объединение ответов в перегруженный набор функций (и использование «**» вместо «^^», как в некоторых других языках - для меня яснее):
// http://stackoverflow.com/questions/24196689/how-to-get-the-power-of-some-integer-in-swift-language
// Put this at file level anywhere in your project
infix operator ** { associativity left precedence 160 }
func ** (radix: Double, power: Double) -> Double { return pow(radix, power) }
func ** (radix: Int, power: Int ) -> Double { return pow(Double(radix), Double(power)) }
func ** (radix: Float, power: Float ) -> Double { return pow(Double(radix), Double(power)) }
При использовании Float вы можете потерять точность. Если вы используете числовые литералы и сочетание целых и нецелых чисел, по умолчанию вы получите Double. Мне лично нравится возможность использовать математическое выражение вместо функции типа pow (a, b) по стилистическим соображениям / удобочитаемости, но это только я.
Любые операторы, которые могут вызвать ошибку pow (), также будут вызывать ошибку этими функциями, поэтому бремя проверки ошибок все равно лежит на коде, использующем функцию мощности. KISS, ИМХО.
Использование встроенной функции pow () позволяет, например, извлекать квадратные корни (2 ** 0,5) или обратные (2 ** -3 = 1/8). Из-за возможности использования обратных или дробных показателей я написал весь свой код так, чтобы он возвращал тип Double по умолчанию функции pow (), который должен возвращать наибольшую точность (если я правильно помню документацию). При необходимости это может быть преобразовано в тип Int или Float или что-то еще, возможно, с потерей точности.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8