In SWI-Prolog, ^/2 is 
equivalent to **/2. The 
ISO version is similar, except that it produces a evaluation error if 
both
Expr1 and Expr2 are integers and the result is not 
an integer. The table below illustrates the behaviour of the 
exponentiation functions in ISO and SWI. Note that if the exponent is 
negative the behavior of IntInt 
depends on the flag
prefer_rationals, 
producing either a rational number or a floating point number.
^
| Expr1 | Expr2 | Function | SWI | ISO | 
| Int | Int | **/2 | Int or Rational | Float | 
| Int | Float | **/2 | Float | Float | 
| Rational | Int | **/2 | Rational | - | 
| Float | Int | **/2 | Float | Float | 
| Float | Float | **/2 | Float | Float | 
| Int | Int | ^/2 | Int or Rational | Int or error | 
| Int | Float | ^/2 | Float | Float | 
| Rational | Int | ^/2 | Rational | - | 
| Float | Int | ^/2 | Float | Float | 
| Float | Float | ^/2 | Float | Float |