#Python 3.8, 71 bytes This takes advantage of the [new assignment expressions ("walrus operator")](https://docs.python.org/3/whatsnew/3.8.html#assignment-expressions) introduced in Python 3.8. <!-- language: lang-py --> lambda a,b,c:((m:=a*b*c)**2/(p:=a+b+c)/(p-2*a)/(p-2*b)/(p-2*c)-m/p)**.5 [Try it online!](https://tio.run/##bY/NasMwEITvfoo9Ss7a0Y9V/4DfpBAkWSEBKxKWD@3Tu8INuAVLh93lmxmY@L0@wkt2cdkmGD@3WXszadBo0A6E@GHUpSktLUtxJTFfF3OxNK@VKPV7mve0tPLXmKW12u5L8OD1@oCnj2FZ4ZnsHJIrVpfWm9XJJRiBECJQYkMReC0@FMUC/j1CMkW1c867U66wzVzWTJ35W@yRsz1AsfZE0GH@mbOaMXbCuZAoZIOyyfGS9TVnPaXFPSxANIJBsNntvqKzueULjoLDnqVTckd/8itEmP6YFzff1jCP3FVMIGiTjpNuPw "Python 3.8 (pre-release) – Try It Online") It's based on the same calculations described in [Arnauld's answer](https://codegolf.stackexchange.com/a/203493/13959), but using the perimeter \$p\$ instead of the semiperimeter \$s\$: $$ \begin{aligned}\\ p&=a+b+c\\ &=2s \end{aligned}\\ \therefore d=\sqrt{R^2-\frac{abc}{p}}\\ \text{and } R^2=\frac{\left(abc\right)^2}{p(p-2a)(p-2b)(p-2c)} $$ The grand total savings of this rearrangement is... two bytes. Storing the product \$abc\$ in \$m\$ saves another one byte.