25.10 Aggregating common subexpressions
If an expression is calculated once, the value should be saved and
reused wherever possible. That is, rather than using
exp(theta)
in multiple places, declare a local variable to
store its value and reuse the local variable.
Another case that may not be so obvious is with two multilevel
parameters, say a[ii[n]] + b[jj[n]]
. If a
and b
are small (i.e., do not have many levels), then a table a_b
of
their sums can be created, with
matrix[size(a), size(b)] a_b;
for (i in 1:size(a)) {
for (j in 1:size(b)) {
a_b[i, j] = a[i] + b[j];
} }
Then the sum can be replaced with a_b[ii[n], jj[n]]
.