Compound Expressions
With SAS/IML software, you can write compound expressions
involving several matrix operators and operands.
For example, the following statements
are valid matrix assignment statements:
a=x+y+z;
a=x+y*z\prime ;
a=(-x)#(y-z);
The rules for evaluating compound expressions are as follows:
- Evaluation follows the order of operator
precedence, as described in Table 4.1.
Group I has the highest priority; that is,
group I operators are evaluated first.
Group II operators are evaluated
after group I operators, and so forth.
Consider the following statement:
a=x+y*z;
This statement first multiplies matrices
and
since the * operator (group II) has higher
precedence than the + operator (group III).
It then adds the result of this multiplication to the
matrix
and assigns the new matrix to
. - If neighboring operators in an expression have equal
precedence, the expression is evaluated from left
to right, except for the group I operators.
Consider the following statement:
a=x/y/z;
This statement first divides each element of matrix
by the corresponding element of matrix
.
Then, using the result of this division, it
divides each element of the resulting matrix by
the corresponding element of matrix
.
The operators in group I, described in Table 4.1,
are evaluated from right to left.
For example, the following expression is evaluated
as
:
-x**2
When multiple prefix or postfix operators
are juxtaposed, precedence is determined
by their order from inside to outside.
For example, the following expression is evaluated as
:
a`[i,j]
All expressions enclosed in parentheses are
evaluated first, using the two preceding rules.
Consider the following statement:
a=x/(y/z);
This statement is evaluated by first dividing elements of
by the elements of
,
then dividing this result into
.
Copyright © 2009 by SAS Institute Inc., Cary, NC, USA. All rights reserved.