- Documentation
- Reference manual
- Built-in Predicates
- Arithmetic
- General purpose arithmetic
- Arithmetic Functions
- -/1
- +/1
- +/2
- -/2
- */2
- //2
- mod/2
- rem/2
- ///2
- div/2
- rdiv/2
- gcd/2
- lcm/2
- abs/1
- sign/1
- copysign/2
- nexttoward/2
- roundtoward/2
- max/2
- min/2
- ./2
- random/1
- random_float/0
- round/1
- integer/1
- float/1
- rational/1
- rationalize/1
- numerator/1
- denominator/1
- float_fractional_part/1
- float_integer_part/1
- truncate/1
- floor/1
- ceiling/1
- ceil/1
- >>/2
- <</2
- \//2
- /\/2
- xor/2
- \/1
- sqrt/1
- sin/1
- cos/1
- tan/1
- asin/1
- acos/1
- atan/1
- atan2/2
- atan/2
- sinh/1
- cosh/1
- tanh/1
- asinh/1
- acosh/1
- atanh/1
- log/1
- log10/1
- exp/1
- **/2
- ^/2
- powm/3
- lgamma/1
- erf/1
- erfc/1
- pi/0
- e/0
- epsilon/0
- inf/0
- nan/0
- cputime/0
- eval/1
- msb/1
- lsb/1
- popcount/1
- getbit/2
- Arithmetic Functions
- General purpose arithmetic
- Arithmetic
- Built-in Predicates
- Packages
- Reference manual
Availability:Arithmetic function (see is/2)
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 Int
Int
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 |