FunctionRange[f,x,y]
finds the range of the real function f of the variable x returning the result in terms of y.
FunctionRange[f,x,y,dom]
considers f to be a function with arguments and values in the domain dom.
FunctionRange[funs,xvars,yvars,dom]
finds the range of the mapping funs of the variables xvars returning the result in terms of yvars.
FunctionRange[{funs,cons},xvars,yvars,dom]
finds the range of the mapping funs with the values of xvars restricted by constraints cons.
FunctionRange
FunctionRange[f,x,y]
finds the range of the real function f of the variable x returning the result in terms of y.
FunctionRange[f,x,y,dom]
considers f to be a function with arguments and values in the domain dom.
FunctionRange[funs,xvars,yvars,dom]
finds the range of the mapping funs of the variables xvars returning the result in terms of yvars.
FunctionRange[{funs,cons},xvars,yvars,dom]
finds the range of the mapping funs with the values of xvars restricted by constraints cons.
Details and Options
- funs should be a list of functions of variables xvars.
- funs and yvars must be lists of equal lengths.
- Possible values for dom are Reals and Complexes. The default is Reals.
- If dom is Reals then all variables, parameters, constants, and function values are restricted to be real.
- cons can contain equations, inequalities, or logical combinations of these.
- The following options can be given:
-
GeneratedParameters C how to name parameters that are generated Method Automatic what method should be used WorkingPrecision Automatic precision to be used in computations - With WorkingPrecision->Automatic, FunctionRange may use numerical optimization to estimate the range.
Examples
open all close allBasic Examples (2)
Scope (7)
FunctionRange[x ^ 2 - 1, x, y]FunctionRange[Sqrt[x ^ 2 - 1] / x, x, y]FunctionRange[Sin[x] / Sqrt[x], x, y]FunctionRange[Sin[x ^ 2 - 1] - 1 / (x ^ 2 + 2), x, y]Range over a domain restricted by conditions:
FunctionRange[{Sin[x ^ 2 - 1] - 1 / (x ^ 2 + 2), 0 ≤ x ≤ 1}, x, y]FunctionRange[Sqrt[x], x, y, Complexes]FunctionRange[(x - Sqrt[x ^ 2]) / x, x, y, Complexes]FunctionRange[x ^ 2 + x y + y ^ 2, {x, y}, z]FunctionRange[(x - y) / (1 + x ^ 2 + y ^ 2), {x, y}, z]FunctionRange[Sin[x y] - Cos[x + y], {x, y}, z]FunctionRange[{x ^ 2 + y, y ^ 2 + x}, {x, y}, {u, v}]FunctionRange[{x ^ 2, x y, y ^ 2}, {x, y}, {u, v, w}]FunctionRange[{(1 - x ^ 2) / (1 + x ^ 2), 2x / (1 + x ^ 2)}, {x}, {u, v}]Range over a domain restricted by conditions:
FunctionRange[{{x y, x + y}, x ^ 2 + y ^ 2 ≤ 1}, {x, y}, {u, v}]Complex multivariate functions and mappings:
FunctionRange[(x - y) / (1 + x ^ 2 + y ^ 2), {x, y}, z, Complexes]FunctionRange[{x ^ 2, x y, y ^ 2}, {x, y}, {u, v, w}, Complexes]Options (3)
GeneratedParameters (1)
FunctionRange may introduce new parameters to represent the result:
FunctionRange[Boole[Sin[x] == 1 / 2]x, x, y]Use GeneratedParameters to control how the parameters are generated:
FunctionRange[Boole[Sin[x] == 1 / 2]x, x, y, GeneratedParameters -> (Subscript[k, #]&)]Method (1)
By default, the results returned by FunctionRange may not be reduced:
FunctionRange[{{x y, x + y}, x ^ 2 + y ^ 2 ≤ 1}, {x, y}, {u, v}]Use Method to specify that the result should be given in a reduced form:
FunctionRange[{{x y, x + y}, x ^ 2 + y ^ 2 ≤ 1}, {x, y}, {u, v}, Method -> {"Reduced" -> True}]WorkingPrecision (1)
By default, FunctionRange attempts to compute exact results:
FunctionRange[(Sqrt[x] + Sqrt[y]) / (x ^ 2 + y ^ 2 + 1), {x, y}, z]With finite WorkingPrecision, slower symbolic methods are not used:
FunctionRange[(Sqrt[x] + Sqrt[y]) / (x ^ 2 + y ^ 2 + 1), {x, y}, z, WorkingPrecision -> MachinePrecision]Applications (13)
Basic Applications (7)
Find the range of a real function:
FunctionRange[x ^ 2 - 4, x, y]All real values within the range are attained:
Show[{RegionPlot[%, ...], Plot[x ^ 2 - 4, {x, -3, 3}]}, ...]Find the range of a discontinuous function:
FunctionRange[Erf[Sec[x] / 2], x, y]The range consists of two intervals:
Show[{RegionPlot[%, ...], Plot[Erf[Sec[x] / 2], {x, -5Pi, 5Pi}]}, ...]Find the range of
over the interval
:
FunctionRange[{Fibonacci[x], -2 <= x <= 4}, x, y]Between
and
the plot is contained within the range:
Show[{RegionPlot[%, ...], Plot[Fibonacci[x], {x, -5, 5}]}, ...]Find the range of a complex function:
f = 2 / (1 - I ^ x) - 1;FunctionRange[f, x, y, Complexes]The function does not attain values
and
:
GraphicsRow[{ComplexPlot3D[f + 1, {x, -3 - 3I, 3 + 3I}], ComplexPlot3D[f - 1, {x, -3 - 3I, 3 + 3I}]}, ...]Compute the images of the unit disk through Möbius transformations
and
:
FunctionRange[{(x - 1) / (x - 5 / 4), Abs[x] < 1}, x, y, Complexes]FunctionRange[{(x - 5 / 4) / (x - 1), Abs[x] < 1}, x, y, Complexes]The images are a disk and a half-plane:
RegionPlot@@{{%%, %} /. {Re[y] -> a, Im[y] -> b}, {a, 0, 2}, {b, -0.5, 0.5}, ...}A function is surjective if FunctionRange gives True:
FunctionRange[Tan[x], x, y]You can test surjectivity using FunctionSurjective:
FunctionSurjective[Tan[x], x]A surjective function attains all values:
Plot[Tan[x], {x, -3Pi, 3Pi}]A function is surjective on a set of values if that set of values is contained in the function's range:
f = ParabolicCylinderD[5, x];r = FunctionRange[f, x, y]Use FindInstance to show that the interval
is contained in the range of
:
FindInstance[-5 <= y <= 5 && Not[r], y, Reals]Confirm that
is surjective onto
using FunctionSurjective:
FunctionSurjective[{f, True, -5 <= y <= 5}, x, y]Plot[f, {x, -10, 10}, ...]Use FindInstance to show that the interval
is not contained in the range of
:
FindInstance[0 <= y <= 10 && Not[r], y, Reals]Plot[f, {x, -10, 10}, ...]Confirm that
is not surjective onto
using FunctionSurjective:
FunctionSurjective[{f, True, 0 <= y <= 10}, x, y]Solving Equations and Optimization (3)
The equation
has solutions in the real domain of
if and only if
belongs to the real range of
:
r = FunctionRange[LogGamma[x], x, y]
belongs to the range of
, and hence
has solutions:
r /. y -> 1Solve[LogGamma[x] == 1, x, Reals]Plot[LogGamma[x], {x, -1, 5}, GridLines -> {x /. %, {1}}, Rule[...]]
does not belong to the range of
, and hence
has no solutions:
r /. y -> -1Solve[LogGamma[x] == -1, x, Reals]Plot[LogGamma[x], {x, -1, 5}, ...]The equation
has complex solutions if and only if
belongs to the complex range of
:
f = (2 ^ x + 1) / (3 - 2 ^ x);r = FunctionRange[f, x, y, Complexes]
belongs to the range of
, and hence
has solutions:
r /. y -> 1 + ISolve[f == 1 + I, x]Show[{ComplexPlot3D[f - (1 + I), {x, -2 - 2 I, 2 + 2 I}], Graphics3D[...]}, Rule[...]]
does not belong to the range of
, and hence
has no solutions:
r /. y -> 1 / 3Solve[f == 1 / 3, x]ComplexPlot3D[f - 1 / 3, {x, -2 - 2I, 2 + 2I}, Rule[...]]Compute the infimum and the supremum of values of a function:
FunctionRange[JacobiZN[x, 1], x, y]Plot[JacobiZN[x, 1], {x, -5, 5}, ...]You can also compute the infimum and the supremum of a function using MinValue and MaxValue:
MinValue[JacobiZN[x, 1], x]MaxValue[JacobiZN[x, 1], x]Calculus (3)
The range of a continuous function over a connected interval must be a connected interval:
FunctionContinuous[{InverseHaversine[x], 0 <= x <= 1}, x]FunctionRange[InverseHaversine[x], x, y]Plot[InverseHaversine[x], {x, 0, 1}]The range of a discontinuous function over a connected interval may be disconnected:
FunctionContinuous[{KaiserWindow[x], -1 <= x <= 1}, x]FunctionRange[{KaiserWindow[x], -1 <= x <= 1}, x, y]Plot[KaiserWindow[x], {x, -1, 1}]The range of a discontinuous function over a connected interval may be connected too:
FunctionContinuous[{HarmonicNumber[x, 3], -5 <= x <= 5}, x]FunctionRange[{HarmonicNumber[x, 3], -5 <= x <= 5}, x, y]Plot[HarmonicNumber[x, 3], {x, -5, 5}]If a function has a limit, that limit must belong to the closure of the function's range:
FunctionRange[{(Cos[x] - 1) / x ^ 2, -1 <= x <= 1}, x, y]The limit may not belong to the range itself:
Limit[(Cos[x] - 1) / x ^ 2, x -> 0]Plot[(Cos[x] - 1) / x ^ 2, {x, -1, 1}, ...]Estimate the value of
the integral of
over the interval
:
FunctionRange[{SinIntegral[x], 2 <= x <= 4}, x, y]
must be between the minimum and the maximum values in the range times the length of the interval:
{lbd, ubd} = {SinIntegral[2], SinIntegral[π]}(4 - 2)Verify that the value of the integral computed using Integrate satisfies the inequalities:
int = Integrate[SinIntegral[x], {x, 2, 4}]lbd <= int <= ubd
is equal to the average value of the function in the interval times the length of the interval:
Plot[{SinIntegral[x](4 - 2), lbd, ubd, int}, {x, 2, 4}, ...]Properties & Relations (1)
A function is surjective if its FunctionRange is True:
FunctionRange[x Sin[x], x, y]Use FunctionSurjective to test whether a functions is surjective:
FunctionSurjective[x Sin[x], x]Possible Issues (1)
Values at isolated points at which the function is real-valued may not be included in the result:
FunctionRange[Hyperfactorial[x], x, y]Plot[{Hyperfactorial[x], %[[2]]}, {x, -3, 3}, PlotRange -> {0, 4}]
is non-real valued for
, except for isolated values of
:
Plot[Im[Hyperfactorial[x]], {x, -3.1, 0}]Real values of
for
may lie outside the range given by FunctionRange:
Hyperfactorial[-3]Related Guides
History
Introduced in 2014 (10.0)
Text
Wolfram Research (2014), FunctionRange, Wolfram Language function, https://reference.wolfram.com/language/ref/FunctionRange.html.
CMS
Wolfram Language. 2014. "FunctionRange." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FunctionRange.html.
APA
Wolfram Language. (2014). FunctionRange. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FunctionRange.html
BibTeX
@misc{reference.wolfram_2026_functionrange, author="Wolfram Research", title="{FunctionRange}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/FunctionRange.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_functionrange, organization={Wolfram Research}, title={FunctionRange}, year={2014}, url={https://reference.wolfram.com/language/ref/FunctionRange.html}, note=[Accessed: 13-June-2026]}