There are still three arguments to max in the last of those examples. Actually it's not clear that you can make an equivalent expression with min and max. Functionally (with intended use) x[i] = max(a, min(b, x[i])) does the same thing as the earlier examples but it expands to x[i] = ifelse(ifelse(b < x[i], b, x[i]) < a, a, ifelse(b < x[i], b, x[i])) which should be hard for a compiler to optimize to the earlier examples since they don't give the same result in the degenerate case of a > b.
A closer correspondence is given by the clamp function which is implemented as a nested ifelse in the same way as example 2 (although in the opposite order, so it also differs for a>b). Den onsdagen den 17:e september 2014 kl. 16:28:45 UTC+2 skrev Arch Robison: > > Thanks. Now fixed. > > On Wed, Sep 17, 2014 at 4:14 AM, Gunnar Farnebäck <[email protected] > <javascript:>> wrote: > >> In the section "The Loop Body Should Be Straight-Line Code", the first >> and second code example look identical with ifelse constructions. I assume >> the first one should use ? instead. Also the third code example has a stray >> x[i]<a argument to the max function. >> >
