Subsections


Exponentiation

If you want to compute the value of 3*3*3*3 you can do so using the multiplication operator, but it would be clearer and faster if you used the exponentiation operator **. The mode of its left operand can be either REAL or INT, but its right operand must have mode INT. If both its operands have the mode INT, the yield will have mode INT (in this case the right operand must not be negative), otherwise the yield will have mode REAL. Thus the formula 3**4 yields the value 81, but 3.0**4 yields the value 81.0. Its priority is 8. In a formula involving exponentiation as well as multiplication or division, the exponentiation is elaborated first. For example, the formula 3*2**4 yields 48, not 1296.

Every dyadic operator has a priority of between 1 and 9 inclusive, and all monadic operators bind more tightly than all dyadic operators. For example, the formula -2**2 yields 4, not -4. Here the monadic minus is elaborated first, followed by the exponentiation.


Exercises

2.8
Given these declarations:
   INT two = 2, m2 = -2;
   REAL x = 3.0 / 2.0, y = 1.0
what is the value and mode yielded by the following formulæ? Ans[*]
(a)
two ** -m2

(b)
x ** two + y ** two

(c)
3 * m2 ** two


Sian Mountbatten 2012-01-19