On version 8.0.4 (Mac OS X 10.7.4) I can't reproduce the hanging problem right now. So I'll just post what I get in order to illustrate the point whuber was making in the comment about the switch between branches at $\pi/2$: f[r_] := ArcCos[(-1 + 4.20278 r (0.008712/r^2 + 0.475876/r - 1/(1 + r)))/ Sqrt[1 - 10.598 r^2 (0.008712/r^2 + 0.475876/r - 1/(1 + r))]] inv = InverseFunction[f] > InverseFunction::ifun: Inverse functions are being used. Values may be lost for multivalued inverses. (* ==> Function[K$560, Root[-9.980709009173207336338507314921*10^32 - 5.6513875402447117935217351899052*10^34 #1 + \ (-6.2538998570511812298820407237647*10^35 + 6.7574125679790639379694250000000*10^35 Cos[ K$560]^2) #1^2 + (4.9434185675637107331456209245797*10^36 - 2.4031727155691592312030575000000*10^36 Cos[ K$560]^2) #1^3 + (-7.6367044490503772137949618167113*10^36 + 1.0564173268177257812500000000000*10^36 Cos[K$560]^2) #1^4 + 4.1353312991847914062500000000000*10^36 Cos[K$560]^2 #1^5 &, 1]] *) Plot[f[inv[x]], {x, 0, Pi}, AspectRatio -> Automatic] ![plot f of inverse][1] The plot should be a straight line along the diagonal if `inv` were the correct inverse. With `Solve`, you get all the branches and can stitch together the inverse over a larger interval. But with `InverseFunction`, we were warned and proceeded anyway, so it's no wonder that we get an inverse that's only valid up to $\pi/2$. [1]: https://i.sstatic.net/RHd3N.png