Guarantees on computing $a+x(b-a)$ in floating point
Here is a proposed alternative
$$f(x,a,b) = \operatorname{ifelse}(x&lt;0.5, a+x(b-a), b-(1-x)(b-a))$$
which also satisfies (a) and (b), but it is not accurate near $0.5$. It also satisfies (c) except maybe at $\operatorname{prev}(0.5)$ and $0.5$.

For example with double-precision arithmetic we compute $f(0.5,-1.0,\operatorname{prev}(1.0))$ to be -1.11e-16 but it is actually -5.55e-17, so out by a factor of 2.

It's worth noting that the implementation proposed in the question gets this example correct.