Skip to content

Commit c22e484

Browse files
author
Release Manager
committed
gh-39456: Trivial simplifications for arccos This is replacing #36069 supersedes #36069 ### 📝 Checklist - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [x] I have updated the documentation and checked the documentation preview. URL: #39456 Reported by: Frédéric Chapoton Reviewer(s): Travis Scrimshaw
2 parents 68744be + 7c5d6dc commit c22e484

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

src/doc/de/thematische_anleitungen/sage_gymnasium.rst

+1-7
Original file line numberDiff line numberDiff line change
@@ -774,8 +774,7 @@ falls wir im Bogenmass rechnen möchten. Ansonsten müssen wir wie oben beschrie
774774

775775
Ihre Umkehrfunktionen sind auch mit den nicht sehr überraschenden Namen ``asin()``, ``acos()``, ``atan()`` und ``acot()`` versehen.
776776
Sie geben uns aber wie oben erklärt nur Winkel im Bogenmass zurück. Möchten wir im Gradmass rechnen, müssen wir wieder
777-
konvertieren. Die exakte Berechnung der Werte funktioniert in die Gegenrichtung nur, falls im ursprünglichen Wert keine
778-
Wurzeln vorkommen::
777+
konvertieren. Exakte Berechnung der Werte funktioniert, wenn es möglich ist::
779778

780779
sage: atan(1)
781780
1/4*pi
@@ -784,12 +783,7 @@ Wurzeln vorkommen::
784783
sage: rad2deg(x) = x*(180/pi)
785784
sage: rad2deg(acos(-1/2))
786785
120
787-
788-
Falls wir Wurzelterme verwenden, müssen wir mit der Funktion ``simplify_full()`` vereinfachen::
789-
790786
sage: acos(sqrt(3)/2)
791-
arccos(1/2*sqrt(3))
792-
sage: (acos(sqrt(3)/2)).simplify_full()
793787
1/6*pi
794788

795789
Sage kann auch weitere Regeln für trigonometrische Funktionen anwenden, um Terme zu vereinfachen. Es kennt zum Beispiel auch die

src/sage/functions/trig.py

+3
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,9 @@ def __init__(self):
642642
(0.9045568943023814-1.0612750619050357j)
643643
sage: acos(SR(2.1)) # needs sage.symbolic
644644
1.37285914424258*I
645+
646+
sage: arcsin(sqrt(2)/2)
647+
1/4*pi
645648
"""
646649
GinacFunction.__init__(self, 'arccos', latex_name=r"\arccos",
647650
conversions=dict(maxima='acos', sympy='acos',

src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1854,9 +1854,9 @@ def angle(self, other): # UHP
18541854
sage: g = HyperbolicPlane().UHP().get_geodesic(1, 1 + I)
18551855
sage: h = HyperbolicPlane().UHP().get_geodesic(-sqrt(2), sqrt(2))
18561856
sage: g.angle(h)
1857-
arccos(1/2*sqrt(2))
1857+
1/4*pi
18581858
sage: h.angle(g)
1859-
arccos(1/2*sqrt(2))
1859+
1/4*pi
18601860
18611861
Angle is unoriented, as opposed to oriented. ::
18621862

src/sage/symbolic/ginac/inifcns_trig.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,13 @@ static ex acos_eval(const ex & x)
12291229
return UnsignedInfinity;
12301230
throw (std::runtime_error("arccos_eval(): arccos(infinity) encountered"));
12311231
}
1232+
1233+
if (x.is_equal(mul(pow(_ex2, _ex1_2), _ex1_2)))
1234+
return mul(Pi, _ex1_4);
1235+
1236+
if (x.is_equal(mul(pow(_ex3, _ex1_2), _ex1_2)))
1237+
return numeric(1,6)*Pi;
1238+
12321239
return acos(x).hold();
12331240
}
12341241

src/sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
Sage example in ./premierspas.tex, line 967::
6666
6767
sage: arccos(sin(pi/3))
68-
arccos(1/2*sqrt(3))
68+
1/6*pi
6969
sage: sqrt(2)
7070
sqrt(2)
7171
sage: exp(I*pi/7)

0 commit comments

Comments
 (0)