Prolog can be used to perform arithmetic. Prolog supports the common arithmetic operators:
+
addition-
subtraction*
multiplication/
division%
remainder
is
operator to assign the result of the expression to a variable. Arithmetic expressions will also be evaluated if used as arguments for the numeric comparison operators: =:=
, =\=
, <
, =<
, >
and >=
.Examples
?- X is 45345.
X = 45345
yes
?- X is -876878.
X = -876878
yes
?- X is 2+1.
X = 3
yes
?- X is 12-5.
X = 7
yes
?- X is 6*7.
X = 42
yes
?- X is 6/2.
X = 3
yes
?- X is 6//2.
X = 3
yes
?- X is 7/2.
X = 3.5
yes
?- X is 7//2.
X = 3
yes
?- X is 7 * 4 // 2.
X = 14
yes
?- X is 5 mod 3.
X = 2
yes
?- X is 2147483647 + 1.
X = 2147483648
yes
?- X is -2147483648 - 1.
X = -2147483649
yes
The maximum integer value that can be represented is 9223372036854775807
?- X is 9223372036854775807.
X = 9223372036854775807
yes
?- X is 9223372036854775806 + 1.
X = 9223372036854775807
yes
?- X is 9223372036854775806 + 2.
X = -9223372036854775808
yes
The minimum integer value that can be represented is -9223372036854775808
?- X is -9223372036854775808.
X = -9223372036854775808
yes
?- X is -9223372036854775807 - 1.
X = -9223372036854775808
yes
?- X is -9223372036854775807 - 2.
X = 9223372036854775807
yes
Prolog evaluates numerical expressions using the BODMAS rule to determine the order in which operations are performed.
?- X is 1+2*3.
X = 7
yes
?- X is 2*3+1.
X = 7
yes
?- X is (1+2)*3.
X = 9
yes
?- X is 2*(3+1).
X = 8
yes
?- X is -(4+6).
X = -10
yes
Variables must be instantiated to numerical terms before they can be used in calculations.
?- X is 1 + Y.
Cannot get Numeric for term: Y of type: VARIABLE
?- Y = 4, X is 1 + Y.
X = 5
Y = 4
yes
?- Y = 6-2, X is 1 + Y.
X = 5
Y = 6 - 2
yes
?- Y = 2*4, X is -Y.
X = -8
Y = 2 * 4
yes
Examples of using decimal point numbers in calculations.
?- X is 1.3 + 1.2.
X = 2.5
yes
?- X is 1.3 + 1.
X = 2.3
yes
?- X is 1 + 1.2.
X = 2.2
yes
?- X is 3.5 - 1.25.
X = 2.25
yes
?- X is 3.5 - 1.
X = 2.5
yes
?- X is 3 - 1.25.
X = 1.75
yes
?- X is -9.6.
X = -9.6
yes
?- Y = 9.6, X is -Y.
X = -9.6
Y = 9.6
yes
?- X is 6.3 * 2.75.
X = 17.325
yes
?- X is 6.3 * 2.
X = 12.6
yes
?- X is 6 * 2.75.
X = 16.5
yes
?- X is 8.5 / 2.5.
X = 3.4
yes
?- X is 8.5 / 2.
X = 4.25
yes
?- X is 8 / 2.5.
X = 3.2
yes
?- X is 5 mod 2.
X = 1
yes
?- X is 5 mod -2.
X = -1
yes
?- X is -5 mod -2.
X = -1
yes
?- X is -5 mod 2.
X = 1
yes
?- X is 5 rem 2.
X = 1
yes
?- X is 5 rem -2.
X = 1
yes
?- X is -5 rem -2.
X = -1
yes
?- X is -5 rem 2.
X = -1
yes
?- X is 2 mod -5.
X = -3
yes
?- X is 2 rem -5.
X = 2
yes