Hello!

Suppose I have some likelihood statement

```
y ~ normal(a + toggle*f(x), sigma)
```

where:

- toggle is either 0 or 1 and specified as data
- f(x) is some computationally intensive function that is a function of x (or many other variables).

How does the auto-diff treat this? Is f(x) evaluated even if toggle=0?

Would a more efficient way of coding this be the following?

```
if(toggle == 0){
y ~ normal(a, sigma)
} else {
y ~ normal(a + f(x), sigma)
}
```

…or is there no difference between them?

Thanks!