Calculate the relativistic velocity In special relativity, the velocity of a moving object relative to another object that is moving in the opposite direction is given by the formula:
\begin{align}s = \frac{v+u}{1+vu/c^2}.\end{align}
s = ( v + u ) / ( 1 + v * u / c ^ 2)

In this formula, \$v\$ and \$u\$ are the magnitudes of the velocities of the objects, and \$c\$ is the speed of light (which is approximately \$3.0 \times 10^8 \,\mathrm m/\mathrm s\$, a close enough approximation for this challenge).
For example, if one object was moving at v = 50,000 m/s, and another object was moving at u = 60,000 m/s, the velocity of each object relative to the other would be approximately s = 110,000 m/s. This is what you would expect under Galilean relativity (where velocities simply add). However, if v = 50,000,000 m/s and u = 60,000,000 m/s, the relative velocity would be approximately 106,451,613 m/s, which is significantly different than the 110,000,000 m/s predicted by Galilean relativity.
The Challenge
Given two integers v and u such that 0 &lt;= v,u &lt; c, calculate the relativistic additive velocity, using the above formula, with c = 300000000. Output must be either a decimal value or a reduced fraction. The output must be within 0.001 of the actual value for a decimal value, or exact for a fraction.
Test Cases
Format: v, u -&gt; exact fraction (float approximation)
50000, 60000 -&gt; 3300000000000/30000001 (109999.99633333346)
50000000, 60000000 -&gt; 3300000000/31 (106451612.90322581)
20, 30 -&gt; 7500000000000000/150000000000001 (49.999999999999666)
0, 20051 -&gt; 20051 (20051.0)
299999999, 299999999 -&gt; 53999999820000000000000000/179999999400000001 (300000000.0)
20000, 2000000 -&gt; 4545000000000/2250001 (2019999.1022226212)
2000000, 2000000 -&gt; 90000000000/22501 (3999822.2301231055)
1, 500000 -&gt; 90000180000000000/180000000001 (500000.9999972222)
1, 50000000 -&gt; 90000001800000000/1800000001 (50000000.972222224)
200000000, 100000000 -&gt; 2700000000/11 (245454545.45454547)
Mathematica, 17 bytes

+##/(1+##/9*^16)&amp;


An unnamed function taking two integers and returning an exact fraction.

Explanation

This uses two nice tricks with the argument sequence ##, which allows me to avoid referencing the individual arguments u and v separately. ## expands to a sequence of all arguments, which is sort of an "unwrapped list". Here is a simple example:

{x, ##, y}&amp;[u, v]


gives

{x, u, v, y}


The same works inside arbitrary functions (since {...} is just shorthand for List[...]):

f[x, ##, y]&amp;[u, v]


gives

f[x, u, v, y]


Now we can also hand ## to operators which will first treat them as a single operand as far as the operator is concerned. Then the operator will be expanded to its full form f[...], and only then is the sequence expanded. In this case +## is Plus[##] which is Plus[u, v], i.e. the numerator we want.

In the denominator on the other hand, ## appears as the left-hand operator of /. The reason this multiplies u and v is rather subtle. / is implemented in terms of Times:

FullForm[a/b]
(* Times[a, Power[b, -1]] *)


So when a is ##, it gets expanded afterwards and we end up with

Times[u, v, Power[9*^16, -1]]


Here, *^ is just Mathematica's operator for scientific notation.