I know that:
- If $f$ is continuous and monotonous on $[a, b]$, then $$f([a, b]) = [\min(f(a), f(b)), \max(f(a), f(b))]$$
- If $f$ is continuous and unimodal on $[a, b]$ with an extremum at $x_0 \in [a, b]$, then $$f([a, b]) = [\min\{f(a), f(x_0), f(b)\}, \max\{f(a), f(x_0), f(b)\}]$$
- If $f=\cos$ or $f=\sin$, then I can calculate $f([a, b])$ with a tedious disjunction of six cases depending on the positions of $a$ and $b$ relative to $2k\pi$ and $(2k+1)\pi$.
- If $f$ is periodic with period $T$ and $b-a \geq T$, then $f([a, b]) = \operatorname{range}(f)$; but if $b-a < T$, not much can be said.
What other assumption on $f$ could allow me to calculate $f([a, b])$?
By "calculate" I mean constructively calculate, assuming that I can call function $f$ on particular values, including $a$, $b$, any value given as part of the assumption such as $x_0$ above, or any other value that I can constructively calculate.