We can now list the kinds of numbers that can be created and manipulated in Pop-11, namely integers, bigintegers, decimals, ddecimals, ratios and complexes. Examples of each follow, preceded by the corresponding "dataword", and an indication of whether they are simple or compound.
Decimals are single-precision floating point numbers, whereas ddecimals are double-precision floating point numbers. They can be typed in directly or produced as the result of applying procedures.
DATAWORD EXAMPLES decimal (simple): Input: 66.0s0 2.54s3 2.54s-3 sqrt(4) Output: 66.0 2540.0 0.00254 2.0 ddecimal (compound): 66.0 -33.0 77.35 9999.532 -6666.0 66e0 2.54e5 2.54d3 2.54d-3The symbols "e", "s" and "d" are used in a representation of floating point numbers consisting of mantissa and exponent. The symbol is preceded by the mantissa and followed by the exponent. So 2.54e5 is the same as 2.54*(10 ** 5), where ** is the "raise to the power" operator.
The notation using "s" followed by an exponent is required to force a number typed in to be a single precision decimal. This is because the "constant" decimal numbers typed in are interpreted by the Pop-11 itemiser as double precision decimals, i.e. ddecimals. So, 66.0 will be read in as a ddecimal, as will 66.0e0, 66.0d0, whereas 66.0s0 will be a ddecimal, with the same numerical value.
dataword(3.5s0) => ** decimal dataword(3.5d0) => ** ddecimal dataword(3.5e0) => ** ddecimalWhether floating point results of arithmetical computations are single or double precision is controlled by the global variable popdprecision. If it is false (which is the default value) then the results are decimals. If it is true, then as long as at least one ddecimal or non decimal number is involved initially, floating point computations will produce double-precision ddecimal results. This is described more fully below.
DATAWORD EXAMPLES integer (simple): 66 -33 99999 -12348888 biginteger (compound): 12345678900980980911 2**40 -99999999999999999999999 ratio (compound): 3_/4 12345_/54321 -33_/44 complex (compound): sqrt(-1) 33_+:44 55.3_-:22.5 3_/4_+:5_/8 The third example is a complex number with floating point (ddecimal) real and imaginary parts (55.3 and -22.5, respectively). The last example is a complex number with ratios as its real and imaginary parts (3/4 and 5/8 respectively).