This will look at first like a posting about trigonometry, then maybe about statistics, then finally about peculiarities of either

- a certain random process; or
- the pseudorandom number generator that I'm using; or
- other (specify!).

My question is: Which is it? And what's actually going on? I suspect it's the second alternative, but I'm not at all confident about that.

In the course of doing a bit of amateur cartography, I derived this little trigonometric relation:

If $(\cos\alpha,\sin\alpha)$ is in the **right half** of the unit circle (in other words, $\cos\alpha>0$), and $$\tan\gamma=\dfrac{\sin\alpha\sin\beta}{\cos\alpha+\cos\beta},$$ and $\cos\gamma$ is also positive, then
$$\tan\dfrac\gamma2=\tan\dfrac\alpha2\cdot\tan\dfrac\beta2.$$
Numerical evidence bore out what I had derived, so now I should live happily ever after.

(And I was moderately intrigued by the resemblance to the simpler and more familiar tangent half-angle formula $\dfrac{\sin\alpha+\sin\beta}{\cos\alpha+\cos\beta}=\tan\dfrac{\alpha+\beta}{2}$.)

But then I asked what happens in the **left half** of the circle, where the cosine is negative. The answer turns out to be
$$
-\cot\frac\gamma2 = \tan\frac\alpha2\cdot\tan\frac\beta2.
$$
[But see the "later note" below.]

But instead of deriving this by massaging trigonometric identities I got lazy and did some "experimental mathematics". Using R, I entered these commands:

```
a <- pi/180*(runif(1000)*(177 - 93) +93)
b <- pi/180*(runif(1000)*(177 - 93) +93)
c <- atan( sin(a)*sin(b)/(cos(a)+cos(b) ))
u <- -1/(tan(a/2)*tan(b/2))
coefficients(lm(tan(c/2) ~ u))
```

(Intercept) u

0 1

```
anova(lm(tan(c/2) ~ u))
```

Analysis of Variance Table

Response: tan(c/2)

Df Sum Sq Mean Sq F value Pr(>F)

u 1 29.222 29.222 2.1747e+34 < 2.2e-16 ***
Residuals 998 0.000 0.000
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Warning message:

In anova.lm(lm(tan(c/2) ~ u)) :

ANOVA F-tests on an essentially perfect fit are unreliable

```
plot(u,residuals(lm(tan(c/2) ~ u)))
```

So this puts $a$ and $b$ between $\pi/2$ and $\pi$, or more precisely, between $93\cdot\frac{\pi}{180}$ and $177\cdot\frac{\pi}{180}$, and chooses 1000 such pairs $(a,b)$ independently, and they're uniformly distributed in that region. Then it sets $c=\arctan(\sin a\sin b/(\cos a+\cos b))$, and $u=-1/(\tan a\tan b)$. Then we look at coefficients from a simple linear regression of $\tan(c/2)$ on $u$, and the software reports $0$ for the intercept and $1$ for the slope. An analysis of variance gives $0$ as the sum of squares of residuals, so it seems we have a perfect fit.

Finally, I plotted $u$ on the horizontal axis and the residuals on the vertical axis, and I got the following! If real numbers rather than approximations could be used, they would of course all be $0$, so this is about rounding errors, but still I wouldn't expect to see a pattern like this. I tried it a dozen or so times with pretty much the same result, and I tried it with the angles in the first quadrant and the identity that holds in that quadrant, with the same result again.

**LATER NOTE:** Well, haste makes waste, I guess. I *should* have let $\gamma$ be the "other value of" the arctangent once I moved into the second quadrant, i.e. $\gamma=\arctan(\cdots\cdots\cdots)+\pi$ as soon as the argument to the arctangent function was more than $\pi/2$. That way we still have the identity $\tan\frac\gamma2=\tan\frac\alpha2\cdot\tan\frac\beta2$. However, this doesn't upset the main point of this question. As I said, this already works in the *first* quadrant; I simply hadn't yet noticed it because at that point I was still doing things intelligently rather than numerically.

7more comments