# Why do certain values in ArcSin not fully evaluate?

This is a continuation of: Why do certain fractional values in TriangleWave not evaluate?
The analysis by R.M and rasher revealed that problem to reduce to the behavior of:

ArcSin[Sin[π / 10]]

ArcSin[1/4 (-1 + Sqrt[5])]


Every other denominator besides ten, at least up to 500,000, automatically evaluates to a simpler form:

 Position[ArcSin[Sin[π / Range[500000]]], _ArcSin]  (* slow *)

{{10}}


All other coefficient of π with a denominator of ten appear to exhibit the same problem:

ArcSin[Sin[{1, 3, 7, 9, 11} π/10]]

{ArcSin[1/4 (-1 + Sqrt[5])], ArcSin[1/4 (1 + Sqrt[5])], ArcSin[1/4 (1 + Sqrt[5])],
ArcSin[1/4 (-1 + Sqrt[5])], ArcSin[1/4 (1 - Sqrt[5])]}


FullSimplify reduces the expression:

 ArcSin[Sin[{1, 3, 7, 9, 11} π/10]] // FullSimplify

{π/10, (3 π)/10, (3 π)/10, π/10, -(π/10)}


Is this a bug? Is there some explanation for it?

Before someone points out the obvious: I see that Sin[π/10] evaluates to 1/4 (-1 + Sqrt[5]). But why isn't ArcSin "smart" enough to recognize this value, when it recognizes others? For example Sin[π/12] evaluates to (-1 + Sqrt[3])/(2 Sqrt[2]) but ArcSin correctly recognizes this and outputs π/12.

• Why would they give ArcSin ReadProtected if removing it does not show additional information? :( Jan 9 '14 at 10:42
• @Jacob A bad sense of humor? Jan 9 '14 at 10:48
• FWIW, while Sin[Pi/8] does not evaluate, if expanded to Sqrt[2 - Sqrt[2]]/2], by hand or with SimplifyTrigToRadicals, ArcSin[Sqrt[2 - Sqrt[2]]/2] does not evaluate back to Pi/8, unless FullSimplify is applied. This seems to have a different issue than Pi/10, in that Pi/8 is never guessed at, if we apply Trace as in Simon Wood's answer. (Of course, without replacing Sin[Pi/8], ArcSin[Sin[Pi/8]] yields Pi/8.) Jan 9 '14 at 14:56

Looking at the Trace of one which does work:

x = Sin[Pi/5]
(* Sqrt[5/8 - Sqrt[5]/8] *)

Trace[ArcSin[x], TraceInternal -> True]


It appears that Mathematica computes the ArcSin numerically and then recognises the result, 0.628319 as possibly equal to Pi/5. To check it computes Sin[Pi/5], and subtracts it from the original argument to see if it gets zero. It does, and so Pi/5 is the correct result.

Note that this relies on getting zero from this:

x - x
(* 0 *)


Interestingly, with Pi/10 we get this:

x = Sin[Pi/10]
(* 1/4 (-1 + Sqrt[5]) *)

x - x
(* 1/4 (1 - Sqrt[5]) + 1/4 (-1 + Sqrt[5]) *)


It doesn't automatically simplify to zero. The Trace reveals that Mathematica correctly guesses that the numerical result 0.314159 might be equal to Pi/10 but because the result above doesn't simplify to zero it appears that the guess of Pi/10 is rejected and the result is returned unevaluated:

Trace[ArcSin[x], TraceInternal -> True]


• Very interesting. Adding a Expand or Simplify in ArcSin internals would have helped. Jan 9 '14 at 11:37
• It seems to be this effects all x - x where x matches the FullForm Times[Rational[1, n],Plus[__]]. Jan 9 '14 at 13:50
• @MikeLimaOscar Nice observation. It seems the minus sign is applied to the Plus factor when the numerator of Rational[p, q] is p = 1; otherwise it is applied to p. (If p == -1, the minus is taken from the Rational and moved to the Plus automatically.) Jan 9 '14 at 14:14
• Kind of fun, if mysterious: ClearAll[p]; SetAttributes[p, NumericFunction]; N[p[], prec_] := N[23 Pi, prec]; ArcSin@Sin[p[]/10]. Trace does not reveal how it's done. You can play with the multiple of Pi - I always get a correct, exact answer (in terms of p[]). Jan 9 '14 at 15:02

Extended comment

There seems to be an entire class that does not get simplified

mm = 1000;
nn = 20;
nn2 = 20;
nn3 = 10;
primes = Table[Prime[kk], {kk, mm}];
Apply[Equal,
ArcSin[1/ll (ll3 Sqrt[kk] + ll2)], {kk, primes[[;; nn]]}, {ll,
nn2}, {ll2, -nn2, nn2}, {ll3, -nn3, nn3}]]


True

All the examples by Mr.Wizard are in this class.

I thought the issue might be that Mathematica knows that ArcSin[Sin[Pi/20]] == Pi/20 only because Sin[Pi/20] stay unevaluated, but that seems not to be the reason, which can be seen from

InternalInheritedBlock[
{ArcSin},
SetAttributes[ArcSin, HoldAll];
HoldForm@Evaluate@Column@
{ArcSin[Sin[Pi/10]],
ArcSin[1]}
]


ArcSin[Sin[Pi/10]]
Pi/2

which I suppose doing a simple ArcSin[Unevaluated[Sin[Pi/10]]] also proves.