beta = 2
t = 56
rnd = 1
ngrd = 0
machep = -56
negep = -56
iexp = 8
minexp = -128
maxexp = 127
eps = 1.387779e-17
epsneg = 1.387779e-17
xmin = 2.938736e-39
xmax = 1.701412e+38
|
All operands of boolean expressions are evaluated.
|
|
The expression in an assignment statement is evaluated
before the variable selection if this involves pointer
dereferencing or array indexing.
|
|
Actual parameters are evaluated in reverse order.
|
|
The default width for integer, Boolean and real are 6, 5
and 13.
|
|
The number of digits written in an exponent is 2.
|
|
The representations of true and false are ( true) and
(false). The parenthesis serve to indicate width. |
Quality measurement
|
Number of tests run = 60
Number of tests handled incorrectly = 1
Results of tests |
|
Several test perform operations on reals on indicate the
error introduced by these operations. For each of these
tests the following two quality measures are extracted:
|
|
maxRE: maximum relative error
rmsRE: root-mean-square relative error |
Implementation 1: 25 thousand Whetstone instructions per
second.
Implementation 2: 169 thousand Whetstone instructions per
second.
The value of (TRUEACC-ACC)*2^56/100000 is 1.4 . This is
well within the bounds specified in [3].
The GAMM measure is:
Implementation 1: 238 microseconds
Implementation 2: 26.3 microseconds.
The number of procedure calls calculated in this test
exceeds the maximum integer value. The program stops
indicating overflow.
The number of significant characters for identifiers is
8.
There is no maximum to the line length.
The error message "too many digits" is given
for numbers larger than maxint.
Normal values are allowed for real constants and
variables.
A reasonably large number of strings is allowed.
No warning is given for possibly unclosed comments.
Large lists of declarations are possible in each
block.
An ’array[integer] of’ is not allowed.
Large values are allowed for arrays and indices.
Large amounts of case-constant values are allowed in
variants.
Large amounts of record sections can appear in the fixed
part of a record.
Large amounts of variants are allowed in a record.
Size and speed of Warshall’s algorithm depend on
the implementation of EM:
|
Implementation 1:
size: 122 bytes
speed: 5.2 seconds
Implementation 2:
size: 196 bytes
speed: 0.7 seconds |
|
Deep nesting of array indices is allowed.
|
|
Arrays can have at least 8 dimensions.
|
|
Deep static nesting of procedure is allowed.
|
|
Large amounts of formal parameters are allowed.
|
|
Dispose is fully implemented.
|
|
Test sqrt(x): no errors. The error is within acceptable
bounds. |
|
maxRE: 2 ** -55.50
rmsRE: 2 ** -57.53 |
|
Test arctan(x): may cause underflow or overflow errors.
The error is within acceptable bounds. |
|
maxRE: 2 ** -55.00
rmsRE: 2 ** -56.36 |
|
Test exp(x): may cause underflow or overflow errors. The
error is not within acceptable bounds. |
|
maxRE: 2 ** -50.03
rmsRE: 2 ** -51.03 |
Test sin(x): may cause underflow errors. The error is
not within acceptable bounds.
|
maxRE: 2 ** -38.20
rmsRE: 2 ** -43.68 |
|
Test cos(x): may cause underflow errors. The error is not
within acceptable bounds. |
|
maxRE: 2 ** -41.33
rmsRE: 2 ** -46.62 |
|
Test ln(x): The error is not within acceptable
bounds. |
|
maxRE: 2 ** -54.05
rmsRE: 2 ** -55.77 |
|
Complex nested expressions are allowed.
|
|
Test real division: The error is within acceptable
bounds. |
|
Operations of reals in the integer range are exact.
|
|
Static deep nesting of function calls, compound
statements, if statements, case statements, repeat loops,
while loops, for loops and with statements is possible.
|
|
Large amounts of statements are allowed in a compound
statement.
|
|
The compiler requires case constants to be compatible
with the case selector.
|
|
Large case statements are possible.
|
Recursive IO on the same file is well-behaved.
The reading of real values from a text file is done with
sufficient accuracy.
|
maxRE: 2 ** -54.61
rmsRE: 2 ** -56.32 |
|
Read, readln, write and writeln may have large amounts of
parameters.
|
|
The loss of precision for reals written on a text file
and read back is: |
|
maxRE: 2 ** -53.95
rmsRE: 2 ** -55.90 |
|
File IO buffers without trailing marker are correctly
flushed.
|
|
Reals are written with sufficient accuracy. |
Level 1 conformance tests
|
Number of test passed = 4
Number of tests failed = 1
Details of failed tests |
|
An expression indicated by parenthesis whose value is a
conformant array is not allowed. |
Level 1 deviance tests
|
Number of deviations correctly detected = 4
Number of tests not detecting deviations = 0 |
Level 1 error handling
|
The results depend on the EM implementation.
Number of errors correctly detected = |
|
Implementation 1: 1
Implementation 2: 0 |
|
Number of errors not detected = |
|
Implementation 1: 0
Implementation 2: 1 |
|
Details of errors not detected |
|
Implementation 2: Subrange bounds are not
checked. |
Level 1 quality measurement
|
Number of tests run = 1
Results of test |
|
Large conformant arrays are allowed. |
Extensions
|
Number of tests run = 3
Details |
|
The alternative relational operators are not allowed.
|
|
The alternative symbols for colon, semicolon and
assignment are not allowed.
|
|
The otherwise selector in case statements is not
allowed. |
References
[1] A.S.Tanenbaum, E.G.Keizer, J.W.Stevenson, Hans van
Staveren, "Description of a machine architecture for
use with block structured languages", Informatica
rapport IR-81. [2] ISO standard proposal ISO/TC97/SC5-N462,
dated February 1979. The same proposal, in slightly modified
form, can be found in: A.M.Addyman e.a., "A draft
description of Pascal", Software, practice and
experience, May 1979. An improved version, received March
1980, is followed as much as possible for the current
ACK-Pascal. [3] B. A. Wichman and J du Croz, A program to
calculate the GAMM measure, Computer Journal, November
1979.
|