The range is the set of all #y# values that the function encompasses. In other words, it's the places where the function actually exists on the #y#-axis.
To find it, we just need to locate the places where #f(x)# does not exist. This involves trying some #x#-values and see if they correspond to an #f(x)# value.
The first point we should try is #x=0#, because sometimes there's trouble with that point in rational functions:
#f(x)=x/(2+x^2)#
#f(0)=0/(2+0)#
#f(0)=0/2=0#
Everything's fine here. Now let's try #x=1# and #x=-1#:
#f(1)=1/(2+1^2)=1/3#
#f(-1)=-1/(2+(-1)^2)=-1/3#
So far, so good - it's looking like the range is all #y#-values. But before we jump to this conclusion, let's try a big number, say #x=100#:
#f(100)=100/(2+100^2)=100/(10002)#
We can see that #f(x)# is getting smaller and smaller as #x# is getting bigger and bigger, which forces us to ask if #f(x)# ever is greater than #1#. We can find that out by setting #f(x)=1# and solving for #x#:
#1=x/(2+x^2)#
#2+x^2=x#
#x^2-x+2=0#
This is a quadratic equation with no real solutions, which means there are no values of #x# that allow #f(x)# to equal #1#. In other words, no value of #x# will make #f(x)=1#, so the range is restricted. A similar test with #f(x)=-1# shows the same thing, so the range is #-1<y<1#. We can confirm this by looking at the graph.
graph{x/(2+x^2) [-10, 10, -5, 5]}