I have the following lines in my code…

```
double precision, dimension(mj) :: temp, xl, r, pres
equivalence (x(1, 1), pres), (x(1, 4), temp)
equivalence (x(1, 2), r), (x(1, 3), xl)
```

I understand that `equivalence`

causes the two variables to share common memory allocation, thus as one variable’s contents change, the other changes as well (since they have the same memory allocation).

However, I note that `pres`

, `temp`

, `r`

and `xl`

are arrays with a dimension of `mj`

(set to 4000).

I am reading this as that every single part of those 4 arrays are linked to a single value in the corresponding index of `x`

.

For example, all 4000 elements of `pres`

are set to reflect the contents of `x(1, 1)`

. If `x(1, 1)`

's contents change, then every part of `pres`

will change accordingly. Equally, if any part of `pres`

changes, then all parts of `pres`

change, as does `x(1, 1)`

- Am I correct here?
- If so, does this not appear to be overly complex, wasting of space and time?
- If not, where am I going wrong in my thinking?

Thank you for any help received.