Combinando las respuestas en un conjunto de funciones sobrecargadas (y usando "**" en lugar de "^^" como usan otros idiomas, más claro para mí):
// 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)) }
Al usar Float, puede perder precisión. Si usa literales numéricos y una combinación de enteros y no enteros, terminará con Double por defecto. Personalmente, me gusta la capacidad de usar una expresión matemática en lugar de una función como pow (a, b) por razones de estilo / legibilidad, pero así soy yo.
Cualquier operador que cause que pow () arroje un error también hará que estas funciones arrojen un error, por lo que la carga de la verificación de errores aún recae en el código que usa la función power de todos modos. BESO, en mi humilde opinión.
El uso de la función nativa pow () permite, por ejemplo, tomar raíces cuadradas (2 ** 0.5) o inversas (2 ** -3 = 1/8). Debido a la posibilidad de usar exponentes inversos o fraccionarios, escribí todo mi código para devolver el tipo Double predeterminado de la función pow (), que debería devolver la mayor precisión (si recuerdo la documentación correctamente). Si es necesario, esto se puede convertir en Int o Float o lo que sea, posiblemente con la pérdida de precisión.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8