The Actual Process Nobody Explains Well
Most people get confused about range because textbooks define it as "all possible output values" and then immediately hand you a quadratic with three steps. The real confusion starts when you encounter something that doesn't behave nicely. I once spent an hour on a single graphing problem in a senior calculus class where the answer wasn't what the curve appeared to show. The function was f(x) = sqrt(4 - x^2) + 1. Visually, the upper semicircle sat between y = 0 and y = 3, but the range was actually [1, 3], not [0, 3]. Students kept writing the full diameter because they weren't paying attention to the vertical shift. It's a small detail. It costs you points every time. Start by identifying the type of function. The method changes entirely depending on whether you're dealing with a polynomial, rational function, radical, absolute value, or piecewise expression. A linear function like y = 3x - 7 has a range of all real numbers, period. There is nothing to solve. A quadratic in standard form, y = ax^2 + bx + c, needs you to find the vertex. The vertex gives you either the minimum or maximum y-value, and the range extends from there in one direction. If a is positive, the parabola opens up and the range is [k, infinity). If a is negative, it opens down and the range is (-infinity, k]. That k is the y-coordinate of the vertex, which you get from -b/(2a) plugged back into the equation. Here is where it gets messy. Rational functions like f(x) = (2x + 1)/(x - 3) don't follow the same rule. You can't just complete the square and call it done. For these, you need to find the horizontal asymptote. Divide the leading coefficients: 2/1 = 2. So y = 2 is the asymptote, and the range is all real numbers except y = 2. But here's the counter-intuitive part that trips people up constantly. An asymptote doesn't always mean the value is excluded from the range. Sometimes the graph crosses its own horizontal asymptote. It happens with rational functions of higher degree, especially when the numerator and denominator share factors or when you have something like f(x) = (x^2 - 1)/(x^2 + 1). The horizontal asymptote is y = 1, but the graph actually approaches it from below and never touches it, so y = 1 is still excluded. However, with f(x) = (x^3 - x)/(x^2 + 1), the function can cross y = 0 at multiple points and the range includes values the asymptote suggests it shouldn't. You have to verify by setting y equal to the function and solving for x.
For radical functions, the domain restriction matters more than you might expect. Take f(x) = sqrt(x + 2) - 3. The domain starts at x = -2 because you can't take the square root of a negative number in real-valued functions. At x = -2, the output is -3. From there, the function only increases. The range is [-3, infinity). The domain told you where to start, and the range follows directly. If you skip checking the domain first, you might incorrectly assume the range includes values below -3. I've seen this error on every exam I've ever proctor.ed It's reliable. Absolute value functions flip the picture again. f(x) = |2x - 4| + 1 has a V-shape with the vertex at x = 2. The output at the vertex is 1, and since absolute value always produces non-negative results, the range is [1, infinity). But if the absolute value is on the outside of a flipped parabola, like f(x) = -|x^2 - 4| + 3, the range becomes (-infinity, 3]. The negative sign inverts everything. The peak is at y = 3 and it goes downward without bound. When you're given a graph instead of an equation, the process is visually simpler but prone to a different kind of mistake. Look at the lowest and highest points on the curve. If there's an open circle or a dashed asymptote, that endpoint is excluded. Use parentheses. If there's a solid dot, use brackets. The problem is that graphs in textbooks are often drawn imprecisely. A curve that looks like it touches y = 0 might actually be approaching it asymptotically. I learned this the hard way during a qualifying exam when I wrote the range as including zero based on a hand-drawn graph. The function was f(x) = e^(-x^2), which never actually reaches zero. It only gets arbitrarily close. The correct range was (0, 1]. I lost points on a question I thought was straightforward because I trusted my eyes instead of the algebra.
For piecewise functions, you handle each piece separately and then combine the results. Consider: f(x) = { x + 2 for x < 1
x^2 for x 1 } The first piece, x + 2, covers the interval (-infinity, 1). At x = 1 (not included), the output would be 3. As x goes to negative infinity, the output goes to negative infinity. So the first piece contributes (-infinity, 3). The second piece, x^2, starts at x = 1 and goes right. At x = 1, the output is 1. As x increases, x^2 increases without bound. This piece contributes [1, infinity). The union of both pieces is (-infinity, 3) union [1, infinity), which simplifies to all real numbers. The range is (-infinity, infinity). Notice how the overlap between the two pieces doesn't create a gap. That's the kind of thing that looks harmless but can hide a missing interval if you're not careful.
Get the Full Details

