Combinar as respostas em um conjunto sobrecarregado de funções (e usar "**" em vez de "^^" como algumas outras linguagens usam - mais claro para mim):
// 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)) }
Ao usar Float, você pode perder a precisão. Se estiver usando literais numéricos e uma mistura de inteiros e não inteiros, você terminará com Double por padrão. Pessoalmente, gosto da capacidade de usar uma expressão matemática em vez de uma função como pow (a, b) por motivos estilísticos / legibilidade, mas sou só eu.
Quaisquer operadores que façam pow () lançar um erro também farão com que essas funções gerem um erro, portanto, o fardo da verificação de erros ainda recai sobre o código que usa a função power de qualquer maneira. KISS, IMHO.
Usar a função nativa pow () permite, por exemplo, obter raízes quadradas (2 ** 0,5) ou inversa (2 ** -3 = 1/8). Por causa da possibilidade de usar expoentes inversos ou fracionários, escrevi todo o meu código para retornar o tipo Double padrão da função pow (), que deve retornar a maior precisão (se bem me lembro da documentação). Se necessário, isso pode ser convertido em tipo para Int ou Float ou qualquer outro, possivelmente com perda de precisão.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8