If you have radius $r$ and angle $\theta$ in rad, then $A = r\theta$ and $C = 2r\sin(\theta/2)$. To get this independent of $r$ lets consider
$$ C/A = \frac{2\sin(\theta/2)} \theta$$
This is a function that is falling montonously for $0\leq \theta \leq 2\pi$, so while we cannot invert this exactly we can easily invert this numerically, for example by simple bisection:
- Set $l = 0,u = 2\pi$
- Set $m = (l+u)/2$
- If $(2*sin(m/2))/m = C/A$ we’re done
- If $\ldots < C/A$ set $u=m$
- Else set $l=m$
- If $u-l<\epsilon$ for some $\epsilon$ return $m$, else jump to 2.
So now you know some (numerical) value for $\theta$. Use $A=r\theta$ to get $r$.
EXAMPLE:
A=9.27, C=8. Then $C/A=0.86...$.
Set $l=0, u=2\pi,m=\pi$. Then $f(m)$ for $f(\theta)=2\sin(\theta/2)/\theta$ is about $0.64<C/A$. So we set $u=\pi$. So $m=\pi/2$, then $f(m)\approx 0.9>C/A$. So we set $l=\pi/2,m=3/4\pi$. Then $f(m)\approx0.74<C/A$, so we set $u=3/4\pi,m=5/8\pi$, $f(m)\approx0.85$.
We could continue this way to improve this value, but let’s go with $\theta = m = 5/8\pi$. Then $9.27\approx r\theta$, so $r\approx 9.27/(5/8\pi)\approx 4.72$.
So for checking the error we check:
$$ 2r\sin(\theta/2)\approx 7.85 \approx C=8 $$
So we are somewhat off, mainly because we calculated $\theta$ only with a precision of $3/4\pi-1/2\pi = \pi/4$, which is kind of large. But you get the point.
EDIT: Of course, instead of bisection we might also use Newton:
The derivative of $2\sin(\theta/2)/\theta$ is $\cos(\theta/2)/\theta - 2\sin(\theta/2)/\theta^2$.
So for $Y=C/A$ set $x_0 =\pi$, and set
$$ x_{n+1} = x_n - \frac{\frac{2\sin(x_n/2)}{x_n} - Y}{\frac{\cos(x_n/2)}{x_n} - \frac{2\sin(x_n/2)}{x_n^2}}$$
$$ = x_n - \frac{2x_n\sin(x_n/2) - Yx_n^2}{x_n\cos(x_n/2) - 2\sin(x_n/2)} $$
This should converge faster. Example with $Y=C/A\approx0.86$:
We have $x_0=\pi$. Then $x_1\approx 2.02$ according to the formula above. Then $x_2\approx 1.859$. Then $x_3\approx 1.85266$. With using this for $\theta$ we get $r\approx 5.004$ in only three iterations. With two additional iterations the error is smaller than the precision of a double float.