Chapter 14: Numbers and Equations 
14.2. Numbers 
What Inform calls a "number" is a whole number, positive, negative or zero. The range of numbers we can hold is not unlimited  if the format Setting for a project is one of the Zmachine choices, then we have:
32768, 32767, ..., 3, 2, 1, 0, 1, 2, 3, ..., 32767
and if it is set to Glulx, then we have:
2147483648, 2147483647, ..., 3, 2, 1, 0, 1, 2, 3, ..., 2147483647
Numbers from zero to twelve may be written out, but larger ones must be written as numerals. So "twelve" or "12", but "13" only.
We are allowed to perform about the same operations on numbers as are provided by a simple office calculator, starting with addition, subtraction, multiplication and division. We can use the traditional typewriter symbols for these, +, , * and /, or can spell them out in words as "plus", "minus", "times" (or "multiplied by"), and "divided by". Definitively:
(arithmetic value) + (arithmetic value) ... value
or: (arithmetic value) plus (arithmetic value) ... value
This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:
200 + 1 = 201

(arithmetic value)  (arithmetic value) ... value
or: (arithmetic value) minus (arithmetic value) ... value
This phrase performs signed subtraction on the given values, whose kinds must agree, and produces the result. Examples:
200  1 = 199

(arithmetic value) * (arithmetic value) ... value
or: (arithmetic value) times (arithmetic value) ... value
or: (arithmetic value) multiplied by (arithmetic value) ... value
This phrase performs signed multiplication on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:
201 times 3 = 603

(arithmetic value) / (arithmetic value) ... value
or: (arithmetic value) divided by (arithmetic value) ... value
This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:
201 divided by 3 = 67
Division rounds down to the nearest whole number. It is mathematically impossible to divide by 0, so any attempt to do so will cause a runtime problem message.

remainder after dividing (arithmetic value) by (arithmetic value) ... value
This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and then produces the remainder. Examples:
remainder after dividing 201 by 5 = 1
It is mathematically impossible to divide by 0, so any attempt to find the remainder after dividing by 0 will cause a runtime problem message.

The verbal and symbolic forms of these phrases are equivalent:
the score + 10
the score plus 10
It's probably better style to spell them out in full when writing text, and keep the symbols for writing equations, as we'll see later on in the chapter. (If we do use the symbols, then spaces around them are obligatory: to Inform, they are words which just happen to be spelt with symbols instead of letters.)
Arithmetic often produces fussily exact answers which seem inappropriate in a conversation. Nobody says "Steeple Barton is 7.655 miles down the road", but "Steeple Barton is eight miles down the road" sounds perfectly normal. In order to make that sort of report easier to make, Inform provides another arithmetic operation, one that's not found in most computer programming languages:
(arithmetic value) to the nearest (arithmetic value) ... value
This phrase rounds the given value off, rounding upward in boundary cases. Examples:
201 to the nearest 5 = 200

Inform has very few mathematical functions built in as phrases, because these aren't very often needed in storytelling. But it does provide these:
square root of (arithmetic value) ... value
This phrase produces an approximate square root, to the nearest integer, of the given value, which must be of a kind which has square roots. Example:
square root of 16 = 4
Trying to take the square root of a negative number will cause a runtime problem, because then we can't even nearly solve it.

cube root of (arithmetic value) ... value
This phrase produces an approximate cube root, to the nearest integer, of the given value, which must be of a kind which has cube roots. Example:
cube root of 27 = 3

We can compare numbers using either the traditional computerprogramming symbols, or using words:
if the score is less than 10
if the score < 10
and similarly for "greater than", "at least" and "at most", with the symbols ">", ">=" and "<=". But we are not allowed the equals sign: for that we need only use "is" 
if the score is 10
Previous  Contents  Next 