The TEMPORARY routine is a simple way to use memory more efficiently. Statements of the form

a = a + 5


create a temporary variable to hold the intermediate result a + 5. This temporary variable effectively doubles the amount of memory needed to store a (but only for the time necessary to do the operation). This is not necessary if we know that the expression a + 5 will be reassigned to a. In this case, a itself can be used as the temporary variable. Use TEMPORARY to indicate to IDL which variable can be used as the temporary variable:

a = temporary(a) + 5


Now, adding 5 will happen â€śin placeâ€ť in the memory that holds a. Incidently, for operations like the above, an even more efficient way to perform this calculation is:

a += 5


There are composite assignment forms like the above for all of IDLâ€™s binary operators.

On the other hand, TEMPORARY does not help for expressions where the variable to be reassigned to is used multiple times like

a = a^3 + a^2


Neither a on the right-hand side of this statement can be marked temporary because marking a variable as temporary makes the variable undefined (until it is reassigned to again). In this case, if the a in a^3 was marked as temporary, then the a in a^2 would be undefined. (And vice versa.)

The argument of TEMPORARY must be a named variable to have an effect. So

a = temporary(a + 5)


will perform its arithmetic correctly, but will create a temporary variable in doing it.