Trigonometric functions are their own category. The range of sine and cosine is always [-1, 1] unless you apply a vertical shift or stretch. The range of tangent is all real numbers, but you have to account for the vertical asymptotes at odd multiples of pi/2. If you're working with a restricted domain, the range shrinks accordingly. f(x) = sin(x) on the interval [0, pi/2] has a range of [0, 1]. Not [-1, 1]. The domain restriction changed everything. One technique that works across most function types is the inverse function method. Set y equal to the function, then solve for x in terms of y. Whatever values of y allow a real solution for x are in the range. This works especially well for rational and radical functions where visual inspection fails. For f(x) = (3x + 2)/(x - 1), set y = (3x + 2)/(x - 1). Multiply both sides by (x - 1): y(x - 1) = 3x + 2. Distribute: yx - y = 3x + 2. Move x terms together: yx - 3x = y + 2. Factor: x(y - 3) = y + 2. Solve: x = (y + 2)/(y - 3). This is undefined when y = 3, so the range is all real numbers except y = 3. You confirmed what the asymptote told you, but through algebra instead of guesswork. This matters when the asymptote approach gives ambiguous results. The biggest limitation of all these methods is that they assume you're working with functions that have closed-form expressions. When you're given a scatter plot, experimental data, or a graph generated from a numerical simulation, none of this applies directly. You estimate the range by looking at the data extremes, and that estimate can be wrong if your sampling is sparse. I worked on a project where the apparent range of a measured signal was [0.1, 4.7] based on collected data points, but when we increased the sampling density, we found the actual range extended to approximately [0.03, 5.1]. The function had narrow peaks and troughs between the sample points that were completely missed. If your graph comes from measurements rather than an equation, treat the observed range as an approximation, not a definitive answer.
Another practical issue: calculators and graphing software can mislead you. Desmos and GeoGebra are generally reliable, but they use pixel-based rendering. A tiny dip or a sharp local extremum might not appear at the default zoom level. I've had students swear a function had no local maximum because their graph window was too wide. The extremum existed but was compressed into a single pixel. Always zoom in around suspicious regions before declaring a range. For polynomial functions of odd degree, the range is always all real numbers. Even-degree polynomials have either a minimum or maximum at the vertex, so the range is bounded on one side. This is a quick rule that saves time on multiple-choice questions, but it doesn't help when the polynomial is factored or when you're dealing with composite functions. The underlying principle is that odd-degree polynomials go from negative infinity to positive infinity, while even-degree ones turn around at their extrema. Logarithmic functions have a range of all real numbers, but only if the argument can take any positive value. f(x) = ln(x^2 - 4) is a trap. The domain is x < -2 or x > 2, and within that domain the argument x^2 - 4 ranges from just above 0 to infinity. The natural log of values approaching 0 goes to negative infinity, and the natural log of large values goes to positive infinity. The range is still all real numbers, but getting there requires checking that the argument actually covers the full positive real line. If the argument were something like x^2 + 4, the minimum value of the argument is 4, and the range of the log function would be [ln(4), infinity). The domain and the range are connected through the behavior of the inner function.
Don't forget about interval notation. Writing "all real numbers greater than or equal to negative 5" is correct but inefficient. Use [-5, infinity). Use parentheses for strict inequalities and asymptotic exclusions. Use brackets for inclusive endpoints. Mixing these up is one of the most common grading penalties I've seen. It doesn't matter if your math is right. Wrong notation means wrong answer. Finally, when you combine functions through composition, the range of the inner function becomes the domain of the outer function, and that domain restriction can shrink the overall range. f(g(x)) where g(x) = sqrt(x) and f(x) = 1/x means g outputs only [0, infinity), but f is undefined at 0, so the composite effectively receives (0, infinity) as input. The range of 1/x over (0, infinity) is (0, infinity). The composition changed the range from what you'd expect by looking at f alone. These layering effects are where most students lose track. Work from the inside out and label each intermediate range as you go.
