]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-150534: Add C23 half-turn trigonometric *pi functions (GH-150555)
authorJeff Epler <jepler@unpythonic.net>
Sat, 6 Jun 2026 10:19:45 +0000 (03:19 -0700)
committerGitHub <noreply@github.com>
Sat, 6 Jun 2026 10:19:45 +0000 (10:19 +0000)
Add the the following functions to the math module:
acospi, asinpi, atanpi, atan2pi, cospi, sinpi, tanpi.

Doc/library/math.rst
Doc/whatsnew/3.16.rst
Lib/test/mathdata/math_testcases.txt
Lib/test/test_math.py
Misc/NEWS.d/next/Library/2026-05-27-15-51-29.gh-issue-150534.3Nan6S.rst [new file with mode: 0644]
Modules/mathmodule.c
configure
configure.ac
pyconfig.h.in

index 41a9a0ab55d8fab8351fd4489a25d7d1ca22a892..efe411e5a43f27d01ba655056a003f1084d8fd44 100644 (file)
@@ -83,13 +83,20 @@ noted otherwise, all return values are floats.
 
 **Trigonometric functions**
 --------------------------------------------------------------------------------------------------
-:func:`acos(x) <acos>`                                Arc cosine of *x*
-:func:`asin(x) <asin>`                                Arc sine of *x*
-:func:`atan(x) <atan>`                                Arc tangent of *x*
-:func:`atan2(y, x) <atan2>`                           ``atan(y / x)``
-:func:`cos(x) <cos>`                                  Cosine of *x*
-:func:`sin(x) <sin>`                                  Sine of *x*
-:func:`tan(x) <tan>`                                  Tangent of *x*
+:func:`acos(x) <acos>`                                Arc cosine of *x*, in radians
+:func:`acospi(x) <acospi>`                            Arc cosine of *x*, in half-turns
+:func:`asin(x) <asin>`                                Arc sine of *x*, in radians
+:func:`asinpi(x) <asinpi>`                            Arc sine of *x*, in half-turns
+:func:`atan(x) <atan>`                                Arc tangent of *x*, in radians
+:func:`atanpi(x) <atanpi>`                            Arc tangent of *x*, in half-turns
+:func:`atan2(y, x) <atan2>`                           ``atan(y / x)``, in radians
+:func:`atan2pi(y, x) <atan2pi>`                       ``atan(y / x)``, in half-turns
+:func:`cos(x) <cos>`                                  Cosine of *x* radians
+:func:`cospi(x) <cospi>`                              Cosine of *x⋅π* radians
+:func:`sin(x) <sin>`                                  Sine of *x* radians
+:func:`sinpi(x) <sinpi>`                              Sine of *x⋅π* radians
+:func:`tan(x) <tan>`                                  Tangent of *x* radians
+:func:`tanpi(x) <tanpi>`                              Tangent of *x⋅π* radians
 
 **Hyperbolic functions**
 --------------------------------------------------------------------------------------------------
@@ -599,18 +606,42 @@ Trigonometric functions
    ``pi``.
 
 
+.. function:: acospi(x)
+
+   Return the arc cosine of *x*, in half-turns. The result is between ``0`` and
+   ``1``.
+
+   .. versionadded:: next
+
+
 .. function:: asin(x)
 
    Return the arc sine of *x*, in radians. The result is between ``-pi/2`` and
    ``pi/2``.
 
 
+.. function:: asinpi(x)
+
+   Return the arc sine of *x*, in half-turns. The result is between ``-0.5`` and
+   ``0.5``.
+
+   .. versionadded:: next
+
+
 .. function:: atan(x)
 
    Return the arc tangent of *x*, in radians. The result is between ``-pi/2`` and
    ``pi/2``.
 
 
+.. function:: atanpi(x)
+
+   Return the arc tangent of *x*, in half-turns. The result is between ``-0.5`` and
+   ``0.5``.
+
+   .. versionadded:: next
+
+
 .. function:: atan2(y, x)
 
    Return ``atan(y / x)``, in radians. The result is between ``-pi`` and ``pi``.
@@ -621,21 +652,54 @@ Trigonometric functions
    -1)`` is ``-3*pi/4``.
 
 
+.. function:: atan2pi(y, x)
+
+   Return ``atanpi(y / x)``, in half-turns. The result is between ``-1`` and ``1``.
+   The vector in the plane from the origin to point ``(x, y)`` makes this angle
+   with the positive X axis. The point of :func:`atan2pi` is that the signs of both
+   inputs are known to it, so it can compute the correct quadrant for the angle.
+   For example, ``atanpi(1)`` and ``atan2pi(1, 1)`` are both ``0.25``, but
+   ``atan2pi(-1, -1)`` is ``-0.75``.
+
+   .. versionadded:: next
+
+
 .. function:: cos(x)
 
    Return the cosine of *x* radians.
 
 
+.. function:: cospi(x)
+
+   Return the cosine of *x* half-turns (*x⋅π* radians).
+
+   .. versionadded:: next
+
+
 .. function:: sin(x)
 
    Return the sine of *x* radians.
 
 
+.. function:: sinpi(x)
+
+   Return the sine of *x* half-turns (*x⋅π* radians).
+
+   .. versionadded:: next
+
+
 .. function:: tan(x)
 
    Return the tangent of *x* radians.
 
 
+.. function:: tanpi(x)
+
+   Return the tangent of *x* half-turns (*x⋅π* radians).
+
+   .. versionadded:: next
+
+
 Hyperbolic functions
 --------------------
 
index 5a7da26bb5b95a6ce00af12bc9c4ab76ee63d478..6c35124ba7b486507aceb6c29aea2c3fb3299c49 100644 (file)
@@ -113,6 +113,17 @@ logging
   before the rotation interval expires.
   (Contributed by Iván Márton and Serhiy Storchaka in :gh:`84649`.)
 
+math
+----
+
+* Added trigonometric functions that work in units of half turns, rather than
+  radians. The new functions :func:`math.acospi`, :func:`math.asinpi`,
+  :func:`math.atanpi`, and :func:`math.atan2pi` return half-turn angles. The
+  new functions :func:`math.cospi`, :func:`math.sinpi`, and :func:`math.tanpi`
+  take half-turn angle arguments. These functions are recommended by IEEE
+  754-2019 and standardized in C23.
+  (Contributed by Jeff Epler in :gh:`150534`.)
+
 os
 --
 
index 958518824376f8258b0716ed9a400190f927d3cb..4a38a3666bab208a5c7fc93c11aa52ea31cdb223 100644 (file)
@@ -631,3 +631,1619 @@ log20646 log2 2.535995592365391e+208 -> 692.30359597460460
 log20647 log2 6.2011236566089916e+233 -> 776.64177576730913
 log20648 log2 2.1843274820677632e+253 -> 841.57499717289647
 log20649 log2 8.7493931063474791e+297 -> 989.74182713073981
+
+------------
+-- acospi --
+------------
+
+acospi10000 acospi 0.0 -> 0.5
+acospi10001 acospi -0.0 -> 0.5
+acospi10002 acospi 1.0 -> 0.0
+acospi10003 acospi -1.0 -> 1.0
+acospi10004 acospi 0.5 -> 0.3333333333333333
+acospi10005 acospi -0.5 -> 0.6666666666666666
+acospi10006 acospi 0.75 -> 0.23005345616261588
+acospi10007 acospi 2.0000001329864406e-17 -> 0.5
+acospi10008 acospi 1.999999967550318e-17 -> 0.5
+acospi10009 acospi 2e-17 -> 0.5
+acospi10010 acospi 1.9999999999999998e-17 -> 0.5
+acospi10011 acospi 0.0625 -> 0.48009265723071126
+acospi10012 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10013 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10014 acospi 1.0 -> 0.0
+acospi10015 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10016 acospi 0.9999999998835847 -> 4.857023409833964e-06
+acospi10017 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10018 acospi -1.0 -> 1.0
+acospi10019 acospi -0.9999999998835847 -> 0.9999951429765902
+acospi10020 acospi 1.0 -> 0.0
+acospi10021 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10022 acospi 0.9999999999999964 -> 2.6831517105016303e-08
+acospi10023 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10024 acospi -1.0 -> 1.0
+acospi10025 acospi -0.9999999999999964 -> 0.9999999731684829
+acospi10026 acospi 1.0 -> 0.0
+acospi10027 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10028 acospi 0.9999999999999999 -> 4.743186923619966e-09
+acospi10029 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10030 acospi -1.0 -> 1.0
+acospi10031 acospi -0.9999999999999999 -> 0.999999995256813
+acospi10032 acospi 1.0 -> 0.0
+acospi10033 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10034 acospi 0.9999999999999999 -> 4.743186923619966e-09
+acospi10035 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10036 acospi -1.0 -> 1.0
+acospi10037 acospi -0.9999999999999999 -> 0.999999995256813
+acospi10038 acospi 1.0 -> 0.0
+acospi10039 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10040 acospi 0.9999999999999999 -> 4.743186923619966e-09
+acospi10041 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10042 acospi -1.0 -> 1.0
+acospi10043 acospi -0.9999999999999999 -> 0.999999995256813
+acospi10044 acospi 1.0 -> 0.0
+acospi10045 acospi 0.9999999403953552 -> 0.00010990189460803536
+acospi10046 acospi 0.9999999999999999 -> 4.743186923619966e-09
+acospi10047 acospi -0.9999999403953552 -> 0.999890098105392
+acospi10048 acospi -1.0 -> 1.0
+acospi10049 acospi -0.9999999999999999 -> 0.999999995256813
+acospi10050 acospi 0.03125 -> 0.4900511963370614
+acospi10051 acospi 0.0009765625 -> 0.49968915045236545
+acospi10052 acospi 3.0517578125e-05 -> 0.4999902859531789
+acospi10053 acospi 9.5367431640625e-07 -> 0.49999969643603687
+acospi10054 acospi 2.9802322387695312e-08 -> 0.49999999051362615
+acospi10055 acospi 9.313225746154785e-10 -> 0.4999999997035508
+acospi10056 acospi 2.9103830456733704e-11 -> 0.49999999999073597
+acospi10057 acospi 9.094947017729282e-13 -> 0.4999999999997105
+acospi10058 acospi 2.842170943040401e-14 -> 0.49999999999999095
+acospi10059 acospi 8.881784197001252e-16 -> 0.4999999999999997
+acospi10060 acospi 2.7755575615628914e-17 -> 0.5
+acospi10061 acospi 8.673617379884035e-19 -> 0.5
+acospi10062 acospi 2.710505431213761e-20 -> 0.5
+acospi10063 acospi 8.470329472543003e-22 -> 0.5
+acospi10064 acospi 2.6469779601696886e-23 -> 0.5
+acospi10065 acospi 8.271806125530277e-25 -> 0.5
+acospi10066 acospi 2.5849394142282115e-26 -> 0.5
+acospi10067 acospi 8.077935669463161e-28 -> 0.5
+acospi10068 acospi 2.524354896707238e-29 -> 0.5
+acospi10069 acospi 7.888609052210118e-31 -> 0.5
+acospi10070 acospi 2.465190328815662e-32 -> 0.5
+acospi10071 acospi 7.703719777548943e-34 -> 0.5
+acospi10072 acospi 2.407412430484045e-35 -> 0.5
+acospi10073 acospi 7.52316384526264e-37 -> 0.5
+acospi10074 acospi -0.03125 -> 0.5099488036629386
+acospi10075 acospi -2.9802322387695312e-08 -> 0.5000000094863738
+acospi10076 acospi -2.842170943040401e-14 -> 0.500000000000009
+acospi10077 acospi -2.710505431213761e-20 -> 0.5
+acospi10078 acospi -2.5849394142282115e-26 -> 0.5
+acospi10079 acospi -2.465190328815662e-32 -> 0.5
+acospi10080 acospi -2.350988701644575e-38 -> 0.5
+acospi10081 acospi -0.1251312643289566 -> 0.5399352010629168
+acospi10082 acospi 0.9386433362960815 -> 0.1120835750337698
+acospi10083 acospi 0.3664908707141876 -> 0.3805590984950769
+acospi10084 acospi 0.36649084091186523 -> 0.38055910869085624
+acospi10085 acospi 0.366490841000206 -> 0.38055910866063364
+acospi10086 acospi -0.13816863298416138 -> 0.5441215931223088
+acospi10087 acospi -0.13816864788532257 -> 0.5441215979114296
+acospi10088 acospi -0.13816864007172486 -> 0.5441215954001982
+acospi10089 acospi 0.9126854538917542 -> 0.1340047775091756
+acospi10090 acospi 0.9126853942871094 -> 0.13400482393558352
+acospi10091 acospi 0.912685444573738 -> 0.13400478476703412
+acospi10092 acospi 0.9126854445737379 -> 0.1340047847670342
+acospi10093 acospi 0.880692720413208 -> 0.1570775606195134
+acospi10094 acospi 0.8806926608085632 -> 0.15707760067276577
+acospi10095 acospi 0.8806926814412734 -> 0.15707758680795558
+acospi10096 acospi 0.8806926814412733 -> 0.15707758680795567
+acospi10097 acospi 0.2435227781534195 -> 0.4216969371828132
+acospi10098 acospi 0.2435227632522583 -> 0.42169694207322506
+acospi10099 acospi 0.24352277005396675 -> 0.42169693984097245
+acospi10100 acospi 0.1279129981994629 -> 0.45917217189807447
+acospi10101 acospi -0.11572346091270447 -> 0.5369186384114879
+acospi10102 acospi 0.9999996423721313 -> 0.0002692035702405639
+acospi10103 acospi 0.9999995827674866 -> 0.000290773090413406
+acospi10104 acospi 0.9999996241289419 -> 0.0002759844303031754
+acospi10105 acospi 0.9995118975639343 -> 0.009945766966749
+acospi10106 acospi 0.9995118379592896 -> 0.009946374261451639
+acospi10107 acospi 0.9995118644629029 -> 0.009946104228281858
+acospi10108 acospi 0.9995118644629027 -> 0.009946104228282989
+acospi10109 acospi 1.1754943508222875e-38 -> 0.5
+acospi10110 acospi 2.2250738585072014e-308 -> 0.5
+acospi10111 acospi 2.004168360008973e-292 -> 0.5
+acospi10112 acospi -1.1754943508222875e-38 -> 0.5
+acospi10113 acospi -2.2250738585072014e-308 -> 0.5
+acospi10114 acospi -2.004168360008973e-292 -> 0.5
+acospi10115 acospi 1.401298464324817e-45 -> 0.5
+acospi10116 acospi 5e-324 -> 0.5
+acospi10117 acospi -1.401298464324817e-45 -> 0.5
+acospi10118 acospi -5e-324 -> 0.5
+acospi10119 acospi -0.5356916189193726 -> 0.6799490414927629
+acospi10120 acospi 0.9258930683135986 -> 0.12331439084862783
+acospi10121 acospi 0.9258930087089539 -> 0.12331444106954574
+acospi10122 acospi 0.9258930140454763 -> 0.12331443657316782
+acospi10123 acospi 0.9997028112411499 -> 0.007760542300314392
+acospi10124 acospi 0.9997027516365051 -> 0.007761320533135704
+acospi10125 acospi 0.9997027756274229 -> 0.00776100730317654
+acospi10126 acospi 0.9997027756274228 -> 0.007761007303177989
+acospi10127 acospi 0.7071993947029114 -> 0.24995830653935586
+acospi10128 acospi 0.7071993350982666 -> 0.249958333374387
+acospi10129 acospi 0.7071993911300235 -> 0.24995830814793119
+acospi10130 acospi 0.7071993911300234 -> 0.24995830814793124
+
+acospi20001 acospi inf -> nan invalid
+acospi20002 acospi -inf -> nan invalid
+acospi20003 acospi nan -> nan
+
+------------
+-- asinpi --
+------------
+
+asinpi10000 asinpi 0.0 -> 0.0
+asinpi10001 asinpi -0.0 -> -0.0
+asinpi10002 asinpi 0.5 -> 0.16666666666666666
+asinpi10003 asinpi -0.5 -> -0.16666666666666666
+asinpi10004 asinpi 1.0 -> 0.5
+asinpi10005 asinpi -1.0 -> -0.5
+asinpi10006 asinpi 0.75 -> 0.2699465438373841
+asinpi10007 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10008 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10009 asinpi 1.0 -> 0.5
+asinpi10010 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10011 asinpi 0.9999999998835847 -> 0.49999514297659015
+asinpi10012 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10013 asinpi -1.0 -> -0.5
+asinpi10014 asinpi -0.9999999998835847 -> -0.49999514297659015
+asinpi10015 asinpi 1.0 -> 0.5
+asinpi10016 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10017 asinpi 0.9999999999999964 -> 0.4999999731684829
+asinpi10018 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10019 asinpi -1.0 -> -0.5
+asinpi10020 asinpi -0.9999999999999964 -> -0.4999999731684829
+asinpi10021 asinpi 1.0 -> 0.5
+asinpi10022 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10023 asinpi 0.9999999999999999 -> 0.4999999952568131
+asinpi10024 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10025 asinpi -1.0 -> -0.5
+asinpi10026 asinpi -0.9999999999999999 -> -0.4999999952568131
+asinpi10027 asinpi 1.0 -> 0.5
+asinpi10028 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10029 asinpi 0.9999999999999999 -> 0.4999999952568131
+asinpi10030 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10031 asinpi -1.0 -> -0.5
+asinpi10032 asinpi -0.9999999999999999 -> -0.4999999952568131
+asinpi10033 asinpi 1.0 -> 0.5
+asinpi10034 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10035 asinpi 0.9999999999999999 -> 0.4999999952568131
+asinpi10036 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10037 asinpi -1.0 -> -0.5
+asinpi10038 asinpi -0.9999999999999999 -> -0.4999999952568131
+asinpi10039 asinpi 1.0 -> 0.5
+asinpi10040 asinpi 0.9999999403953552 -> 0.499890098105392
+asinpi10041 asinpi 0.9999999999999999 -> 0.4999999952568131
+asinpi10042 asinpi -0.9999999403953552 -> -0.499890098105392
+asinpi10043 asinpi -1.0 -> -0.5
+asinpi10044 asinpi -0.9999999999999999 -> -0.4999999952568131
+asinpi10045 asinpi 0.03125 -> 0.009948803662938608
+asinpi10046 asinpi 0.0009765625 -> 0.0003108495476345764
+asinpi10047 asinpi 3.0517578125e-05 -> 9.714046821081509e-06
+asinpi10048 asinpi 9.5367431640625e-07 -> 3.0356396311172383e-07
+asinpi10049 asinpi 2.9802322387695312e-08 -> 9.486373847239932e-09
+asinpi10050 asinpi 9.313225746154785e-10 -> 2.964491827262479e-10
+asinpi10051 asinpi 2.9103830456733704e-11 -> 9.264036960195246e-12
+asinpi10052 asinpi 9.094947017729282e-13 -> 2.8950115500610145e-13
+asinpi10053 asinpi 2.842170943040401e-14 -> 9.04691109394067e-15
+asinpi10054 asinpi 8.881784197001252e-16 -> 2.8271597168564594e-16
+asinpi10055 asinpi 2.7755575615628914e-17 -> 8.834874115176436e-18
+asinpi10056 asinpi 8.673617379884035e-19 -> 2.760898160992636e-19
+asinpi10057 asinpi 7.888609052210118e-31 -> 2.5110222495574236e-31
+asinpi10058 asinpi 1.401298464324817e-45 -> 4.460471546887532e-46
+asinpi10059 asinpi 0.0 -> 0.0
+asinpi10060 asinpi 2.409919865102884e-181 -> 7.671013179729553e-182
+asinpi10061 asinpi 1.401298464324817e-45 -> 4.460471546887532e-46
+asinpi10062 asinpi 0.0 -> 0.0
+asinpi10063 asinpi 5e-324 -> 0.0
+asinpi10064 asinpi -0.13099800050258636 -> -0.04181814856647883
+asinpi10065 asinpi -0.21591897308826447 -> -0.06927470561424247
+asinpi10066 asinpi -0.1944168210029602 -> -0.06228143288596484
+asinpi10067 asinpi -0.1944168359041214 -> -0.062281437721417
+asinpi10068 asinpi -0.19441682493723628 -> -0.06228143416264412
+asinpi10069 asinpi 0.9866708517074585 -> 0.4479704696000938
+asinpi10070 asinpi 0.9866707921028137 -> 0.4479703530089429
+asinpi10071 asinpi 0.9866708504122479 -> 0.4479704670665621
+asinpi10072 asinpi 0.9866708504122478 -> 0.44797046706656185
+asinpi10073 asinpi -0.6866101622581482 -> -0.24090205124758424
+asinpi10074 asinpi 0.8438399434089661 -> 0.3197103200989401
+asinpi10075 asinpi -0.13135038316249847 -> -0.04193129309542388
+asinpi10076 asinpi -0.5068531036376953 -> -0.16919134974732694
+asinpi10077 asinpi -0.5068531632423401 -> -0.1691913717566472
+asinpi10078 asinpi -0.5068531437412152 -> -0.16919136455575687
+asinpi10079 asinpi -0.7008922100067139 -> -0.2472146113103207
+asinpi10080 asinpi 0.12256252765655518 -> 0.03911120286288364
+asinpi10081 asinpi 0.12256252020597458 -> 0.03911120047327442
+asinpi10082 asinpi 0.12256252763528681 -> 0.03911120285606228
+asinpi10083 asinpi 1.1754943508222875e-38 -> 3.7417147301993126e-39
+asinpi10084 asinpi 2.2250738585072014e-308 -> 7.082630066519554e-309
+asinpi10085 asinpi 2.004168360008973e-292 -> 6.379466025676106e-293
+asinpi10086 asinpi -1.1754943508222875e-38 -> -3.7417147301993126e-39
+asinpi10087 asinpi -2.2250738585072014e-308 -> -7.082630066519554e-309
+asinpi10088 asinpi -2.004168360008973e-292 -> -6.379466025676106e-293
+asinpi10089 asinpi 1.401298464324817e-45 -> 4.460471546887532e-46
+asinpi10090 asinpi 5e-324 -> 0.0
+asinpi10091 asinpi -1.401298464324817e-45 -> -4.460471546887532e-46
+asinpi10092 asinpi -5e-324 -> -0.0
+asinpi10093 asinpi 0.972168505191803 -> 0.4247258559057922
+asinpi10094 asinpi -0.19141583144664764 -> -0.06130790022106249
+asinpi10095 asinpi -0.19141584634780884 -> -0.06130790505360787
+asinpi10096 asinpi -0.19141583181687138 -> -0.06130790034112851
+asinpi10097 asinpi 0.505088746547699 -> 0.16854024296386302
+asinpi10098 asinpi 0.5050886869430542 -> 0.16854022098093674
+asinpi10099 asinpi 0.5050886987499023 -> 0.1685402253354475
+asinpi10100 asinpi 0.5050886987499021 -> 0.16854022533544744
+asinpi10101 asinpi -0.6554324626922607 -> -0.2275136094679927
+asinpi10102 asinpi -0.6554325222969055 -> -0.2275136345890164
+asinpi10103 asinpi -0.6554324978014275 -> -0.22751362426513144
+asinpi10104 asinpi -0.6554324978014276 -> -0.2275136242651315
+
+asinpi20001 asinpi inf -> nan invalid
+asinpi20002 asinpi -inf -> nan invalid
+asinpi20003 asinpi nan -> nan
+
+------------
+-- atanpi --
+------------
+
+atanpi10000 atanpi 0.0 -> 0.0
+atanpi10001 atanpi -0.0 -> -0.0
+atanpi10002 atanpi 3.4028234663852886e+38 -> 0.5
+atanpi10003 atanpi 1.7976931348623157e+308 -> 0.5
+atanpi10004 atanpi -3.4028234663852886e+38 -> -0.5
+atanpi10005 atanpi -1.7976931348623157e+308 -> -0.5
+atanpi10006 atanpi 1.0 -> 0.25
+atanpi10007 atanpi -1.0 -> -0.25
+atanpi10008 atanpi 0.75 -> 0.20483276469913345
+atanpi10009 atanpi 0.03125 -> 0.009943947823589275
+atanpi10010 atanpi 0.0009765625 -> 0.0003108493994100204
+atanpi10011 atanpi 3.0517578125e-05 -> 9.714046816558053e-06
+atanpi10012 atanpi 9.5367431640625e-07 -> 3.0356396311158577e-07
+atanpi10013 atanpi 2.9802322387695312e-08 -> 9.486373847239929e-09
+atanpi10014 atanpi 9.313225746154785e-10 -> 2.964491827262479e-10
+atanpi10015 atanpi 2.9103830456733704e-11 -> 9.264036960195246e-12
+atanpi10016 atanpi 9.094947017729282e-13 -> 2.8950115500610145e-13
+atanpi10017 atanpi 2.842170943040401e-14 -> 9.04691109394067e-15
+atanpi10018 atanpi 8.881784197001252e-16 -> 2.8271597168564594e-16
+atanpi10019 atanpi 2.7755575615628914e-17 -> 8.834874115176436e-18
+atanpi10020 atanpi 8.673617379884035e-19 -> 2.760898160992636e-19
+atanpi10021 atanpi 2.5 -> 0.3788810584091566
+atanpi10022 atanpi 10.0 -> 0.4682744825694464
+atanpi10023 atanpi 1000000.0 -> 0.49999968169011383
+atanpi10024 atanpi 2147483648.0 -> 0.4999999998517754
+atanpi10025 atanpi 7.888609052210118e-31 -> 2.5110222495574236e-31
+atanpi10026 atanpi 1.401298464324817e-45 -> 4.460471546887532e-46
+atanpi10027 atanpi 0.0 -> 0.0
+atanpi10028 atanpi 2.409919865102884e-181 -> 7.671013179729553e-182
+atanpi10029 atanpi 1.401298464324817e-45 -> 4.460471546887532e-46
+atanpi10030 atanpi 0.0 -> 0.0
+atanpi10031 atanpi 5e-324 -> 0.0
+atanpi10032 atanpi -0.23051215708255768 -> -0.07211461946620386
+atanpi10033 atanpi -0.20305541157722473 -> -0.06376756760558985
+atanpi10034 atanpi -2.1964359283447266 -> -0.36400572992968316
+atanpi10035 atanpi -1.2119029760360718 -> -0.2804016904047878
+atanpi10036 atanpi -1.6769415140151978 -> -0.32884096476652747
+atanpi10037 atanpi -3.9201369285583496 -> -0.4204968782420327
+atanpi10038 atanpi 3.327171802520752 -> 0.40706420561165213
+atanpi10039 atanpi -1.3468046188354492 -> -0.2967010012978093
+atanpi10040 atanpi 0.692195475101471 -> 0.1927267050671652
+atanpi10041 atanpi 1.1754943508222875e-38 -> 3.7417147301993126e-39
+atanpi10042 atanpi 2.2250738585072014e-308 -> 7.082630066519554e-309
+atanpi10043 atanpi 2.004168360008973e-292 -> 6.379466025676106e-293
+atanpi10044 atanpi -1.1754943508222875e-38 -> -3.7417147301993126e-39
+atanpi10045 atanpi -2.2250738585072014e-308 -> -7.082630066519554e-309
+atanpi10046 atanpi -2.004168360008973e-292 -> -6.379466025676106e-293
+atanpi10047 atanpi 1.401298464324817e-45 -> 4.460471546887532e-46
+atanpi10048 atanpi 5e-324 -> 0.0
+atanpi10049 atanpi -1.401298464324817e-45 -> -4.460471546887532e-46
+atanpi10050 atanpi -5e-324 -> -0.0
+atanpi10051 atanpi 0.721666157245636 -> 0.19898171607590034
+atanpi10052 atanpi 0.19824542105197906 -> 0.06229575837467328
+atanpi10053 atanpi 0.19824540615081787 -> 0.06229575381085028
+atanpi10054 atanpi 0.198245408653517 -> 0.06229575457735939
+atanpi10055 atanpi 0.049094054847955704 -> 0.01561458616872582
+atanpi10056 atanpi 0.049094051122665405 -> 0.015614584985780253
+atanpi10057 atanpi 0.04909405149251647 -> 0.015614585103224438
+atanpi10058 atanpi 0.049094051492516465 -> 0.015614585103224436
+atanpi10059 atanpi 0.19859454035758972 -> 0.062402677059315244
+atanpi10060 atanpi 0.19859452545642853 -> 0.06240267249610054
+atanpi10061 atanpi 0.1985945401764544 -> 0.06240267700384578
+atanpi10062 atanpi 0.19859454017645436 -> 0.06240267700384577
+
+atanpi20001 atanpi inf -> 0.5
+atanpi20002 atanpi -inf -> -0.5
+atanpi20003 atanpi nan -> nan
+
+-------------
+-- atan2pi --
+-------------
+
+atan2pi10000 atan2pi 0.0 1.0 -> 0.0
+atan2pi10001 atan2pi -0.0 1.0 -> -0.0
+atan2pi10002 atan2pi 0.0 0.0 -> 0.0
+atan2pi10003 atan2pi -0.0 0.0 -> -0.0
+atan2pi10004 atan2pi 0.0 -1.0 -> 1.0
+atan2pi10005 atan2pi -0.0 -1.0 -> -1.0
+atan2pi10006 atan2pi 0.0 -0.0 -> 1.0
+atan2pi10007 atan2pi -0.0 -0.0 -> -1.0
+atan2pi10008 atan2pi 1.0 0.0 -> 0.5
+atan2pi10009 atan2pi 1.0 -0.0 -> 0.5
+atan2pi10010 atan2pi -1.0 0.0 -> -0.5
+atan2pi10011 atan2pi -1.0 -0.0 -> -0.5
+atan2pi10012 atan2pi 3.4028234663852886e+38 3.4028234663852886e+38 -> 0.25
+atan2pi10013 atan2pi 3.4028234663852886e+38 1.7976931348623157e+308 -> 6.025234948519683e-271
+atan2pi10014 atan2pi 1.7976931348623157e+308 3.4028234663852886e+38 -> 0.5
+atan2pi10015 atan2pi 1.7976931348623157e+308 1.7976931348623157e+308 -> 0.25
+atan2pi10016 atan2pi 3.4028234663852886e+38 -3.4028234663852886e+38 -> 0.75
+atan2pi10017 atan2pi 3.4028234663852886e+38 -1.7976931348623157e+308 -> 1.0
+atan2pi10018 atan2pi 1.7976931348623157e+308 -3.4028234663852886e+38 -> 0.5
+atan2pi10019 atan2pi 1.7976931348623157e+308 -1.7976931348623157e+308 -> 0.75
+atan2pi10020 atan2pi -3.4028234663852886e+38 3.4028234663852886e+38 -> -0.25
+atan2pi10021 atan2pi -3.4028234663852886e+38 1.7976931348623157e+308 -> -6.025234948519683e-271
+atan2pi10022 atan2pi -1.7976931348623157e+308 3.4028234663852886e+38 -> -0.5
+atan2pi10023 atan2pi -1.7976931348623157e+308 1.7976931348623157e+308 -> -0.25
+atan2pi10024 atan2pi -3.4028234663852886e+38 -3.4028234663852886e+38 -> -0.75
+atan2pi10025 atan2pi -3.4028234663852886e+38 -1.7976931348623157e+308 -> -1.0
+atan2pi10026 atan2pi -1.7976931348623157e+308 -3.4028234663852886e+38 -> -0.5
+atan2pi10027 atan2pi -1.7976931348623157e+308 -1.7976931348623157e+308 -> -0.75
+atan2pi10028 atan2pi 3.4028234663852886e+38 1.1754943508222875e-38 -> 0.5
+atan2pi10029 atan2pi 3.4028234663852886e+38 2.2250738585072014e-308 -> 0.5
+atan2pi10030 atan2pi 3.4028234663852886e+38 2.004168360008973e-292 -> 0.5
+atan2pi10031 atan2pi 1.7976931348623157e+308 1.1754943508222875e-38 -> 0.5
+atan2pi10032 atan2pi 1.7976931348623157e+308 2.2250738585072014e-308 -> 0.5
+atan2pi10033 atan2pi 1.7976931348623157e+308 2.004168360008973e-292 -> 0.5
+atan2pi10034 atan2pi -3.4028234663852886e+38 -1.1754943508222875e-38 -> -0.5
+atan2pi10035 atan2pi -3.4028234663852886e+38 -2.2250738585072014e-308 -> -0.5
+atan2pi10036 atan2pi -3.4028234663852886e+38 -2.004168360008973e-292 -> -0.5
+atan2pi10037 atan2pi -1.7976931348623157e+308 -1.1754943508222875e-38 -> -0.5
+atan2pi10038 atan2pi -1.7976931348623157e+308 -2.2250738585072014e-308 -> -0.5
+atan2pi10039 atan2pi -1.7976931348623157e+308 -2.004168360008973e-292 -> -0.5
+atan2pi10040 atan2pi -3.4028234663852886e+38 1.1754943508222875e-38 -> -0.5
+atan2pi10041 atan2pi -3.4028234663852886e+38 2.2250738585072014e-308 -> -0.5
+atan2pi10042 atan2pi -3.4028234663852886e+38 2.004168360008973e-292 -> -0.5
+atan2pi10043 atan2pi -1.7976931348623157e+308 1.1754943508222875e-38 -> -0.5
+atan2pi10044 atan2pi -1.7976931348623157e+308 2.2250738585072014e-308 -> -0.5
+atan2pi10045 atan2pi -1.7976931348623157e+308 2.004168360008973e-292 -> -0.5
+atan2pi10046 atan2pi 3.4028234663852886e+38 -1.1754943508222875e-38 -> 0.5
+atan2pi10047 atan2pi 3.4028234663852886e+38 -2.2250738585072014e-308 -> 0.5
+atan2pi10048 atan2pi 3.4028234663852886e+38 -2.004168360008973e-292 -> 0.5
+atan2pi10049 atan2pi 1.7976931348623157e+308 -1.1754943508222875e-38 -> 0.5
+atan2pi10050 atan2pi 1.7976931348623157e+308 -2.2250738585072014e-308 -> 0.5
+atan2pi10051 atan2pi 1.7976931348623157e+308 -2.004168360008973e-292 -> 0.5
+atan2pi10052 atan2pi 3.4028234663852886e+38 1.401298464324817e-45 -> 0.5
+atan2pi10053 atan2pi 3.4028234663852886e+38 5e-324 -> 0.5
+atan2pi10054 atan2pi 1.7976931348623157e+308 1.401298464324817e-45 -> 0.5
+atan2pi10055 atan2pi 1.7976931348623157e+308 5e-324 -> 0.5
+atan2pi10056 atan2pi -3.4028234663852886e+38 -1.401298464324817e-45 -> -0.5
+atan2pi10057 atan2pi -3.4028234663852886e+38 -5e-324 -> -0.5
+atan2pi10058 atan2pi -1.7976931348623157e+308 -1.401298464324817e-45 -> -0.5
+atan2pi10059 atan2pi -1.7976931348623157e+308 -5e-324 -> -0.5
+atan2pi10060 atan2pi -3.4028234663852886e+38 1.401298464324817e-45 -> -0.5
+atan2pi10061 atan2pi -3.4028234663852886e+38 5e-324 -> -0.5
+atan2pi10062 atan2pi -1.7976931348623157e+308 1.401298464324817e-45 -> -0.5
+atan2pi10063 atan2pi -1.7976931348623157e+308 5e-324 -> -0.5
+atan2pi10064 atan2pi 3.4028234663852886e+38 -1.401298464324817e-45 -> 0.5
+atan2pi10065 atan2pi 3.4028234663852886e+38 -5e-324 -> 0.5
+atan2pi10066 atan2pi 1.7976931348623157e+308 -1.401298464324817e-45 -> 0.5
+atan2pi10067 atan2pi 1.7976931348623157e+308 -5e-324 -> 0.5
+atan2pi10068 atan2pi 0.75 1.0 -> 0.20483276469913345
+atan2pi10069 atan2pi -0.75 1.0 -> -0.20483276469913345
+atan2pi10070 atan2pi 0.75 -1.0 -> 0.7951672353008665
+atan2pi10071 atan2pi -0.75 -1.0 -> -0.7951672353008665
+atan2pi10072 atan2pi 0.390625 0.00029000002541579306 -> 0.4997636867632018
+atan2pi10073 atan2pi 0.390625 0.0002899999963119626 -> 0.49976368678691774
+atan2pi10074 atan2pi 0.390625 0.00029 -> 0.4997636867839124
+atan2pi10075 atan2pi 0.390625 0.00028999999999999995 -> 0.4997636867839124
+atan2pi10076 atan2pi 1.390625 0.9296875 -> 0.3124206399141909
+atan2pi10077 atan2pi -0.007568269968032837 -0.0017927357694134116 -> -0.5740351606831543
+atan2pi10078 atan2pi -0.007568269968032837 -0.0017927358858287334 -> -0.574035165319273
+atan2pi10079 atan2pi -0.007568269968032837 -0.001792735857538728 -> -0.5740351641926531
+atan2pi10080 atan2pi -0.007568269968032837 -0.0017927358575387281 -> -0.5740351641926531
+atan2pi10081 atan2pi -0.007568270433694124 -0.0017927357694134116 -> -0.5740351562904277
+atan2pi10082 atan2pi -0.007568270433694124 -0.0017927358858287334 -> -0.574035160926546
+atan2pi10083 atan2pi -0.007568270433694124 -0.001792735857538728 -> -0.5740351597999263
+atan2pi10084 atan2pi -0.007568270433694124 -0.0017927358575387281 -> -0.5740351597999263
+atan2pi10085 atan2pi -0.0075682704267110625 -0.0017927357694134116 -> -0.574035156356301
+atan2pi10086 atan2pi -0.0075682704267110625 -0.0017927358858287334 -> -0.5740351609924195
+atan2pi10087 atan2pi -0.0075682704267110625 -0.001792735857538728 -> -0.5740351598657996
+atan2pi10088 atan2pi -0.0075682704267110625 -0.0017927358575387281 -> -0.5740351598657996
+atan2pi10089 atan2pi -0.007568270426711063 -0.0017927357694134116 -> -0.574035156356301
+atan2pi10090 atan2pi -0.007568270426711063 -0.0017927358858287334 -> -0.5740351609924195
+atan2pi10091 atan2pi -0.007568270426711063 -0.001792735857538728 -> -0.5740351598657996
+atan2pi10092 atan2pi -0.007568270426711063 -0.0017927358575387281 -> -0.5740351598657996
+atan2pi10093 atan2pi 1.0000001192092896 1.0000001192092896 -> 0.25
+atan2pi10094 atan2pi 1.0000001192092896 1.0 -> 0.25000001897274654
+atan2pi10095 atan2pi 1.0000001192092896 1.0000000000000002 -> 0.25000001897274654
+atan2pi10096 atan2pi 1.0 1.0000001192092896 -> 0.24999998102725343
+atan2pi10097 atan2pi 1.0 1.0 -> 0.25
+atan2pi10098 atan2pi 1.0 1.0000000000000002 -> 0.24999999999999997
+atan2pi10099 atan2pi 1.0000000000000002 1.0000001192092896 -> 0.24999998102725346
+atan2pi10100 atan2pi 1.0000000000000002 1.0 -> 0.25000000000000006
+atan2pi10101 atan2pi 1.0000000000000002 1.0000000000000002 -> 0.25
+atan2pi10102 atan2pi 0.2977333664894104 2.9490208625793457 -> 0.032028064084188616
+atan2pi10103 atan2pi -1.346861771417407e-11 1.9269377760089412e-10 -> -0.022212615773618685
+atan2pi10104 atan2pi 0.3338441550731659 2.132420539855957 -> 0.04943220711796703
+atan2pi10105 atan2pi -0.2600718140602112 1.9549157619476318 -> -0.04209909110779262
+atan2pi10106 atan2pi -11223297.0 -0.9756588935852051 -> -0.50000002767118
+atan2pi10107 atan2pi 0.2590596377849579 7.252630710601807 -> 0.011365007240777592
+atan2pi10108 atan2pi 3.7716573755879195e+20 3.019230078687783e+21 -> 0.03955871588967838
+atan2pi10109 atan2pi -0.41808438301086426 3.5622718334198 -> -0.03718816634303022
+atan2pi10110 atan2pi -0.0 3.4028234663852886e+38 -> -0.0
+atan2pi10111 atan2pi -1.401298464324817e-45 3.4028234663852886e+38 -> -1.3108148544731147e-84
+atan2pi10112 atan2pi -8.028930810726831e-218 3.4028234663852886e+38 -> -7.510492618222167e-257
+atan2pi10113 atan2pi 3.943100929260254 -1.3295949697494507 -> 0.6035214600176284
+atan2pi10114 atan2pi -9.648418597407726e-08 1.6104578133839705e-15 -> -0.49999999468695683
+atan2pi10115 atan2pi -1112287276433408.0 4415830896934912.0 -> -0.07854398572055855
+atan2pi10116 atan2pi 9.642213451703619e-17 9.633302400400708e-17 -> 0.2501471543249841
+atan2pi10117 atan2pi 9.642213451703619e-17 9.633301738656218e-17 -> 0.25014716525787717
+atan2pi10118 atan2pi 9.642213451703619e-17 9.633302010283342e-17 -> 0.2501471607702382
+atan2pi10119 atan2pi 9.642212789959129e-17 9.633302400400708e-17 -> 0.25014714340219485
+atan2pi10120 atan2pi 9.642212789959129e-17 9.633301738656218e-17 -> 0.25014715433508794
+atan2pi10121 atan2pi 9.642212789959129e-17 9.633302010283342e-17 -> 0.25014714984744896
+atan2pi10122 atan2pi 9.642213402663379e-17 9.633302400400708e-17 -> 0.25014715351552336
+atan2pi10123 atan2pi 9.642213402663379e-17 9.633301738656218e-17 -> 0.25014716444841645
+atan2pi10124 atan2pi 9.642213402663379e-17 9.633302010283342e-17 -> 0.25014715996077747
+atan2pi10125 atan2pi 1.401298464324817e-45 1.401298464324817e-45 -> 0.25
+atan2pi10126 atan2pi 1.401298464324817e-45 0.0 -> 0.5
+atan2pi10127 atan2pi 1.401298464324817e-45 2.6248243660802892e-105 -> 0.5
+atan2pi10128 atan2pi 0.0 1.401298464324817e-45 -> 0.0
+atan2pi10129 atan2pi 0.0 0.0 -> 0.0
+atan2pi10130 atan2pi 0.0 2.6248243660802892e-105 -> 0.0
+atan2pi10131 atan2pi 2.841564668406762e-105 1.401298464324817e-45 -> 6.454714318268012e-61
+atan2pi10132 atan2pi 2.841564668406762e-105 0.0 -> 0.5
+atan2pi10133 atan2pi 2.841564668406762e-105 2.6248243660802892e-105 -> 0.262614261697575
+atan2pi10134 atan2pi 1.401298464324817e-45 1.401298464324817e-45 -> 0.25
+atan2pi10135 atan2pi 1.401298464324817e-45 0.0 -> 0.5
+atan2pi10136 atan2pi 1.401298464324817e-45 1.6955960445645656e-177 -> 0.5
+atan2pi10137 atan2pi 0.0 1.401298464324817e-45 -> 0.0
+atan2pi10138 atan2pi 0.0 0.0 -> 0.0
+atan2pi10139 atan2pi 0.0 1.6955960445645656e-177 -> 0.0
+atan2pi10140 atan2pi 1.697410900901164e-177 1.401298464324817e-45 -> 3.855728700404359e-133
+atan2pi10141 atan2pi 1.697410900901164e-177 0.0 -> 0.5
+atan2pi10142 atan2pi 1.697410900901164e-177 1.6955960445645656e-177 -> 0.2501702580242645
+atan2pi10143 atan2pi 1.401298464324817e-45 1.401298464324817e-45 -> 0.25
+atan2pi10144 atan2pi 1.401298464324817e-45 0.0 -> 0.5
+atan2pi10145 atan2pi 1.401298464324817e-45 4.642262744535978e-191 -> 0.5
+atan2pi10146 atan2pi 0.0 1.401298464324817e-45 -> 0.0
+atan2pi10147 atan2pi 0.0 0.0 -> 0.0
+atan2pi10148 atan2pi 0.0 4.642262744535978e-191 -> 0.0
+atan2pi10149 atan2pi 4.6493548767531986e-191 1.401298464324817e-45 -> 1.0561173506747795e-146
+atan2pi10150 atan2pi 4.6493548767531986e-191 0.0 -> 0.5
+atan2pi10151 atan2pi 4.6493548767531986e-191 4.642262744535978e-191 -> 0.2502429604243814
+atan2pi10152 atan2pi 1.401298464324817e-45 1.401298464324817e-45 -> 0.25
+atan2pi10153 atan2pi 1.401298464324817e-45 0.0 -> 0.5
+atan2pi10154 atan2pi 1.401298464324817e-45 5e-324 -> 0.5
+atan2pi10155 atan2pi 0.0 1.401298464324817e-45 -> 0.0
+atan2pi10156 atan2pi 0.0 0.0 -> 0.0
+atan2pi10157 atan2pi 0.0 5e-324 -> 0.0
+atan2pi10158 atan2pi 5e-324 1.401298464324817e-45 -> 1.122287531877252e-279
+atan2pi10159 atan2pi 5e-324 0.0 -> 0.5
+atan2pi10160 atan2pi 5e-324 5e-324 -> 0.25
+atan2pi10161 atan2pi 1.1754943508222875e-38 1.1754943508222875e-38 -> 0.25
+atan2pi10162 atan2pi 1.1754943508222875e-38 2.2250738585072014e-308 -> 0.5
+atan2pi10163 atan2pi 1.1754943508222875e-38 2.004168360008973e-292 -> 0.5
+atan2pi10164 atan2pi 2.2250738585072014e-308 1.1754943508222875e-38 -> 6.025235307651693e-271
+atan2pi10165 atan2pi 2.2250738585072014e-308 2.2250738585072014e-308 -> 0.25
+atan2pi10166 atan2pi 2.2250738585072014e-308 2.004168360008973e-292 -> 3.533949646070574e-17
+atan2pi10167 atan2pi 2.004168360008973e-292 1.1754943508222875e-38 -> 5.427049497271944e-255
+atan2pi10168 atan2pi 2.004168360008973e-292 2.2250738585072014e-308 -> 0.49999999999999994
+atan2pi10169 atan2pi 2.004168360008973e-292 2.004168360008973e-292 -> 0.25
+atan2pi10170 atan2pi 1.1754943508222875e-38 -1.1754943508222875e-38 -> 0.75
+atan2pi10171 atan2pi 1.1754943508222875e-38 -2.2250738585072014e-308 -> 0.5
+atan2pi10172 atan2pi 1.1754943508222875e-38 -2.004168360008973e-292 -> 0.5
+atan2pi10173 atan2pi 2.2250738585072014e-308 -1.1754943508222875e-38 -> 1.0
+atan2pi10174 atan2pi 2.2250738585072014e-308 -2.2250738585072014e-308 -> 0.75
+atan2pi10175 atan2pi 2.2250738585072014e-308 -2.004168360008973e-292 -> 1.0
+atan2pi10176 atan2pi 2.004168360008973e-292 -1.1754943508222875e-38 -> 1.0
+atan2pi10177 atan2pi 2.004168360008973e-292 -2.2250738585072014e-308 -> 0.5
+atan2pi10178 atan2pi 2.004168360008973e-292 -2.004168360008973e-292 -> 0.75
+atan2pi10179 atan2pi -1.1754943508222875e-38 1.1754943508222875e-38 -> -0.25
+atan2pi10180 atan2pi -1.1754943508222875e-38 2.2250738585072014e-308 -> -0.5
+atan2pi10181 atan2pi -1.1754943508222875e-38 2.004168360008973e-292 -> -0.5
+atan2pi10182 atan2pi -2.2250738585072014e-308 1.1754943508222875e-38 -> -6.025235307651693e-271
+atan2pi10183 atan2pi -2.2250738585072014e-308 2.2250738585072014e-308 -> -0.25
+atan2pi10184 atan2pi -2.2250738585072014e-308 2.004168360008973e-292 -> -3.533949646070574e-17
+atan2pi10185 atan2pi -2.004168360008973e-292 1.1754943508222875e-38 -> -5.427049497271944e-255
+atan2pi10186 atan2pi -2.004168360008973e-292 2.2250738585072014e-308 -> -0.49999999999999994
+atan2pi10187 atan2pi -2.004168360008973e-292 2.004168360008973e-292 -> -0.25
+atan2pi10188 atan2pi -1.1754943508222875e-38 -1.1754943508222875e-38 -> -0.75
+atan2pi10189 atan2pi -1.1754943508222875e-38 -2.2250738585072014e-308 -> -0.5
+atan2pi10190 atan2pi -1.1754943508222875e-38 -2.004168360008973e-292 -> -0.5
+atan2pi10191 atan2pi -2.2250738585072014e-308 -1.1754943508222875e-38 -> -1.0
+atan2pi10192 atan2pi -2.2250738585072014e-308 -2.2250738585072014e-308 -> -0.75
+atan2pi10193 atan2pi -2.2250738585072014e-308 -2.004168360008973e-292 -> -1.0
+atan2pi10194 atan2pi -2.004168360008973e-292 -1.1754943508222875e-38 -> -1.0
+atan2pi10195 atan2pi -2.004168360008973e-292 -2.2250738585072014e-308 -> -0.5
+atan2pi10196 atan2pi -2.004168360008973e-292 -2.004168360008973e-292 -> -0.75
+atan2pi10197 atan2pi 1.401298464324817e-45 1.401298464324817e-45 -> 0.25
+atan2pi10198 atan2pi 1.401298464324817e-45 5e-324 -> 0.5
+atan2pi10199 atan2pi 5e-324 1.401298464324817e-45 -> 1.122287531877252e-279
+atan2pi10200 atan2pi 5e-324 5e-324 -> 0.25
+atan2pi10201 atan2pi 1.401298464324817e-45 -1.401298464324817e-45 -> 0.75
+atan2pi10202 atan2pi 1.401298464324817e-45 -5e-324 -> 0.5
+atan2pi10203 atan2pi 5e-324 -1.401298464324817e-45 -> 1.0
+atan2pi10204 atan2pi 5e-324 -5e-324 -> 0.75
+atan2pi10205 atan2pi -1.401298464324817e-45 1.401298464324817e-45 -> -0.25
+atan2pi10206 atan2pi -1.401298464324817e-45 5e-324 -> -0.5
+atan2pi10207 atan2pi -5e-324 1.401298464324817e-45 -> -1.122287531877252e-279
+atan2pi10208 atan2pi -5e-324 5e-324 -> -0.25
+atan2pi10209 atan2pi -1.401298464324817e-45 -1.401298464324817e-45 -> -0.75
+atan2pi10210 atan2pi -1.401298464324817e-45 -5e-324 -> -0.5
+atan2pi10211 atan2pi -5e-324 -1.401298464324817e-45 -> -1.0
+atan2pi10212 atan2pi -5e-324 -5e-324 -> -0.75
+atan2pi10213 atan2pi 1.1754943508222875e-38 1.401298464324817e-45 -> 0.4999999620545046
+atan2pi10214 atan2pi 1.1754943508222875e-38 5e-324 -> 0.5
+atan2pi10215 atan2pi 2.2250738585072014e-308 1.401298464324817e-45 -> 5.054333710364945e-264
+atan2pi10216 atan2pi 2.2250738585072014e-308 5e-324 -> 0.49999999999999994
+atan2pi10217 atan2pi 2.004168360008973e-292 1.401298464324817e-45 -> 4.552539082921141e-248
+atan2pi10218 atan2pi 2.004168360008973e-292 5e-324 -> 0.5
+atan2pi10219 atan2pi 1.1754943508222875e-38 -1.401298464324817e-45 -> 0.5000000379454954
+atan2pi10220 atan2pi 1.1754943508222875e-38 -5e-324 -> 0.5
+atan2pi10221 atan2pi 2.2250738585072014e-308 -1.401298464324817e-45 -> 1.0
+atan2pi10222 atan2pi 2.2250738585072014e-308 -5e-324 -> 0.5000000000000001
+atan2pi10223 atan2pi 2.004168360008973e-292 -1.401298464324817e-45 -> 1.0
+atan2pi10224 atan2pi 2.004168360008973e-292 -5e-324 -> 0.5
+atan2pi10225 atan2pi -1.1754943508222875e-38 1.401298464324817e-45 -> -0.4999999620545046
+atan2pi10226 atan2pi -1.1754943508222875e-38 5e-324 -> -0.5
+atan2pi10227 atan2pi -2.2250738585072014e-308 1.401298464324817e-45 -> -5.054333710364945e-264
+atan2pi10228 atan2pi -2.2250738585072014e-308 5e-324 -> -0.49999999999999994
+atan2pi10229 atan2pi -2.004168360008973e-292 1.401298464324817e-45 -> -4.552539082921141e-248
+atan2pi10230 atan2pi -2.004168360008973e-292 5e-324 -> -0.5
+atan2pi10231 atan2pi -1.1754943508222875e-38 -1.401298464324817e-45 -> -0.5000000379454954
+atan2pi10232 atan2pi -1.1754943508222875e-38 -5e-324 -> -0.5
+atan2pi10233 atan2pi -2.2250738585072014e-308 -1.401298464324817e-45 -> -1.0
+atan2pi10234 atan2pi -2.2250738585072014e-308 -5e-324 -> -0.5000000000000001
+atan2pi10235 atan2pi -2.004168360008973e-292 -1.401298464324817e-45 -> -1.0
+atan2pi10236 atan2pi -2.004168360008973e-292 -5e-324 -> -0.5
+atan2pi10237 atan2pi 1.401298464324817e-45 1.1754943508222875e-38 -> 3.7945495388959543e-08
+atan2pi10238 atan2pi 1.401298464324817e-45 2.2250738585072014e-308 -> 0.5
+atan2pi10239 atan2pi 1.401298464324817e-45 2.004168360008973e-292 -> 0.5
+atan2pi10240 atan2pi 5e-324 1.1754943508222875e-38 -> 1.3378709934678696e-286
+atan2pi10241 atan2pi 5e-324 2.2250738585072014e-308 -> 7.067899292141149e-17
+atan2pi10242 atan2pi 5e-324 2.004168360008973e-292 -> 7.846944529866949e-33
+atan2pi10243 atan2pi 1.401298464324817e-45 -1.1754943508222875e-38 -> 0.9999999620545046
+atan2pi10244 atan2pi 1.401298464324817e-45 -2.2250738585072014e-308 -> 0.5
+atan2pi10245 atan2pi 1.401298464324817e-45 -2.004168360008973e-292 -> 0.5
+atan2pi10246 atan2pi 5e-324 -1.1754943508222875e-38 -> 1.0
+atan2pi10247 atan2pi 5e-324 -2.2250738585072014e-308 -> 0.9999999999999999
+atan2pi10248 atan2pi 5e-324 -2.004168360008973e-292 -> 1.0
+atan2pi10249 atan2pi -1.401298464324817e-45 1.1754943508222875e-38 -> -3.7945495388959543e-08
+atan2pi10250 atan2pi -1.401298464324817e-45 2.2250738585072014e-308 -> -0.5
+atan2pi10251 atan2pi -1.401298464324817e-45 2.004168360008973e-292 -> -0.5
+atan2pi10252 atan2pi -5e-324 1.1754943508222875e-38 -> -1.3378709934678696e-286
+atan2pi10253 atan2pi -5e-324 2.2250738585072014e-308 -> -7.067899292141149e-17
+atan2pi10254 atan2pi -5e-324 2.004168360008973e-292 -> -7.846944529866949e-33
+atan2pi10255 atan2pi -1.401298464324817e-45 -1.1754943508222875e-38 -> -0.9999999620545046
+atan2pi10256 atan2pi -1.401298464324817e-45 -2.2250738585072014e-308 -> -0.5
+atan2pi10257 atan2pi -1.401298464324817e-45 -2.004168360008973e-292 -> -0.5
+atan2pi10258 atan2pi -5e-324 -1.1754943508222875e-38 -> -1.0
+atan2pi10259 atan2pi -5e-324 -2.2250738585072014e-308 -> -0.9999999999999999
+atan2pi10260 atan2pi -5e-324 -2.004168360008973e-292 -> -1.0
+atan2pi10261 atan2pi 1.0 -3.4028234663852886e+38 -> 1.0
+atan2pi10262 atan2pi 1.0 -1.7976931348623157e+308 -> 1.0
+atan2pi10263 atan2pi -1.0 -3.4028234663852886e+38 -> -1.0
+atan2pi10264 atan2pi -1.0 -1.7976931348623157e+308 -> -1.0
+atan2pi10265 atan2pi 1.1754943508222875e-38 -3.4028234663852886e+38 -> 1.0
+atan2pi10266 atan2pi 1.1754943508222875e-38 -1.7976931348623157e+308 -> 1.0
+atan2pi10267 atan2pi 2.2250738585072014e-308 -3.4028234663852886e+38 -> 1.0
+atan2pi10268 atan2pi 2.2250738585072014e-308 -1.7976931348623157e+308 -> 1.0
+atan2pi10269 atan2pi 2.004168360008973e-292 -3.4028234663852886e+38 -> 1.0
+atan2pi10270 atan2pi 2.004168360008973e-292 -1.7976931348623157e+308 -> 1.0
+atan2pi10271 atan2pi -1.1754943508222875e-38 -3.4028234663852886e+38 -> -1.0
+atan2pi10272 atan2pi -1.1754943508222875e-38 -1.7976931348623157e+308 -> -1.0
+atan2pi10273 atan2pi -2.2250738585072014e-308 -3.4028234663852886e+38 -> -1.0
+atan2pi10274 atan2pi -2.2250738585072014e-308 -1.7976931348623157e+308 -> -1.0
+atan2pi10275 atan2pi -2.004168360008973e-292 -3.4028234663852886e+38 -> -1.0
+atan2pi10276 atan2pi -2.004168360008973e-292 -1.7976931348623157e+308 -> -1.0
+atan2pi10277 atan2pi 1.401298464324817e-45 -3.4028234663852886e+38 -> 1.0
+atan2pi10278 atan2pi 1.401298464324817e-45 -1.7976931348623157e+308 -> 1.0
+atan2pi10279 atan2pi 5e-324 -3.4028234663852886e+38 -> 1.0
+atan2pi10280 atan2pi 5e-324 -1.7976931348623157e+308 -> 1.0
+atan2pi10281 atan2pi -1.401298464324817e-45 -3.4028234663852886e+38 -> -1.0
+atan2pi10282 atan2pi -1.401298464324817e-45 -1.7976931348623157e+308 -> -1.0
+atan2pi10283 atan2pi -5e-324 -3.4028234663852886e+38 -> -1.0
+atan2pi10284 atan2pi -5e-324 -1.7976931348623157e+308 -> -1.0
+atan2pi10285 atan2pi 1.0 3.4028234663852886e+38 -> 9.354287383057258e-40
+atan2pi10286 atan2pi 1.0 1.7976931348623157e+308 -> 1.770657516629887e-309
+atan2pi10287 atan2pi -1.0 3.4028234663852886e+38 -> -9.354287383057258e-40
+atan2pi10288 atan2pi -1.0 1.7976931348623157e+308 -> -1.770657516629887e-309
+atan2pi10289 atan2pi 1.1754943508222875e-38 3.4028234663852886e+38 -> 1.0995911974752006e-77
+atan2pi10290 atan2pi 1.1754943508222875e-38 1.7976931348623157e+308 -> 0.0
+atan2pi10291 atan2pi 2.2250738585072014e-308 3.4028234663852886e+38 -> 0.0
+atan2pi10292 atan2pi 2.2250738585072014e-308 1.7976931348623157e+308 -> 0.0
+atan2pi10293 atan2pi 2.004168360008973e-292 3.4028234663852886e+38 -> 0.0
+atan2pi10294 atan2pi 2.004168360008973e-292 1.7976931348623157e+308 -> 0.0
+atan2pi10295 atan2pi -1.1754943508222875e-38 3.4028234663852886e+38 -> -1.0995911974752006e-77
+atan2pi10296 atan2pi -1.1754943508222875e-38 1.7976931348623157e+308 -> -0.0
+atan2pi10297 atan2pi -2.2250738585072014e-308 3.4028234663852886e+38 -> -0.0
+atan2pi10298 atan2pi -2.2250738585072014e-308 1.7976931348623157e+308 -> -0.0
+atan2pi10299 atan2pi -2.004168360008973e-292 3.4028234663852886e+38 -> -0.0
+atan2pi10300 atan2pi -2.004168360008973e-292 1.7976931348623157e+308 -> -0.0
+atan2pi10301 atan2pi 1.401298464324817e-45 3.4028234663852886e+38 -> 1.3108148544731147e-84
+atan2pi10302 atan2pi 1.401298464324817e-45 1.7976931348623157e+308 -> 0.0
+atan2pi10303 atan2pi 5e-324 3.4028234663852886e+38 -> 0.0
+atan2pi10304 atan2pi 5e-324 1.7976931348623157e+308 -> 0.0
+atan2pi10305 atan2pi -1.401298464324817e-45 3.4028234663852886e+38 -> -1.3108148544731147e-84
+atan2pi10306 atan2pi -1.401298464324817e-45 1.7976931348623157e+308 -> -0.0
+atan2pi10307 atan2pi -5e-324 3.4028234663852886e+38 -> -0.0
+atan2pi10308 atan2pi -5e-324 1.7976931348623157e+308 -> -0.0
+atan2pi10309 atan2pi 1.1754943508222875e-38 1.0 -> 3.7417147301993126e-39
+atan2pi10310 atan2pi 2.2250738585072014e-308 1.0 -> 7.082630066519554e-309
+atan2pi10311 atan2pi 2.004168360008973e-292 1.0 -> 6.379466025676106e-293
+atan2pi10312 atan2pi -1.1754943508222875e-38 1.0 -> -3.7417147301993126e-39
+atan2pi10313 atan2pi -2.2250738585072014e-308 1.0 -> -7.082630066519554e-309
+atan2pi10314 atan2pi -2.004168360008973e-292 1.0 -> -6.379466025676106e-293
+atan2pi10315 atan2pi 1.401298464324817e-45 1.0 -> 4.460471546887532e-46
+atan2pi10316 atan2pi 5e-324 1.0 -> 0.0
+atan2pi10317 atan2pi -1.401298464324817e-45 1.0 -> -4.460471546887532e-46
+atan2pi10318 atan2pi -5e-324 1.0 -> -0.0
+atan2pi10319 atan2pi 1.1754943508222875e-38 -1.0 -> 1.0
+atan2pi10320 atan2pi 2.2250738585072014e-308 -1.0 -> 1.0
+atan2pi10321 atan2pi 2.004168360008973e-292 -1.0 -> 1.0
+atan2pi10322 atan2pi -1.1754943508222875e-38 -1.0 -> -1.0
+atan2pi10323 atan2pi -2.2250738585072014e-308 -1.0 -> -1.0
+atan2pi10324 atan2pi -2.004168360008973e-292 -1.0 -> -1.0
+atan2pi10325 atan2pi 1.401298464324817e-45 -1.0 -> 1.0
+atan2pi10326 atan2pi 5e-324 -1.0 -> 1.0
+atan2pi10327 atan2pi -1.401298464324817e-45 -1.0 -> -1.0
+atan2pi10328 atan2pi -5e-324 -1.0 -> -1.0
+atan2pi10329 atan2pi -4.3609299609670416e-05 0.05748599022626877 -> -0.0002414722000586593
+atan2pi10330 atan2pi -3.4028234663852886e+38 3.4028234663852886e+38 -> -0.25
+atan2pi10331 atan2pi -3.4028234663852886e+38 2.8061581043948965e+103 -> -3.8599120576714543e-66
+atan2pi10332 atan2pi -9.822050856552661e+114 3.4028234663852886e+38 -> -0.5
+atan2pi10333 atan2pi -9.822050856552661e+114 2.8061581043948965e+103 -> -0.4999999999990906
+atan2pi10334 atan2pi 3.4028234663852886e+38 3.4028234663852886e+38 -> 0.25
+atan2pi10335 atan2pi 3.4028234663852886e+38 1.7976931348623157e+308 -> 6.025234948519683e-271
+atan2pi10336 atan2pi 2.962077767429005e+64 3.4028234663852886e+38 -> 0.5
+atan2pi10337 atan2pi 2.962077767429005e+64 1.7976931348623157e+308 -> 5.244825263740446e-245
+atan2pi10338 atan2pi 2.9620777674290047e+64 3.4028234663852886e+38 -> 0.5
+atan2pi10339 atan2pi 2.9620777674290047e+64 1.7976931348623157e+308 -> 5.244825263740445e-245
+atan2pi10340 atan2pi -3.4028234663852886e+38 3.4028234663852886e+38 -> -0.25
+atan2pi10341 atan2pi -3.4028234663852886e+38 1.7976931348623157e+308 -> -6.025234948519683e-271
+atan2pi10342 atan2pi -1.7976931348623157e+308 3.4028234663852886e+38 -> -0.5
+atan2pi10343 atan2pi -1.7976931348623157e+308 1.7976931348623157e+308 -> -0.25
+
+atan2pi20000 atan2pi inf 0 -> 0.5
+atan2pi20001 atan2pi -inf 0 -> -0.5
+atan2pi20002 atan2pi nan 0 -> nan
+
+atan2pi20000 atan2pi inf -0 -> 0.5
+atan2pi20001 atan2pi -inf -0 -> -0.5
+atan2pi20002 atan2pi nan -0 -> nan
+
+atan2pi20003 atan2pi inf 1 -> 0.5
+atan2pi20004 atan2pi -inf 1 -> -0.5
+atan2pi20005 atan2pi nan 1 -> nan
+
+atan2pi20006 atan2pi inf -1 -> 0.5
+atan2pi20007 atan2pi -inf -1 -> -0.5
+atan2pi20008 atan2pi nan -1 -> nan
+
+atan2pi20009 atan2pi inf inf -> 0.25
+atan2pi20010 atan2pi -inf inf -> -0.25
+atan2pi20011 atan2pi nan inf -> nan
+
+atan2pi20012 atan2pi inf -inf -> .75
+atan2pi20013 atan2pi -inf -inf -> -.75
+atan2pi20014 atan2pi nan -inf -> nan
+
+atan2pi20015 atan2pi inf nan -> nan
+atan2pi20016 atan2pi -inf nan -> nan
+atan2pi20017 atan2pi nan nan -> nan
+
+atan2pi30000 atan2pi 0 inf -> 0.0
+atan2pi30001 atan2pi 0 -inf -> 1.0
+atan2pi30002 atan2pi 0 nan -> nan
+
+atan2pi30000 atan2pi -0 inf -> -0.0
+atan2pi30001 atan2pi -0 -inf -> -1.0
+atan2pi30002 atan2pi -0 nan -> nan
+
+atan2pi30003 atan2pi 1 inf -> 0.0
+atan2pi30004 atan2pi 1 -inf -> 1.0
+atan2pi30005 atan2pi 1 nan -> nan
+
+atan2pi30006 atan2pi -1 inf -> -0.0
+atan2pi30007 atan2pi -1 -inf -> -1.0
+atan2pi30008 atan2pi -1 nan -> nan
+
+-----------
+-- cospi --
+-----------
+
+cospi10000 cospi 0.0 -> 1.0
+cospi10001 cospi -0.0 -> 1.0
+cospi10002 cospi 1.1754943508222875e-38 -> 1.0
+cospi10003 cospi 2.2250738585072014e-308 -> 1.0
+cospi10004 cospi 2.004168360008973e-292 -> 1.0
+cospi10005 cospi -1.1754943508222875e-38 -> 1.0
+cospi10006 cospi -2.2250738585072014e-308 -> 1.0
+cospi10007 cospi -2.004168360008973e-292 -> 1.0
+cospi10008 cospi 1.401298464324817e-45 -> 1.0
+cospi10009 cospi 5e-324 -> 1.0
+cospi10010 cospi -1.401298464324817e-45 -> 1.0
+cospi10011 cospi -5e-324 -> 1.0
+cospi10012 cospi 3.4028234663852886e+38 -> 1.0
+cospi10013 cospi 1.7976931348623157e+308 -> 1.0
+cospi10014 cospi -3.4028234663852886e+38 -> 1.0
+cospi10015 cospi -1.7976931348623157e+308 -> 1.0
+cospi10016 cospi 1.0 -> -1.0
+cospi10017 cospi -1.0 -> -1.0
+cospi10018 cospi 2.0 -> 1.0
+cospi10019 cospi -2.0 -> 1.0
+cospi10020 cospi 3.0 -> -1.0
+cospi10021 cospi -3.0 -> -1.0
+cospi10022 cospi 0.10000000149011612 -> 0.9510565148485406
+cospi10023 cospi 0.09999999403953552 -> 0.9510565220816052
+cospi10024 cospi 0.1 -> 0.9510565162951535
+cospi10025 cospi 0.09999999999999999 -> 0.9510565162951535
+cospi10026 cospi -0.09999999403953552 -> 0.9510565220816052
+cospi10027 cospi -0.10000000149011612 -> 0.9510565148485406
+cospi10028 cospi -0.09999999999999999 -> 0.9510565162951535
+cospi10029 cospi -0.1 -> 0.9510565162951535
+cospi10030 cospi 0.20000000298023224 -> 0.8090169888717047
+cospi10031 cospi 0.19999998807907104 -> 0.8090170163879177
+cospi10032 cospi 0.2 -> 0.8090169943749475
+cospi10033 cospi 0.19999999999999998 -> 0.8090169943749475
+cospi10034 cospi -0.19999998807907104 -> 0.8090170163879177
+cospi10035 cospi -0.20000000298023224 -> 0.8090169888717047
+cospi10036 cospi -0.19999999999999998 -> 0.8090169943749475
+cospi10037 cospi -0.2 -> 0.8090169943749475
+cospi10038 cospi 0.30000001192092896 -> 0.5877852219942177
+cospi10039 cospi 0.29999998211860657 -> 0.5877852977398548
+cospi10040 cospi 0.30000000000000004 -> 0.587785252292473
+cospi10041 cospi 0.3 -> 0.5877852522924731
+cospi10042 cospi -0.29999998211860657 -> 0.5877852977398548
+cospi10043 cospi -0.30000001192092896 -> 0.5877852219942177
+cospi10044 cospi -0.3 -> 0.5877852522924731
+cospi10045 cospi -0.30000000000000004 -> 0.587785252292473
+cospi10046 cospi 0.4000000059604645 -> 0.3090169765660799
+cospi10047 cospi 0.3999999761581421 -> 0.3090170656104165
+cospi10048 cospi 0.4 -> 0.30901699437494734
+cospi10049 cospi 0.39999999999999997 -> 0.3090169943749475
+cospi10050 cospi -0.3999999761581421 -> 0.3090170656104165
+cospi10051 cospi -0.4000000059604645 -> 0.3090169765660799
+cospi10052 cospi -0.39999999999999997 -> 0.3090169943749475
+cospi10053 cospi -0.4 -> 0.30901699437494734
+cospi10054 cospi 0.5 -> 0.0
+cospi10055 cospi -0.5 -> 0.0
+cospi10056 cospi 0.6000000238418579 -> -0.3090170656104165
+cospi10057 cospi 0.5999999642372131 -> -0.30901688752174056
+cospi10058 cospi 0.6000000000000001 -> -0.3090169943749477
+cospi10059 cospi 0.6 -> -0.30901699437494734
+cospi10060 cospi -0.5999999642372131 -> -0.30901688752174056
+cospi10061 cospi -0.6000000238418579 -> -0.3090170656104165
+cospi10062 cospi -0.6 -> -0.30901699437494734
+cospi10063 cospi -0.6000000000000001 -> -0.3090169943749477
+cospi10064 cospi 0.7000000476837158 -> -0.5877853734854867
+cospi10065 cospi 0.699999988079071 -> -0.5877852219942177
+cospi10066 cospi 0.7000000000000001 -> -0.5877852522924732
+cospi10067 cospi 0.7 -> -0.587785252292473
+cospi10068 cospi -0.699999988079071 -> -0.5877852219942177
+cospi10069 cospi -0.7000000476837158 -> -0.5877853734854867
+cospi10070 cospi -0.7 -> -0.587785252292473
+cospi10071 cospi -0.7000000000000001 -> -0.5877852522924732
+cospi10072 cospi 0.800000011920929 -> -0.8090170163879177
+cospi10073 cospi 0.7999999523162842 -> -0.8090169063230551
+cospi10074 cospi 0.8 -> -0.8090169943749475
+cospi10075 cospi 0.7999999999999999 -> -0.8090169943749473
+cospi10076 cospi -0.7999999523162842 -> -0.8090169063230551
+cospi10077 cospi -0.800000011920929 -> -0.8090170163879177
+cospi10078 cospi -0.7999999999999999 -> -0.8090169943749473
+cospi10079 cospi -0.8 -> -0.8090169943749475
+cospi10080 cospi 0.9000000357627869 -> -0.9510565510138584
+cospi10081 cospi 0.8999999761581421 -> -0.9510564931493437
+cospi10082 cospi 0.9 -> -0.9510565162951536
+cospi10083 cospi 0.8999999999999999 -> -0.9510565162951535
+cospi10084 cospi -0.8999999761581421 -> -0.9510564931493437
+cospi10085 cospi -0.9000000357627869 -> -0.9510565510138584
+cospi10086 cospi -0.8999999999999999 -> -0.9510565162951535
+cospi10087 cospi -0.9 -> -0.9510565162951536
+cospi10088 cospi 1.100000023841858 -> -0.9510564931493437
+cospi10089 cospi 1.0999999046325684 -> -0.9510566088783399
+cospi10090 cospi 1.1 -> -0.9510565162951535
+cospi10091 cospi 1.0999999999999999 -> -0.9510565162951538
+cospi10092 cospi -1.0999999046325684 -> -0.9510566088783399
+cospi10093 cospi -1.100000023841858 -> -0.9510564931493437
+cospi10094 cospi -1.0999999999999999 -> -0.9510565162951538
+cospi10095 cospi -1.1 -> -0.9510565162951535
+cospi10096 cospi 1.2000000476837158 -> -0.8090169063230551
+cospi10097 cospi 1.1999999284744263 -> -0.8090171264527518
+cospi10098 cospi 1.2000000000000002 -> -0.8090169943749471
+cospi10099 cospi 1.2 -> -0.8090169943749475
+cospi10100 cospi -1.1999999284744263 -> -0.8090171264527518
+cospi10101 cospi -1.2000000476837158 -> -0.8090169063230551
+cospi10102 cospi -1.2 -> -0.8090169943749475
+cospi10103 cospi -1.2000000000000002 -> -0.8090169943749471
+cospi10104 cospi 1.3000000715255737 -> -0.587785070502928
+cospi10105 cospi 1.2999999523162842 -> -0.5877853734854867
+cospi10106 cospi 1.3 -> -0.587785252292473
+cospi10107 cospi 1.2999999999999998 -> -0.5877852522924736
+cospi10108 cospi -1.2999999523162842 -> -0.5877853734854867
+cospi10109 cospi -1.3000000715255737 -> -0.587785070502928
+cospi10110 cospi -1.2999999999999998 -> -0.5877852522924736
+cospi10111 cospi -1.3 -> -0.587785252292473
+cospi10112 cospi 1.4000000953674316 -> -0.3090167094330538
+cospi10113 cospi 1.399999976158142 -> -0.3090170656104165
+cospi10114 cospi 1.4000000000000001 -> -0.309016994374947
+cospi10115 cospi 1.4 -> -0.3090169943749477
+cospi10116 cospi -1.399999976158142 -> -0.3090170656104165
+cospi10117 cospi -1.4000000953674316 -> -0.3090167094330538
+cospi10118 cospi -1.4 -> -0.3090169943749477
+cospi10119 cospi -1.4000000000000001 -> -0.309016994374947
+cospi10120 cospi 1.5 -> 0.0
+cospi10121 cospi -1.5 -> 0.0
+cospi10122 cospi 2.5 -> 0.0
+cospi10123 cospi -2.5 -> 0.0
+cospi10124 cospi 3.5 -> 0.0
+cospi10125 cospi -3.5 -> 0.0
+cospi10126 cospi 4.5 -> 0.0
+cospi10127 cospi -4.5 -> 0.0
+cospi10128 cospi 0.24000000953674316 -> 0.728968606911995
+cospi10129 cospi 0.23999999463558197 -> 0.728968638957958
+cospi10130 cospi 0.24000000000000002 -> 0.7289686274214114
+cospi10131 cospi 0.24 -> 0.7289686274214116
+cospi10132 cospi -0.23999999463558197 -> 0.728968638957958
+cospi10133 cospi -0.24000000953674316 -> 0.728968606911995
+cospi10134 cospi -0.24 -> 0.7289686274214116
+cospi10135 cospi -0.24000000000000002 -> 0.7289686274214114
+cospi10136 cospi 0.49000000953674316 -> 0.03141072913234975
+cospi10137 cospi 0.4899999797344208 -> 0.03141082271290761
+cospi10138 cospi 0.49000000000000005 -> 0.031410759078128146
+cospi10139 cospi 0.49 -> 0.03141075907812832
+cospi10140 cospi -0.4899999797344208 -> 0.03141082271290761
+cospi10141 cospi -0.49000000953674316 -> 0.03141072913234975
+cospi10142 cospi -0.49 -> 0.03141075907812832
+cospi10143 cospi -0.49000000000000005 -> 0.031410759078128146
+cospi10144 cospi 0.5100000500679016 -> -0.031410916293465214
+cospi10145 cospi 0.5099999904632568 -> -0.03141072913234975
+cospi10146 cospi 0.51 -> -0.03141075907812832
+cospi10147 cospi 0.5099999999999999 -> -0.03141075907812797
+cospi10148 cospi -0.5099999904632568 -> -0.03141072913234975
+cospi10149 cospi -0.5100000500679016 -> -0.031410916293465214
+cospi10150 cospi -0.5099999999999999 -> -0.03141075907812797
+cospi10151 cospi -0.51 -> -0.03141075907812832
+cospi10152 cospi 0.7600000500679016 -> -0.7289687350958375
+cospi10153 cospi 0.7599999904632568 -> -0.728968606911995
+cospi10154 cospi 0.76 -> -0.7289686274214116
+cospi10155 cospi 0.7599999999999999 -> -0.7289686274214113
+cospi10156 cospi -0.7599999904632568 -> -0.728968606911995
+cospi10157 cospi -0.7600000500679016 -> -0.7289687350958375
+cospi10158 cospi -0.7599999999999999 -> -0.7289686274214113
+cospi10159 cospi -0.76 -> -0.7289686274214116
+cospi10160 cospi 1.2400000095367432 -> -0.728968606911995
+cospi10161 cospi 1.2399998903274536 -> -0.7289688632796544
+cospi10162 cospi 1.2400000000000002 -> -0.7289686274214111
+cospi10163 cospi 1.24 -> -0.7289686274214116
+cospi10164 cospi -1.2399998903274536 -> -0.7289688632796544
+cospi10165 cospi -1.2400000095367432 -> -0.728968606911995
+cospi10166 cospi -1.24 -> -0.7289686274214116
+cospi10167 cospi -1.2400000000000002 -> -0.7289686274214111
+cospi10168 cospi 1.4900000095367432 -> -0.03141072913234975
+cospi10169 cospi 1.4899998903274536 -> -0.03141110345457958
+cospi10170 cospi 1.4900000000000002 -> -0.031410759078127626
+cospi10171 cospi 1.49 -> -0.03141075907812832
+cospi10172 cospi -1.4899998903274536 -> -0.03141110345457958
+cospi10173 cospi -1.4900000095367432 -> -0.03141072913234975
+cospi10174 cospi -1.49 -> -0.03141075907812832
+cospi10175 cospi -1.4900000000000002 -> -0.031410759078127626
+cospi10176 cospi 1.5100001096725464 -> 0.03141110345457958
+cospi10177 cospi 1.5099999904632568 -> 0.03141072913234975
+cospi10178 cospi 1.51 -> 0.03141075907812832
+cospi10179 cospi 1.5099999999999998 -> 0.031410759078127626
+cospi10180 cospi -1.5099999904632568 -> 0.03141072913234975
+cospi10181 cospi -1.5100001096725464 -> 0.03141110345457958
+cospi10182 cospi -1.5099999999999998 -> 0.031410759078127626
+cospi10183 cospi -1.51 -> 0.03141075907812832
+cospi10184 cospi 1.7600001096725464 -> 0.7289688632796544
+cospi10185 cospi 1.7599999904632568 -> 0.728968606911995
+cospi10186 cospi 1.76 -> 0.7289686274214116
+cospi10187 cospi 1.7599999999999998 -> 0.7289686274214111
+cospi10188 cospi -1.7599999904632568 -> 0.728968606911995
+cospi10189 cospi -1.7600001096725464 -> 0.7289688632796544
+cospi10190 cospi -1.7599999999999998 -> 0.7289686274214111
+cospi10191 cospi -1.76 -> 0.7289686274214116
+cospi10192 cospi 100.24000549316406 -> 0.7289568138891386
+cospi10193 cospi 100.23999786376953 -> 0.7289732215142216
+cospi10194 cospi 100.24000000000001 -> 0.728968627421392
+cospi10195 cospi 100.24 -> 0.7289686274214225
+cospi10196 cospi -100.23999786376953 -> 0.7289732215142216
+cospi10197 cospi -100.24000549316406 -> 0.7289568138891386
+cospi10198 cospi -100.24 -> 0.7289686274214225
+cospi10199 cospi -100.24000000000001 -> 0.728968627421392
+cospi10200 cospi 100.49000549316406 -> 0.031393510305016
+cospi10201 cospi 100.48999786376953 -> 0.031417466931812604
+cospi10202 cospi 100.49000000000001 -> 0.03141075907809974
+cospi10203 cospi 100.49 -> 0.031410759078144355
+cospi10204 cospi -100.48999786376953 -> 0.031417466931812604
+cospi10205 cospi -100.49000549316406 -> 0.031393510305016
+cospi10206 cospi -100.49 -> 0.031410759078144355
+cospi10207 cospi -100.49000000000001 -> 0.03141075907809974
+cospi10208 cospi 100.51000213623047 -> -0.031417466931812604
+cospi10209 cospi 100.50999450683594 -> -0.031393510305016
+cospi10210 cospi 100.51 -> -0.031410759078144355
+cospi10211 cospi 100.50999999999999 -> -0.03141075907809974
+cospi10212 cospi -100.50999450683594 -> -0.031393510305016
+cospi10213 cospi -100.51000213623047 -> -0.031417466931812604
+cospi10214 cospi -100.50999999999999 -> -0.03141075907809974
+cospi10215 cospi -100.51 -> -0.031410759078144355
+cospi10216 cospi 100.76000213623047 -> -0.7289732215142216
+cospi10217 cospi 100.75999450683594 -> -0.7289568138891386
+cospi10218 cospi 100.76 -> -0.7289686274214225
+cospi10219 cospi 100.75999999999999 -> -0.728968627421392
+cospi10220 cospi -100.75999450683594 -> -0.7289568138891386
+cospi10221 cospi -100.76000213623047 -> -0.7289732215142216
+cospi10222 cospi -100.75999999999999 -> -0.728968627421392
+cospi10223 cospi -100.76 -> -0.7289686274214225
+cospi10224 cospi 1234.56005859375 -> -0.1875621285825296
+cospi10225 cospi 1234.5599365234375 -> -0.18718542559099033
+cospi10226 cospi 1234.5600000000002 -> -0.1873813145862579
+cospi10227 cospi 1234.56 -> -0.18738131458555624
+cospi10228 cospi -1234.5599365234375 -> -0.18718542559099033
+cospi10229 cospi -1234.56005859375 -> -0.1875621285825296
+cospi10230 cospi -1234.56 -> -0.18738131458555624
+cospi10231 cospi -1234.5600000000002 -> -0.1873813145862579
+cospi10232 cospi 2097151.375 -> -0.3826834323650898
+cospi10233 cospi -2097151.375 -> -0.3826834323650898
+cospi10234 cospi 2097151.625 -> 0.3826834323650898
+cospi10235 cospi -2097151.625 -> 0.3826834323650898
+cospi10236 cospi 1125899906842624.0 -> 1.0
+cospi10237 cospi 1125899839733760.0 -> 1.0
+cospi10238 cospi 1125899906842623.4 -> -0.3826834323650898
+cospi10239 cospi -1125899839733760.0 -> 1.0
+cospi10240 cospi -1125899906842624.0 -> 1.0
+cospi10241 cospi -1125899906842623.4 -> -0.3826834323650898
+cospi10242 cospi 1125899906842624.0 -> 1.0
+cospi10243 cospi 1125899839733760.0 -> 1.0
+cospi10244 cospi 1125899906842623.6 -> 0.3826834323650898
+cospi10245 cospi -1125899839733760.0 -> 1.0
+cospi10246 cospi -1125899906842624.0 -> 1.0
+cospi10247 cospi -1125899906842623.6 -> 0.3826834323650898
+cospi10248 cospi 2.305843009213694e+18 -> 1.0
+cospi10249 cospi 2.3058428717747405e+18 -> 1.0
+cospi10250 cospi 2.3058430092136937e+18 -> 1.0
+cospi10251 cospi -2.3058428717747405e+18 -> 1.0
+cospi10252 cospi -2.305843009213694e+18 -> 1.0
+cospi10253 cospi -2.3058430092136937e+18 -> 1.0
+cospi10254 cospi 2.305843009213694e+18 -> 1.0
+cospi10255 cospi 2.3058428717747405e+18 -> 1.0
+cospi10256 cospi 2.3058430092136937e+18 -> 1.0
+cospi10257 cospi -2.3058428717747405e+18 -> 1.0
+cospi10258 cospi -2.305843009213694e+18 -> 1.0
+cospi10259 cospi -2.3058430092136937e+18 -> 1.0
+cospi10260 cospi 1.298074214633707e+33 -> 1.0
+cospi10261 cospi 1.2980741372624545e+33 -> 1.0
+cospi10262 cospi 1.2980742146337068e+33 -> 1.0
+cospi10263 cospi -1.2980741372624545e+33 -> 1.0
+cospi10264 cospi -1.298074214633707e+33 -> 1.0
+cospi10265 cospi -1.2980742146337068e+33 -> 1.0
+cospi10266 cospi 1.298074214633707e+33 -> 1.0
+cospi10267 cospi 1.2980741372624545e+33 -> 1.0
+cospi10268 cospi 1.2980742146337068e+33 -> 1.0
+cospi10269 cospi -1.2980741372624545e+33 -> 1.0
+cospi10270 cospi -1.298074214633707e+33 -> 1.0
+cospi10271 cospi -1.2980742146337068e+33 -> 1.0
+cospi10272 cospi 0.419987291097641 -> 0.24872855880609973
+cospi10273 cospi -70.50994110107422 -> -0.031225813413226215
+cospi10274 cospi -70.50994873046875 -> -0.031249770165979865
+cospi10275 cospi -70.50994733870746 -> -0.03124539995406979
+cospi10276 cospi 0.4801006019115448 -> 0.06247508982524335
+cospi10277 cospi 0.4801005721092224 -> 0.06247518326910248
+cospi10278 cospi 0.48010059600345173 -> 0.062475108349807
+cospi10279 cospi 0.4801005960034517 -> 0.06247510834980717
+cospi10280 cospi -629430784.0 -> 1.0
+cospi10281 cospi -629430848.0 -> 1.0
+cospi10282 cospi -629430785.4800935 -> -0.06249742289199851
+cospi10283 cospi -629430785.4800936 -> -0.06249704911708015
+
+cospi20001 cospi inf -> nan invalid
+cospi20002 cospi -inf -> nan invalid
+cospi20003 cospi nan -> nan
+
+-----------
+-- sinpi --
+-----------
+
+sinpi10000 sinpi 0.0 -> 0.0
+sinpi10001 sinpi -0.0 -> -0.0
+sinpi10002 sinpi 1.1754943508222875e-38 -> 3.6929244168796014e-38
+sinpi10003 sinpi 2.2250738585072014e-308 -> 6.990275687580919e-308
+sinpi10004 sinpi 2.004168360008973e-292 -> 6.296280596361293e-292
+sinpi10005 sinpi -1.1754943508222875e-38 -> -3.6929244168796014e-38
+sinpi10006 sinpi -2.2250738585072014e-308 -> -6.990275687580919e-308
+sinpi10007 sinpi -2.004168360008973e-292 -> -6.296280596361293e-292
+sinpi10008 sinpi 1.401298464324817e-45 -> 4.402308961009504e-45
+sinpi10009 sinpi 5e-324 -> 1.5e-323
+sinpi10010 sinpi -1.401298464324817e-45 -> -4.402308961009504e-45
+sinpi10011 sinpi -5e-324 -> -1.5e-323
+sinpi10012 sinpi 3.4028234663852886e+38 -> 0.0
+sinpi10013 sinpi 1.7976931348623157e+308 -> 0.0
+sinpi10014 sinpi -3.4028234663852886e+38 -> -0.0
+sinpi10015 sinpi -1.7976931348623157e+308 -> -0.0
+sinpi10016 sinpi 1.0 -> 0.0
+sinpi10017 sinpi -1.0 -> -0.0
+sinpi10018 sinpi 2.0 -> 0.0
+sinpi10019 sinpi -2.0 -> -0.0
+sinpi10020 sinpi 3.0 -> 0.0
+sinpi10021 sinpi -3.0 -> -0.0
+sinpi10022 sinpi 0.10000000149011612 -> 0.30901699882716427
+sinpi10023 sinpi 0.09999999403953552 -> 0.3090169765660799
+sinpi10024 sinpi 0.1 -> 0.30901699437494745
+sinpi10025 sinpi 0.09999999999999999 -> 0.3090169943749474
+sinpi10026 sinpi -0.09999999403953552 -> -0.3090169765660799
+sinpi10027 sinpi -0.10000000149011612 -> -0.30901699882716427
+sinpi10028 sinpi -0.09999999999999999 -> -0.3090169943749474
+sinpi10029 sinpi -0.1 -> -0.30901699437494745
+sinpi10030 sinpi 0.20000000298023224 -> 0.5877852598670369
+sinpi10031 sinpi 0.19999998807907104 -> 0.5877852219942177
+sinpi10032 sinpi 0.2 -> 0.5877852522924731
+sinpi10033 sinpi 0.19999999999999998 -> 0.5877852522924731
+sinpi10034 sinpi -0.19999998807907104 -> -0.5877852219942177
+sinpi10035 sinpi -0.20000000298023224 -> -0.5877852598670369
+sinpi10036 sinpi -0.19999999999999998 -> -0.5877852522924731
+sinpi10037 sinpi -0.2 -> -0.5877852522924731
+sinpi10038 sinpi 0.30000001192092896 -> 0.8090170163879177
+sinpi10039 sinpi 0.29999998211860657 -> 0.80901696135549
+sinpi10040 sinpi 0.30000000000000004 -> 0.8090169943749475
+sinpi10041 sinpi 0.3 -> 0.8090169943749475
+sinpi10042 sinpi -0.29999998211860657 -> -0.80901696135549
+sinpi10043 sinpi -0.30000001192092896 -> -0.8090170163879177
+sinpi10044 sinpi -0.3 -> -0.8090169943749475
+sinpi10045 sinpi -0.30000000000000004 -> -0.8090169943749475
+sinpi10046 sinpi 0.4000000059604645 -> 0.9510565220816052
+sinpi10047 sinpi 0.3999999761581421 -> 0.9510564931493437
+sinpi10048 sinpi 0.4 -> 0.9510565162951536
+sinpi10049 sinpi 0.39999999999999997 -> 0.9510565162951535
+sinpi10050 sinpi -0.3999999761581421 -> -0.9510564931493437
+sinpi10051 sinpi -0.4000000059604645 -> -0.9510565220816052
+sinpi10052 sinpi -0.39999999999999997 -> -0.9510565162951535
+sinpi10053 sinpi -0.4 -> -0.9510565162951536
+sinpi10054 sinpi 0.5 -> 1.0
+sinpi10055 sinpi -0.5 -> -1.0
+sinpi10056 sinpi 0.6000000238418579 -> 0.9510564931493437
+sinpi10057 sinpi 0.5999999642372131 -> 0.9510565510138584
+sinpi10058 sinpi 0.6000000000000001 -> 0.9510565162951535
+sinpi10059 sinpi 0.6 -> 0.9510565162951536
+sinpi10060 sinpi -0.5999999642372131 -> -0.9510565510138584
+sinpi10061 sinpi -0.6000000238418579 -> -0.9510564931493437
+sinpi10062 sinpi -0.6 -> -0.9510565162951536
+sinpi10063 sinpi -0.6000000000000001 -> -0.9510565162951535
+sinpi10064 sinpi 0.7000000476837158 -> 0.8090169063230551
+sinpi10065 sinpi 0.699999988079071 -> 0.8090170163879177
+sinpi10066 sinpi 0.7000000000000001 -> 0.8090169943749473
+sinpi10067 sinpi 0.7 -> 0.8090169943749475
+sinpi10068 sinpi -0.699999988079071 -> -0.8090170163879177
+sinpi10069 sinpi -0.7000000476837158 -> -0.8090169063230551
+sinpi10070 sinpi -0.7 -> -0.8090169943749475
+sinpi10071 sinpi -0.7000000000000001 -> -0.8090169943749473
+sinpi10072 sinpi 0.800000011920929 -> 0.5877852219942177
+sinpi10073 sinpi 0.7999999523162842 -> 0.5877853734854867
+sinpi10074 sinpi 0.8 -> 0.587785252292473
+sinpi10075 sinpi 0.7999999999999999 -> 0.5877852522924732
+sinpi10076 sinpi -0.7999999523162842 -> -0.5877853734854867
+sinpi10077 sinpi -0.800000011920929 -> -0.5877852219942177
+sinpi10078 sinpi -0.7999999999999999 -> -0.5877852522924732
+sinpi10079 sinpi -0.8 -> -0.587785252292473
+sinpi10080 sinpi 0.9000000357627869 -> 0.30901688752174056
+sinpi10081 sinpi 0.8999999761581421 -> 0.3090170656104165
+sinpi10082 sinpi 0.9 -> 0.30901699437494734
+sinpi10083 sinpi 0.8999999999999999 -> 0.3090169943749477
+sinpi10084 sinpi -0.8999999761581421 -> -0.3090170656104165
+sinpi10085 sinpi -0.9000000357627869 -> -0.30901688752174056
+sinpi10086 sinpi -0.8999999999999999 -> -0.3090169943749477
+sinpi10087 sinpi -0.9 -> -0.30901699437494734
+sinpi10088 sinpi 1.100000023841858 -> -0.3090170656104165
+sinpi10089 sinpi 1.0999999046325684 -> -0.3090167094330538
+sinpi10090 sinpi 1.1 -> -0.3090169943749477
+sinpi10091 sinpi 1.0999999999999999 -> -0.309016994374947
+sinpi10092 sinpi -1.0999999046325684 -> 0.3090167094330538
+sinpi10093 sinpi -1.100000023841858 -> 0.3090170656104165
+sinpi10094 sinpi -1.0999999999999999 -> 0.309016994374947
+sinpi10095 sinpi -1.1 -> 0.3090169943749477
+sinpi10096 sinpi 1.2000000476837158 -> -0.5877853734854867
+sinpi10097 sinpi 1.1999999284744263 -> -0.587785070502928
+sinpi10098 sinpi 1.2000000000000002 -> -0.5877852522924736
+sinpi10099 sinpi 1.2 -> -0.587785252292473
+sinpi10100 sinpi -1.1999999284744263 -> 0.587785070502928
+sinpi10101 sinpi -1.2000000476837158 -> 0.5877853734854867
+sinpi10102 sinpi -1.2 -> 0.587785252292473
+sinpi10103 sinpi -1.2000000000000002 -> 0.5877852522924736
+sinpi10104 sinpi 1.3000000715255737 -> -0.8090171264527518
+sinpi10105 sinpi 1.2999999523162842 -> -0.8090169063230551
+sinpi10106 sinpi 1.3 -> -0.8090169943749475
+sinpi10107 sinpi 1.2999999999999998 -> -0.8090169943749471
+sinpi10108 sinpi -1.2999999523162842 -> 0.8090169063230551
+sinpi10109 sinpi -1.3000000715255737 -> 0.8090171264527518
+sinpi10110 sinpi -1.2999999999999998 -> 0.8090169943749471
+sinpi10111 sinpi -1.3 -> 0.8090169943749475
+sinpi10112 sinpi 1.4000000953674316 -> -0.9510566088783399
+sinpi10113 sinpi 1.399999976158142 -> -0.9510564931493437
+sinpi10114 sinpi 1.4000000000000001 -> -0.9510565162951538
+sinpi10115 sinpi 1.4 -> -0.9510565162951535
+sinpi10116 sinpi -1.399999976158142 -> 0.9510564931493437
+sinpi10117 sinpi -1.4000000953674316 -> 0.9510566088783399
+sinpi10118 sinpi -1.4 -> 0.9510565162951535
+sinpi10119 sinpi -1.4000000000000001 -> 0.9510565162951538
+sinpi10120 sinpi 1.5 -> -1.0
+sinpi10121 sinpi -1.5 -> 1.0
+sinpi10122 sinpi 2.5 -> 1.0
+sinpi10123 sinpi -2.5 -> -1.0
+sinpi10124 sinpi 3.5 -> -1.0
+sinpi10125 sinpi -3.5 -> 1.0
+sinpi10126 sinpi 4.5 -> 1.0
+sinpi10127 sinpi -4.5 -> -1.0
+sinpi10128 sinpi 0.24000000953674316 -> 0.6845471277689983
+sinpi10129 sinpi 0.23999999463558197 -> 0.6845470936435142
+sinpi10130 sinpi 0.24000000000000002 -> 0.6845471059286887
+sinpi10131 sinpi 0.24 -> 0.6845471059286886
+sinpi10132 sinpi -0.23999999463558197 -> -0.6845470936435142
+sinpi10133 sinpi -0.24000000953674316 -> -0.6845471277689983
+sinpi10134 sinpi -0.24 -> -0.6845471059286886
+sinpi10135 sinpi -0.24000000000000002 -> -0.6845471059286887
+sinpi10136 sinpi 0.49000000953674316 -> 0.9995065613068151
+sinpi10137 sinpi 0.4899999797344208 -> 0.9995065583659261
+sinpi10138 sinpi 0.49000000000000005 -> 0.9995065603657316
+sinpi10139 sinpi 0.49 -> 0.9995065603657316
+sinpi10140 sinpi -0.4899999797344208 -> -0.9995065583659261
+sinpi10141 sinpi -0.49000000953674316 -> -0.9995065613068151
+sinpi10142 sinpi -0.49 -> -0.9995065603657316
+sinpi10143 sinpi -0.49000000000000005 -> -0.9995065603657316
+sinpi10144 sinpi 0.5100000500679016 -> 0.9995065554250282
+sinpi10145 sinpi 0.5099999904632568 -> 0.9995065613068151
+sinpi10146 sinpi 0.51 -> 0.9995065603657316
+sinpi10147 sinpi 0.5099999999999999 -> 0.9995065603657316
+sinpi10148 sinpi -0.5099999904632568 -> -0.9995065613068151
+sinpi10149 sinpi -0.5100000500679016 -> -0.9995065554250282
+sinpi10150 sinpi -0.5099999999999999 -> -0.9995065603657316
+sinpi10151 sinpi -0.51 -> -0.9995065603657316
+sinpi10152 sinpi 0.7600000500679016 -> 0.684546991267053
+sinpi10153 sinpi 0.7599999904632568 -> 0.6845471277689983
+sinpi10154 sinpi 0.76 -> 0.6845471059286886
+sinpi10155 sinpi 0.7599999999999999 -> 0.684547105928689
+sinpi10156 sinpi -0.7599999904632568 -> -0.6845471277689983
+sinpi10157 sinpi -0.7600000500679016 -> -0.684546991267053
+sinpi10158 sinpi -0.7599999999999999 -> -0.684547105928689
+sinpi10159 sinpi -0.76 -> -0.6845471059286886
+sinpi10160 sinpi 1.2400000095367432 -> -0.6845471277689983
+sinpi10161 sinpi 1.2399998903274536 -> -0.6845468547650836
+sinpi10162 sinpi 1.2400000000000002 -> -0.6845471059286892
+sinpi10163 sinpi 1.24 -> -0.6845471059286886
+sinpi10164 sinpi -1.2399998903274536 -> 0.6845468547650836
+sinpi10165 sinpi -1.2400000095367432 -> 0.6845471277689983
+sinpi10166 sinpi -1.24 -> 0.6845471059286886
+sinpi10167 sinpi -1.2400000000000002 -> 0.6845471059286892
+sinpi10168 sinpi 1.4900000095367432 -> -0.9995065613068151
+sinpi10169 sinpi 1.4899998903274536 -> -0.9995065495432062
+sinpi10170 sinpi 1.4900000000000002 -> -0.9995065603657316
+sinpi10171 sinpi 1.49 -> -0.9995065603657316
+sinpi10172 sinpi -1.4899998903274536 -> 0.9995065495432062
+sinpi10173 sinpi -1.4900000095367432 -> 0.9995065613068151
+sinpi10174 sinpi -1.49 -> 0.9995065603657316
+sinpi10175 sinpi -1.4900000000000002 -> 0.9995065603657316
+sinpi10176 sinpi 1.5100001096725464 -> -0.9995065495432062
+sinpi10177 sinpi 1.5099999904632568 -> -0.9995065613068151
+sinpi10178 sinpi 1.51 -> -0.9995065603657316
+sinpi10179 sinpi 1.5099999999999998 -> -0.9995065603657316
+sinpi10180 sinpi -1.5099999904632568 -> 0.9995065613068151
+sinpi10181 sinpi -1.5100001096725464 -> 0.9995065495432062
+sinpi10182 sinpi -1.5099999999999998 -> 0.9995065603657316
+sinpi10183 sinpi -1.51 -> 0.9995065603657316
+sinpi10184 sinpi 1.7600001096725464 -> -0.6845468547650836
+sinpi10185 sinpi 1.7599999904632568 -> -0.6845471277689983
+sinpi10186 sinpi 1.76 -> -0.6845471059286886
+sinpi10187 sinpi 1.7599999999999998 -> -0.6845471059286892
+sinpi10188 sinpi -1.7599999904632568 -> 0.6845471277689983
+sinpi10189 sinpi -1.7600001096725464 -> 0.6845468547650836
+sinpi10190 sinpi -1.7599999999999998 -> 0.6845471059286892
+sinpi10191 sinpi -1.76 -> 0.6845471059286886
+sinpi10192 sinpi 100.24000549316406 -> 0.6845596858452854
+sinpi10193 sinpi 100.23999786376953 -> 0.684542213683844
+sinpi10194 sinpi 100.24000000000001 -> 0.6845471059287095
+sinpi10195 sinpi 100.24 -> 0.684547105928677
+sinpi10196 sinpi -100.23999786376953 -> -0.684542213683844
+sinpi10197 sinpi -100.24000549316406 -> -0.6845596858452854
+sinpi10198 sinpi -100.24 -> -0.684547105928677
+sinpi10199 sinpi -100.24000000000001 -> -0.6845471059287095
+sinpi10200 sinpi 100.49000549316406 -> 0.9995071022812839
+sinpi10201 sinpi 100.48999786376953 -> 0.9995063495404061
+sinpi10202 sinpi 100.49000000000001 -> 0.9995065603657325
+sinpi10203 sinpi 100.49 -> 0.999506560365731
+sinpi10204 sinpi -100.48999786376953 -> -0.9995063495404061
+sinpi10205 sinpi -100.49000549316406 -> -0.9995071022812839
+sinpi10206 sinpi -100.49 -> -0.999506560365731
+sinpi10207 sinpi -100.49000000000001 -> -0.9995065603657325
+sinpi10208 sinpi 100.51000213623047 -> 0.9995063495404061
+sinpi10209 sinpi 100.50999450683594 -> 0.9995071022812839
+sinpi10210 sinpi 100.51 -> 0.999506560365731
+sinpi10211 sinpi 100.50999999999999 -> 0.9995065603657325
+sinpi10212 sinpi -100.50999450683594 -> -0.9995071022812839
+sinpi10213 sinpi -100.51000213623047 -> -0.9995063495404061
+sinpi10214 sinpi -100.50999999999999 -> -0.9995065603657325
+sinpi10215 sinpi -100.51 -> -0.999506560365731
+sinpi10216 sinpi 100.76000213623047 -> 0.684542213683844
+sinpi10217 sinpi 100.75999450683594 -> 0.6845596858452854
+sinpi10218 sinpi 100.76 -> 0.684547105928677
+sinpi10219 sinpi 100.75999999999999 -> 0.6845471059287095
+sinpi10220 sinpi -100.75999450683594 -> -0.6845596858452854
+sinpi10221 sinpi -100.76000213623047 -> -0.684542213683844
+sinpi10222 sinpi -100.75999999999999 -> -0.6845471059287095
+sinpi10223 sinpi -100.76 -> -0.684547105928677
+sinpi10224 sinpi 1234.56005859375 -> 0.9822527413662894
+sinpi10225 sinpi 1234.5599365234375 -> 0.9823245983107213
+sinpi10226 sinpi 1234.5600000000002 -> 0.9822872507285869
+sinpi10227 sinpi 1234.56 -> 0.9822872507287208
+sinpi10228 sinpi -1234.5599365234375 -> -0.9823245983107213
+sinpi10229 sinpi -1234.56005859375 -> -0.9822527413662894
+sinpi10230 sinpi -1234.56 -> -0.9822872507287208
+sinpi10231 sinpi -1234.5600000000002 -> -0.9822872507285869
+sinpi10232 sinpi 2097151.125 -> -0.3826834323650898
+sinpi10233 sinpi -2097151.125 -> 0.3826834323650898
+sinpi10234 sinpi 2097151.875 -> -0.3826834323650898
+sinpi10235 sinpi -2097151.875 -> 0.3826834323650898
+sinpi10236 sinpi 1125899906842624.0 -> 0.0
+sinpi10237 sinpi 1125899839733760.0 -> 0.0
+sinpi10238 sinpi 1125899906842623.1 -> -0.3826834323650898
+sinpi10239 sinpi -1125899839733760.0 -> -0.0
+sinpi10240 sinpi -1125899906842624.0 -> -0.0
+sinpi10241 sinpi -1125899906842623.1 -> 0.3826834323650898
+sinpi10242 sinpi 1125899906842624.0 -> 0.0
+sinpi10243 sinpi 1125899839733760.0 -> 0.0
+sinpi10244 sinpi 1125899906842623.9 -> -0.3826834323650898
+sinpi10245 sinpi -1125899839733760.0 -> -0.0
+sinpi10246 sinpi -1125899906842624.0 -> -0.0
+sinpi10247 sinpi -1125899906842623.9 -> 0.3826834323650898
+sinpi10248 sinpi 2.305843009213694e+18 -> 0.0
+sinpi10249 sinpi 2.3058428717747405e+18 -> 0.0
+sinpi10250 sinpi 2.3058430092136937e+18 -> 0.0
+sinpi10251 sinpi -2.3058428717747405e+18 -> -0.0
+sinpi10252 sinpi -2.305843009213694e+18 -> -0.0
+sinpi10253 sinpi -2.3058430092136937e+18 -> -0.0
+sinpi10254 sinpi 2.305843009213694e+18 -> 0.0
+sinpi10255 sinpi 2.3058428717747405e+18 -> 0.0
+sinpi10256 sinpi 2.3058430092136937e+18 -> 0.0
+sinpi10257 sinpi -2.3058428717747405e+18 -> -0.0
+sinpi10258 sinpi -2.305843009213694e+18 -> -0.0
+sinpi10259 sinpi -2.3058430092136937e+18 -> -0.0
+sinpi10260 sinpi 1.298074214633707e+33 -> 0.0
+sinpi10261 sinpi 1.2980741372624545e+33 -> 0.0
+sinpi10262 sinpi 1.2980742146337068e+33 -> 0.0
+sinpi10263 sinpi -1.2980741372624545e+33 -> -0.0
+sinpi10264 sinpi -1.298074214633707e+33 -> -0.0
+sinpi10265 sinpi -1.2980742146337068e+33 -> -0.0
+sinpi10266 sinpi 1.298074214633707e+33 -> 0.0
+sinpi10267 sinpi 1.2980741372624545e+33 -> 0.0
+sinpi10268 sinpi 1.2980742146337068e+33 -> 0.0
+sinpi10269 sinpi -1.2980741372624545e+33 -> -0.0
+sinpi10270 sinpi -1.298074214633707e+33 -> -0.0
+sinpi10271 sinpi -1.2980742146337068e+33 -> -0.0
+sinpi10272 sinpi 2.938735877055719e-39 -> 9.232311042199004e-39
+sinpi10273 sinpi -2.938735877055719e-39 -> -9.232311042199004e-39
+sinpi10274 sinpi 1.401298464324817e-45 -> 4.402308961009504e-45
+sinpi10275 sinpi 0.0 -> 0.0
+sinpi10276 sinpi 5.010420900022432e-293 -> 1.5740701490903231e-292
+sinpi10277 sinpi -0.0 -> -0.0
+sinpi10278 sinpi -1.401298464324817e-45 -> -4.402308961009504e-45
+sinpi10279 sinpi -5.010420900022432e-293 -> -1.5740701490903231e-292
+sinpi10280 sinpi 1.401298464324817e-45 -> 4.402308961009504e-45
+sinpi10281 sinpi 0.0 -> 0.0
+sinpi10282 sinpi 5.562684646268003e-309 -> 1.7475689218952297e-308
+sinpi10283 sinpi -0.0 -> -0.0
+sinpi10284 sinpi -1.401298464324817e-45 -> -4.402308961009504e-45
+sinpi10285 sinpi -5.562684646268003e-309 -> -1.7475689218952297e-308
+sinpi10286 sinpi 1.401298464324817e-45 -> 4.402308961009504e-45
+sinpi10287 sinpi 0.0 -> 0.0
+sinpi10288 sinpi 5e-324 -> 1.5e-323
+sinpi10289 sinpi -0.0 -> -0.0
+sinpi10290 sinpi -1.401298464324817e-45 -> -4.402308961009504e-45
+sinpi10291 sinpi -5e-324 -> -1.5e-323
+sinpi10292 sinpi 1.401298464324817e-45 -> 4.402308961009504e-45
+sinpi10293 sinpi 0.0 -> 0.0
+sinpi10294 sinpi 5e-324 -> 1.5e-323
+sinpi10295 sinpi -0.0 -> -0.0
+sinpi10296 sinpi -1.401298464324817e-45 -> -4.402308961009504e-45
+sinpi10297 sinpi -5e-324 -> -1.5e-323
+sinpi10298 sinpi 0.039865780621767044 -> 0.12491488475763585
+sinpi10299 sinpi -0.009947286918759346 -> -0.03124523733449905
+sinpi10300 sinpi -0.00994728785008192 -> -0.03124524025890666
+sinpi10301 sinpi -0.009947287497407154 -> -0.03124523915148717
+sinpi10302 sinpi 0.009947438724339008 -> 0.03124571401293662
+sinpi10303 sinpi 0.009947437793016434 -> 0.03124571108852905
+sinpi10304 sinpi 0.009947437917099084 -> 0.03124571147815586
+sinpi10305 sinpi 0.009947437917099082 -> 0.031245711478155854
+sinpi10306 sinpi -0.0049737198278307915 -> -0.015624765847977973
+sinpi10307 sinpi -0.004973720293492079 -> -0.015624767310717469
+sinpi10308 sinpi -0.004973719955059152 -> -0.015624766247628864
+sinpi10309 sinpi -0.004973719955059153 -> -0.015624766247628865
+
+sinpi20001 sinpi inf -> nan invalid
+sinpi20002 sinpi -inf -> nan invalid
+sinpi20003 sinpi nan -> nan
+
+-----------
+-- tanpi --
+-----------
+
+tanpi10000 tanpi 0.0 -> 0.0
+tanpi10001 tanpi -0.0 -> -0.0
+tanpi10002 tanpi 1.1754943508222875e-38 -> 3.6929244168796014e-38
+tanpi10003 tanpi 2.2250738585072014e-308 -> 6.990275687580919e-308
+tanpi10004 tanpi 2.004168360008973e-292 -> 6.296280596361293e-292
+tanpi10005 tanpi -1.1754943508222875e-38 -> -3.6929244168796014e-38
+tanpi10006 tanpi -2.2250738585072014e-308 -> -6.990275687580919e-308
+tanpi10007 tanpi -2.004168360008973e-292 -> -6.296280596361293e-292
+tanpi10008 tanpi 1.401298464324817e-45 -> 4.402308961009504e-45
+tanpi10009 tanpi 5e-324 -> 1.5e-323
+tanpi10010 tanpi -1.401298464324817e-45 -> -4.402308961009504e-45
+tanpi10011 tanpi -5e-324 -> -1.5e-323
+tanpi10012 tanpi 3.4028234663852886e+38 -> 0.0
+tanpi10013 tanpi 1.7976931348623157e+308 -> 0.0
+tanpi10014 tanpi -3.4028234663852886e+38 -> -0.0
+tanpi10015 tanpi -1.7976931348623157e+308 -> -0.0
+tanpi10016 tanpi 1.0 -> -0.0
+tanpi10017 tanpi -1.0 -> 0.0
+tanpi10018 tanpi 2.0 -> 0.0
+tanpi10019 tanpi -2.0 -> -0.0
+tanpi10020 tanpi 3.0 -> -0.0
+tanpi10021 tanpi -3.0 -> 0.0
+tanpi10022 tanpi 4.0 -> 0.0
+tanpi10023 tanpi -4.0 -> -0.0
+tanpi10024 tanpi 0.10000000149011612 -> 0.32491970140846616
+tanpi10025 tanpi 0.09999999403953552 -> 0.3249196755306671
+tanpi10026 tanpi 0.1 -> 0.32491969623290634
+tanpi10027 tanpi 0.09999999999999999 -> 0.3249196962329063
+tanpi10028 tanpi -0.09999999403953552 -> -0.3249196755306671
+tanpi10029 tanpi -0.10000000149011612 -> -0.32491970140846616
+tanpi10030 tanpi -0.09999999999999999 -> -0.3249196962329063
+tanpi10031 tanpi -0.1 -> -0.32491969623290634
+tanpi10032 tanpi 0.20000000298023224 -> 0.7265425423102566
+tanpi10033 tanpi 0.19999998807907104 -> 0.7265424707857802
+tanpi10034 tanpi 0.2 -> 0.7265425280053609
+tanpi10035 tanpi 0.19999999999999998 -> 0.7265425280053608
+tanpi10036 tanpi -0.19999998807907104 -> -0.7265424707857802
+tanpi10037 tanpi -0.20000000298023224 -> -0.7265425423102566
+tanpi10038 tanpi -0.19999999999999998 -> -0.7265425280053608
+tanpi10039 tanpi -0.2 -> -0.7265425280053609
+tanpi10040 tanpi 0.30000001192092896 -> 1.3763820288695117
+tanpi10041 tanpi 0.29999998211860657 -> 1.3763817578736872
+tanpi10042 tanpi 0.30000000000000004 -> 1.376381920471174
+tanpi10043 tanpi 0.3 -> 1.3763819204711734
+tanpi10044 tanpi -0.29999998211860657 -> -1.3763817578736872
+tanpi10045 tanpi -0.30000001192092896 -> -1.3763820288695117
+tanpi10046 tanpi -0.3 -> -1.3763819204711734
+tanpi10047 tanpi -0.30000000000000004 -> -1.376381920471174
+tanpi10048 tanpi 0.4000000059604645 -> 3.0776837332696907
+tanpi10049 tanpi 0.3999999761581421 -> 3.077682752797731
+tanpi10050 tanpi 0.4 -> 3.077683537175254
+tanpi10051 tanpi 0.39999999999999997 -> 3.0776835371752522
+tanpi10052 tanpi -0.3999999761581421 -> -3.077682752797731
+tanpi10053 tanpi -0.4000000059604645 -> -3.0776837332696907
+tanpi10054 tanpi -0.39999999999999997 -> -3.0776835371752522
+tanpi10055 tanpi -0.4 -> -3.077683537175254
+tanpi10056 tanpi 0.6000000238418579 -> -3.077682752797731
+tanpi10057 tanpi 0.5999999642372131 -> -3.077684713742215
+tanpi10058 tanpi 0.6000000000000001 -> -3.0776835371752504
+tanpi10059 tanpi 0.6 -> -3.077683537175254
+tanpi10060 tanpi -0.5999999642372131 -> 3.077684713742215
+tanpi10061 tanpi -0.6000000238418579 -> 3.077682752797731
+tanpi10062 tanpi -0.6 -> 3.077683537175254
+tanpi10063 tanpi -0.6000000000000001 -> 3.0776835371752504
+tanpi10064 tanpi 0.7000000476837158 -> -1.3763814868779325
+tanpi10065 tanpi 0.699999988079071 -> -1.3763820288695117
+tanpi10066 tanpi 0.7000000000000001 -> -1.376381920471173
+tanpi10067 tanpi 0.7 -> -1.376381920471174
+tanpi10068 tanpi -0.699999988079071 -> 1.3763820288695117
+tanpi10069 tanpi -0.7000000476837158 -> 1.3763814868779325
+tanpi10070 tanpi -0.7 -> 1.376381920471174
+tanpi10071 tanpi -0.7000000000000001 -> 1.376381920471173
+tanpi10072 tanpi 0.800000011920929 -> -0.7265424707857802
+tanpi10073 tanpi 0.7999999523162842 -> -0.7265427568837151
+tanpi10074 tanpi 0.8 -> -0.7265425280053607
+tanpi10075 tanpi 0.7999999999999999 -> -0.7265425280053612
+tanpi10076 tanpi -0.7999999523162842 -> 0.7265427568837151
+tanpi10077 tanpi -0.800000011920929 -> 0.7265424707857802
+tanpi10078 tanpi -0.7999999999999999 -> 0.7265425280053612
+tanpi10079 tanpi -0.8 -> 0.7265425280053607
+tanpi10080 tanpi 0.9000000357627869 -> -0.3249195720194747
+tanpi10081 tanpi 0.8999999761581421 -> -0.3249197790418658
+tanpi10082 tanpi 0.9 -> -0.32491969623290623
+tanpi10083 tanpi 0.8999999999999999 -> -0.3249196962329066
+tanpi10084 tanpi -0.8999999761581421 -> 0.3249197790418658
+tanpi10085 tanpi -0.9000000357627869 -> 0.3249195720194747
+tanpi10086 tanpi -0.8999999999999999 -> 0.3249196962329066
+tanpi10087 tanpi -0.9 -> 0.32491969623290623
+tanpi10088 tanpi 1.100000023841858 -> 0.3249197790418658
+tanpi10089 tanpi 1.0999999046325684 -> 0.3249193649971088
+tanpi10090 tanpi 1.1 -> 0.3249196962329066
+tanpi10091 tanpi 1.0999999999999999 -> 0.32491969623290584
+tanpi10092 tanpi -1.0999999046325684 -> -0.3249193649971088
+tanpi10093 tanpi -1.100000023841858 -> -0.3249197790418658
+tanpi10094 tanpi -1.0999999999999999 -> -0.32491969623290584
+tanpi10095 tanpi -1.1 -> -0.3249196962329066
+tanpi10096 tanpi 1.2000000476837158 -> 0.7265427568837151
+tanpi10097 tanpi 1.1999999284744263 -> 0.7265421846879231
+tanpi10098 tanpi 1.2000000000000002 -> 0.7265425280053618
+tanpi10099 tanpi 1.2 -> 0.7265425280053607
+tanpi10100 tanpi -1.1999999284744263 -> -0.7265421846879231
+tanpi10101 tanpi -1.2000000476837158 -> -0.7265427568837151
+tanpi10102 tanpi -1.2 -> -0.7265425280053607
+tanpi10103 tanpi -1.2000000000000002 -> -0.7265425280053618
+tanpi10104 tanpi 1.3000000715255737 -> 1.3763825708613702
+tanpi10105 tanpi 1.2999999523162842 -> 1.3763814868779325
+tanpi10106 tanpi 1.3 -> 1.376381920471174
+tanpi10107 tanpi 1.2999999999999998 -> 1.376381920471172
+tanpi10108 tanpi -1.2999999523162842 -> -1.3763814868779325
+tanpi10109 tanpi -1.3000000715255737 -> -1.3763825708613702
+tanpi10110 tanpi -1.2999999999999998 -> -1.376381920471172
+tanpi10111 tanpi -1.3 -> -1.376381920471174
+tanpi10112 tanpi 1.4000000953674316 -> 3.0776866746889597
+tanpi10113 tanpi 1.399999976158142 -> 3.077682752797731
+tanpi10114 tanpi 1.4000000000000001 -> 3.077683537175258
+tanpi10115 tanpi 1.4 -> 3.0776835371752504
+tanpi10116 tanpi -1.399999976158142 -> -3.077682752797731
+tanpi10117 tanpi -1.4000000953674316 -> -3.0776866746889597
+tanpi10118 tanpi -1.4 -> -3.0776835371752504
+tanpi10119 tanpi -1.4000000000000001 -> -3.077683537175258
+tanpi10120 tanpi 0.24000000953674316 -> 0.9390625621984302
+tanpi10121 tanpi 0.23999999463558197 -> 0.9390624741032162
+tanpi10122 tanpi 0.24000000000000002 -> 0.9390625058174925
+tanpi10123 tanpi 0.24 -> 0.9390625058174923
+tanpi10124 tanpi -0.23999999463558197 -> -0.9390624741032162
+tanpi10125 tanpi -0.24000000953674316 -> -0.9390625621984302
+tanpi10126 tanpi -0.24 -> -0.9390625058174923
+tanpi10127 tanpi -0.24000000000000002 -> -0.9390625058174925
+tanpi10128 tanpi 0.49000000953674316 -> 31.820546320188043
+tanpi10129 tanpi 0.4899999797344208 -> 31.82045142533627
+tanpi10130 tanpi 0.49000000000000005 -> 31.820515953774105
+tanpi10131 tanpi 0.49 -> 31.82051595377393
+tanpi10132 tanpi -0.4899999797344208 -> -31.82045142533627
+tanpi10133 tanpi -0.49000000953674316 -> -31.820546320188043
+tanpi10134 tanpi -0.49 -> -31.82051595377393
+tanpi10135 tanpi -0.49000000000000005 -> -31.820515953774105
+tanpi10136 tanpi 0.5100000500679016 -> -31.820356531049924
+tanpi10137 tanpi 0.5099999904632568 -> -31.820546320188043
+tanpi10138 tanpi 0.51 -> -31.82051595377393
+tanpi10139 tanpi 0.5099999999999999 -> -31.820515953774283
+tanpi10140 tanpi -0.5099999904632568 -> 31.820546320188043
+tanpi10141 tanpi -0.5100000500679016 -> 31.820356531049924
+tanpi10142 tanpi -0.5099999999999999 -> 31.820515953774283
+tanpi10143 tanpi -0.51 -> 31.82051595377393
+tanpi10144 tanpi 0.7600000500679016 -> -0.9390622098176208
+tanpi10145 tanpi 0.7599999904632568 -> -0.9390625621984302
+tanpi10146 tanpi 0.76 -> -0.9390625058174923
+tanpi10147 tanpi 0.7599999999999999 -> -0.939062505817493
+tanpi10148 tanpi -0.7599999904632568 -> 0.9390625621984302
+tanpi10149 tanpi -0.7600000500679016 -> 0.9390622098176208
+tanpi10150 tanpi -0.7599999999999999 -> 0.939062505817493
+tanpi10151 tanpi -0.76 -> 0.9390625058174923
+tanpi10152 tanpi 1.2400000095367432 -> 0.9390625621984302
+tanpi10153 tanpi 1.2399998903274536 -> 0.9390618574369353
+tanpi10154 tanpi 1.2400000000000002 -> 0.9390625058174936
+tanpi10155 tanpi 1.24 -> 0.9390625058174923
+tanpi10156 tanpi -1.2399998903274536 -> -0.9390618574369353
+tanpi10157 tanpi -1.2400000095367432 -> -0.9390625621984302
+tanpi10158 tanpi -1.24 -> -0.9390625058174923
+tanpi10159 tanpi -1.2400000000000002 -> -0.9390625058174936
+tanpi10160 tanpi 1.4900000095367432 -> 31.820546320188043
+tanpi10161 tanpi 1.4899998903274536 -> 31.820166744173495
+tanpi10162 tanpi 1.4900000000000002 -> 31.82051595377464
+tanpi10163 tanpi 1.49 -> 31.82051595377393
+tanpi10164 tanpi -1.4899998903274536 -> -31.820166744173495
+tanpi10165 tanpi -1.4900000095367432 -> -31.820546320188043
+tanpi10166 tanpi -1.49 -> -31.82051595377393
+tanpi10167 tanpi -1.4900000000000002 -> -31.82051595377464
+tanpi10168 tanpi 1.5100001096725464 -> -31.820166744173495
+tanpi10169 tanpi 1.5099999904632568 -> -31.820546320188043
+tanpi10170 tanpi 1.51 -> -31.82051595377393
+tanpi10171 tanpi 1.5099999999999998 -> -31.82051595377464
+tanpi10172 tanpi -1.5099999904632568 -> 31.820546320188043
+tanpi10173 tanpi -1.5100001096725464 -> 31.820166744173495
+tanpi10174 tanpi -1.5099999999999998 -> 31.82051595377464
+tanpi10175 tanpi -1.51 -> 31.82051595377393
+tanpi10176 tanpi 1.7600001096725464 -> -0.9390618574369353
+tanpi10177 tanpi 1.7599999904632568 -> -0.9390625621984302
+tanpi10178 tanpi 1.76 -> -0.9390625058174923
+tanpi10179 tanpi 1.7599999999999998 -> -0.9390625058174936
+tanpi10180 tanpi -1.7599999904632568 -> 0.9390625621984302
+tanpi10181 tanpi -1.7600001096725464 -> 0.9390618574369353
+tanpi10182 tanpi -1.7599999999999998 -> 0.9390625058174936
+tanpi10183 tanpi -1.76 -> 0.9390625058174923
+tanpi10184 tanpi 100.24000549316406 -> 0.9390949817630689
+tanpi10185 tanpi 100.23999786376953 -> 0.9390498765673647
+tanpi10186 tanpi 100.24000000000001 -> 0.9390625058175461
+tanpi10187 tanpi 100.24 -> 0.9390625058174621
+tanpi10188 tanpi -100.23999786376953 -> -0.9390498765673647
+tanpi10189 tanpi -100.24000549316406 -> -0.9390949817630689
+tanpi10190 tanpi -100.24 -> -0.9390625058174621
+tanpi10191 tanpi -100.24000000000001 -> -0.9390625058175461
+tanpi10192 tanpi 100.49000549316406 -> 31.83801660184476
+tanpi10193 tanpi 100.48999786376953 -> 31.81371533579395
+tanpi10194 tanpi 100.49000000000001 -> 31.820515953802918
+tanpi10195 tanpi 100.49 -> 31.820515953757667
+tanpi10196 tanpi -100.48999786376953 -> -31.81371533579395
+tanpi10197 tanpi -100.49000549316406 -> -31.83801660184476
+tanpi10198 tanpi -100.49 -> -31.820515953757667
+tanpi10199 tanpi -100.49000000000001 -> -31.820515953802918
+tanpi10200 tanpi 100.51000213623047 -> -31.81371533579395
+tanpi10201 tanpi 100.50999450683594 -> -31.83801660184476
+tanpi10202 tanpi 100.51 -> -31.820515953757667
+tanpi10203 tanpi 100.50999999999999 -> -31.820515953802918
+tanpi10204 tanpi -100.50999450683594 -> 31.83801660184476
+tanpi10205 tanpi -100.51000213623047 -> 31.81371533579395
+tanpi10206 tanpi -100.50999999999999 -> 31.820515953802918
+tanpi10207 tanpi -100.51 -> 31.820515953757667
+tanpi10208 tanpi 100.76000213623047 -> -0.9390498765673647
+tanpi10209 tanpi 100.75999450683594 -> -0.9390949817630689
+tanpi10210 tanpi 100.76 -> -0.9390625058174621
+tanpi10211 tanpi 100.75999999999999 -> -0.9390625058175461
+tanpi10212 tanpi -100.75999450683594 -> 0.9390949817630689
+tanpi10213 tanpi -100.76000213623047 -> 0.9390498765673647
+tanpi10214 tanpi -100.75999999999999 -> 0.9390625058175461
+tanpi10215 tanpi -100.76 -> 0.9390625058174621
+tanpi10216 tanpi 1234.56005859375 -> -5.236946012446678
+tanpi10217 tanpi 1234.5599365234375 -> -5.247869032587774
+tanpi10218 tanpi 1234.5600000000002 -> -5.2421835810977155
+tanpi10219 tanpi 1234.56 -> -5.242183581118059
+tanpi10220 tanpi -1234.5599365234375 -> 5.247869032587774
+tanpi10221 tanpi -1234.56005859375 -> 5.236946012446678
+tanpi10222 tanpi -1234.56 -> 5.242183581118059
+tanpi10223 tanpi -1234.5600000000002 -> 5.2421835810977155
+tanpi10224 tanpi 2097151.375 -> 2.414213562373095
+tanpi10225 tanpi -2097151.375 -> -2.414213562373095
+tanpi10226 tanpi 2097151.625 -> -2.414213562373095
+tanpi10227 tanpi -2097151.625 -> 2.414213562373095
+tanpi10228 tanpi 1125899906842624.0 -> 0.0
+tanpi10229 tanpi 1125899839733760.0 -> 0.0
+tanpi10230 tanpi 1125899906842623.4 -> 2.414213562373095
+tanpi10231 tanpi -1125899839733760.0 -> -0.0
+tanpi10232 tanpi -1125899906842624.0 -> -0.0
+tanpi10233 tanpi -1125899906842623.4 -> -2.414213562373095
+tanpi10234 tanpi 1125899906842624.0 -> 0.0
+tanpi10235 tanpi 1125899839733760.0 -> 0.0
+tanpi10236 tanpi 1125899906842623.6 -> -2.414213562373095
+tanpi10237 tanpi -1125899839733760.0 -> -0.0
+tanpi10238 tanpi -1125899906842624.0 -> -0.0
+tanpi10239 tanpi -1125899906842623.6 -> 2.414213562373095
+tanpi10240 tanpi 2.305843009213694e+18 -> 0.0
+tanpi10241 tanpi 2.3058428717747405e+18 -> 0.0
+tanpi10242 tanpi 2.3058430092136937e+18 -> 0.0
+tanpi10243 tanpi -2.3058428717747405e+18 -> -0.0
+tanpi10244 tanpi -2.305843009213694e+18 -> -0.0
+tanpi10245 tanpi -2.3058430092136937e+18 -> -0.0
+tanpi10246 tanpi 2.305843009213694e+18 -> 0.0
+tanpi10247 tanpi 2.3058428717747405e+18 -> 0.0
+tanpi10248 tanpi 2.3058430092136937e+18 -> 0.0
+tanpi10249 tanpi -2.3058428717747405e+18 -> -0.0
+tanpi10250 tanpi -2.305843009213694e+18 -> -0.0
+tanpi10251 tanpi -2.3058430092136937e+18 -> -0.0
+tanpi10252 tanpi 1.298074214633707e+33 -> 0.0
+tanpi10253 tanpi 1.2980741372624545e+33 -> 0.0
+tanpi10254 tanpi 1.2980742146337068e+33 -> 0.0
+tanpi10255 tanpi -1.2980741372624545e+33 -> -0.0
+tanpi10256 tanpi -1.298074214633707e+33 -> -0.0
+tanpi10257 tanpi -1.2980742146337068e+33 -> -0.0
+tanpi10258 tanpi 1.298074214633707e+33 -> 0.0
+tanpi10259 tanpi 1.2980741372624545e+33 -> 0.0
+tanpi10260 tanpi 1.2980742146337068e+33 -> 0.0
+tanpi10261 tanpi -1.2980741372624545e+33 -> -0.0
+tanpi10262 tanpi -1.298074214633707e+33 -> -0.0
+tanpi10263 tanpi -1.2980742146337068e+33 -> -0.0
+tanpi10264 tanpi 0.48004481196403503 -> 15.930332115434627
+tanpi10265 tanpi -0.4950249195098877 -> -63.97564155226383
+tanpi10266 tanpi -0.4950249493122101 -> -63.97602485152189
+tanpi10267 tanpi -0.49502493342943843 -> -63.97582057644752
+tanpi10268 tanpi -3.659269094467163 -> 1.828928514937406
+tanpi10269 tanpi -3.659269332885742 -> 1.8289252604911337
+tanpi10270 tanpi -3.659269111498701 -> 1.8289282824542836
+tanpi10271 tanpi -3.6592691114987015 -> 1.8289282824542774
+tanpi10272 tanpi -1.6591962575912476 -> 1.829923165916756
+tanpi10273 tanpi -1.659196376800537 -> 1.8299215373295707
+tanpi10274 tanpi -1.6591963470121214 -> 1.8299219442861712
+tanpi10275 tanpi -1.6591963470121216 -> 1.829921944286168
+
+tanpi20001 tanpi inf -> nan invalid
+tanpi20002 tanpi -inf -> nan invalid
+tanpi20003 tanpi nan -> nan
index 85ddf68b3f36efca0566fe9ee8491c092afe3d7f..cc37697189af3e5fdb3cf416235f163c5575556d 100644 (file)
@@ -75,7 +75,7 @@ def parse_mtestfile(fname):
     -- starts a comment
     blank lines, or lines containing only a comment, are ignored
     other lines are expected to have the form
-      id fn arg -> expected [flag]*
+      id fn arg... -> expected [flag]*
 
     """
     with open(fname, encoding="utf-8") as fp:
@@ -87,12 +87,12 @@ def parse_mtestfile(fname):
                 continue
 
             lhs, rhs = line.split('->')
-            id, fn, arg = lhs.split()
+            id, fn, *args = lhs.split()
             rhs_pieces = rhs.split()
             exp = rhs_pieces[0]
             flags = rhs_pieces[1:]
 
-            yield (id, fn, float(arg), float(exp), flags)
+            yield (id, fn, [float(arg) for arg in args], float(exp), flags)
 
 
 def parse_testfile(fname):
@@ -2141,10 +2141,10 @@ class MathTests(unittest.TestCase):
 
     @requires_IEEE_754
     def test_mtestfile(self):
-        fail_fmt = "{}: {}({!r}): {}"
+        fail_fmt = "{}: {}{!r}: {}"
 
         failures = []
-        for id, fn, arg, expected, flags in parse_mtestfile(math_testcases):
+        for id, fn, args, expected, flags in parse_mtestfile(math_testcases):
             func = getattr(math, fn)
 
             if 'invalid' in flags or 'divide-by-zero' in flags:
@@ -2153,7 +2153,7 @@ class MathTests(unittest.TestCase):
                 expected = 'OverflowError'
 
             try:
-                got = func(arg)
+                got = func(*args)
             except ValueError:
                 got = 'ValueError'
             except OverflowError:
@@ -2176,7 +2176,7 @@ class MathTests(unittest.TestCase):
                 # general.
                 abs_tol = 1e-15
 
-            elif fn == 'erfc' and arg >= 0.0:
+            elif fn == 'erfc' and (arg := args[0]) >= 0.0:
                 # erfc has less-than-ideal accuracy for large
                 # arguments (x ~ 25 or so), mainly due to the
                 # error involved in computing exp(-x*x).
@@ -2199,7 +2199,7 @@ class MathTests(unittest.TestCase):
             if failure is None:
                 continue
 
-            msg = fail_fmt.format(id, fn, arg, failure)
+            msg = fail_fmt.format(id, fn, args, failure)
             failures.append(msg)
 
         if failures:
diff --git a/Misc/NEWS.d/next/Library/2026-05-27-15-51-29.gh-issue-150534.3Nan6S.rst b/Misc/NEWS.d/next/Library/2026-05-27-15-51-29.gh-issue-150534.3Nan6S.rst
new file mode 100644 (file)
index 0000000..2ead999
--- /dev/null
@@ -0,0 +1,6 @@
+Added trigonometric functions that work in units of half turns, rather than
+radians. The new functions :func:`math.acospi`, :func:`math.asinpi`,
+:func:`math.atanpi`, and :func:`math.atan2pi` return half-turn angles. The
+new functions :func:`math.cospi`, :func:`math.sinpi`, and :func:`math.tanpi`
+take half-turn angle arguments. These functions are recommended by IEEE
+754-2019 and standardized in C23.
index 5636a00afe10c4be655ff3b915f507bfda350609..64e5372d73d2f29b5644c024ddac35c779de2812 100644 (file)
@@ -187,13 +187,6 @@ tl_to_d(TripleLength total)
 }
 
 
-/*
-   sin(pi*x), giving accurate results for all finite x (especially x
-   integral or close to an integer).  This is here for use in the
-   reflection formula for the gamma function.  It conforms to IEEE
-   754-2008 for finite arguments, but not for infinities or nans.
-*/
-
 static const double pi = 3.141592653589793238462643383279502884197;
 static const double logpi = 1.144729885849400174143427351353058711647;
 
@@ -219,13 +212,120 @@ static const double logpi = 1.144729885849400174143427351353058711647;
         }                                                  \
     }
 
+#ifndef HAVE_ACOSPI
+/*
+   acos(x)/pi.  It conforms to C23 Annex 'F'.
+*/
+
+static double
+m_acospi(double x)
+{
+    double r = acos(x)/pi;
+    if (isgreater(r, 1.0)) {
+        return 1.0;
+    }
+    return r;
+}
+#else
+#define m_acospi acospi
+#endif
+
+#ifndef HAVE_ASINPI
+/*
+   asin(x)/pi.  It conforms to C23 Annex 'F'.
+*/
+
+static double
+m_asinpi(double x)
+{
+    double r = asin(x)/pi;
+    if (isgreater(fabs(r), 0.5)) {
+        return copysign(0.5, r);
+    }
+    return r;
+}
+#else
+#define m_asinpi asinpi
+#endif
+
+#ifndef HAVE_ATANPI
+/*
+   asin(x)/pi.  It conforms to C23 Annex 'F'.
+*/
+
+static double
+m_atanpi(double x)
+{
+    double r = atan(x)/pi;
+    if (isgreater(fabs(r), 0.5)) {
+        return copysign(0.5, r);
+    }
+    return r;
+}
+#else
+#define m_atanpi atanpi
+#endif
+
+#ifndef HAVE_ATAN2PI
+/*
+   asin(x)/pi.  It conforms to C23 Annex 'F'.
+*/
+
+static double
+m_atan2pi(double y, double x)
+{
+    double r = atan2(y, x)/pi;
+    if (isgreater(fabs(r), 1.0)) {
+        return copysign(1.0, r);
+    }
+    return r;
+}
+#else
+#define m_atan2pi atan2pi
+#endif
+
+#ifndef HAVE_COSPI
+/*
+   cos(pi*x), giving accurate results for all finite x (especially x
+   integral or close to an integer).  It conforms to C23 Annex 'F'.
+*/
+
+static double
+m_cospi(double x)
+{
+    if (!isfinite(x)) {
+        return cos(x);
+    }
+    x = fabs(x - 2.0 * round(0.5 * x));
+    if (x <= 0.25) {
+        return cos(pi * x);
+    }
+    if (x == 0.5) {
+        return 0.0;
+    }
+    if (x <= 0.75) {
+        return sin(pi * (0.5 - x));
+    }
+    return -cos(pi * (1.0 - x));
+}
+#else
+#define m_cospi cospi
+#endif
+
+#ifndef HAVE_SINPI
+/*
+   sin(pi*x), giving accurate results for all finite x (especially x
+   integral or close to an integer).  It conforms to C23 Annex 'F'.
+*/
+
 static double
 m_sinpi(double x)
 {
     double y, r;
     int n;
-    /* this function should only ever be called for finite arguments */
-    assert(isfinite(x));
+    if (!isfinite(x)) {
+        return sin(x);
+    }
     y = fmod(fabs(x), 2.0);
     n = (int)round(2.0*y);
     assert(0 <= n && n <= 4);
@@ -252,6 +352,47 @@ m_sinpi(double x)
     }
     return copysign(1.0, x)*r;
 }
+#else
+#define m_sinpi sinpi
+#endif
+
+#ifndef HAVE_TANPI
+/*
+   tan(pi*x), giving accurate results for all finite x (especially x
+   integral or close to an integer).  It conforms to C23 Annex 'F'.
+*/
+
+static double
+m_tanpi(double x)
+{
+    double y, absy;
+    if (!isfinite(x)) {
+        return tan(x);
+    }
+    y = x - 2.0 * round(0.5 * x);
+    absy = fabs(y);
+    if (absy == 0.0) {
+        return copysign(0.0, x);
+    }
+    if (absy == 1.0) {
+        return copysign(0.0, -x);
+    }
+    if (absy == 0.5) {
+        errno = ERANGE;
+        return 1.0 / copysign(0.0, y);
+    }
+    if (absy > 0.5) {
+        y -= copysign(1.0, y);
+        absy = fabs(y);
+    }
+    if (absy <= 0.25) {
+        return tan(pi * y);
+    }
+    return copysign(1.0 / tan(pi * (0.5 - absy)), y);
+}
+#else
+#define m_tanpi tanpi
+#endif
 
 /* Implementation of the real gamma function.  Kept here to work around
    issues (see e.g. gh-70309) with quality of libm's tgamma/lgamma implementations
@@ -952,6 +1093,11 @@ FUNC1D(acosh, acosh, 0,
       "acosh($module, x, /)\n--\n\n"
       "Return the inverse hyperbolic cosine of x.",
       "expected argument value not less than 1, got %s")
+FUNC1D(acospi, m_acospi, 0,
+      "acospi($module, x, /)\n--\n\n"
+      "Return the arc cosine (measured in half-turns) of x.\n\n"
+      "The result is between 0 and 1.",
+      "expected a number in range from -1 up to 1, got %s")
 FUNC1D(asin, asin, 0,
       "asin($module, x, /)\n--\n\n"
       "Return the arc sine (measured in radians) of x.\n\n"
@@ -960,6 +1106,11 @@ FUNC1D(asin, asin, 0,
 FUNC1(asinh, asinh, 0,
       "asinh($module, x, /)\n--\n\n"
       "Return the inverse hyperbolic sine of x.")
+FUNC1D(asinpi, m_asinpi, 0,
+      "asinpi($module, x, /)\n--\n\n"
+      "Return the arc sine (measured in half-turns) of x.\n\n"
+      "The result is between -1/2 and 1/2.",
+      "expected a number in range from -1 up to 1, got %s")
 FUNC1(atan, atan, 0,
       "atan($module, x, /)\n--\n\n"
       "Return the arc tangent (measured in radians) of x.\n\n"
@@ -968,10 +1119,19 @@ FUNC2(atan2, atan2,
       "atan2($module, y, x, /)\n--\n\n"
       "Return the arc tangent (measured in radians) of y/x.\n\n"
       "Unlike atan(y/x), the signs of both x and y are considered.")
+FUNC2(atan2pi, m_atan2pi,
+      "atan2pi($module, y, x, /)\n--\n\n"
+      "Return the arc tangent (measured in half-turns) of y/x.\n\n"
+      "Unlike atanpi(y/x), the signs of both x and y are considered.")
 FUNC1D(atanh, atanh, 0,
       "atanh($module, x, /)\n--\n\n"
       "Return the inverse hyperbolic tangent of x.",
       "expected a number between -1 and 1, got %s")
+FUNC1D(atanpi, m_atanpi, 0,
+      "atanpi($module, x, /)\n--\n\n"
+      "Return the arc tangent (measured in half-turns) of x.\n\n"
+      "The result is between 0 and 1.",
+      "expected a number in range from -1 up to 1, got %s")
 FUNC1(cbrt, cbrt, 0,
       "cbrt($module, x, /)\n--\n\n"
       "Return the cube root of x.")
@@ -1024,6 +1184,10 @@ FUNC1D(cos, cos, 0,
 FUNC1(cosh, cosh, 1,
       "cosh($module, x, /)\n--\n\n"
       "Return the hyperbolic cosine of x.")
+FUNC1D(cospi, m_cospi, 0,
+      "cospi($module, x, /)\n--\n\n"
+      "Return the cosine of x (measured in half-turns).",
+      "expected a finite input, got %s")
 FUNC1A(erf, erf,
        "erf($module, x, /)\n--\n\n"
        "Error function at x.")
@@ -1158,6 +1322,10 @@ FUNC1D(sin, sin, 0,
 FUNC1(sinh, sinh, 1,
       "sinh($module, x, /)\n--\n\n"
       "Return the hyperbolic sine of x.")
+FUNC1D(sinpi, m_sinpi, 0,
+      "sinpi($module, x, /)\n--\n\n"
+      "Return the sine of x (measured in half-turns).",
+      "expected a finite input, got %s")
 FUNC1D(sqrt, sqrt, 0,
       "sqrt($module, x, /)\n--\n\n"
       "Return the square root of x.",
@@ -1169,6 +1337,10 @@ FUNC1D(tan, tan, 0,
 FUNC1(tanh, tanh, 0,
       "tanh($module, x, /)\n--\n\n"
       "Return the hyperbolic tangent of x.")
+FUNC1D(tanpi, m_tanpi, 1,
+      "tanpi($module, x, /)\n--\n\n"
+      "Return the tangent of x (measured in half-turns).",
+      "expected a finite input, got %s")
 
 /* Precision summation function as msum() by Raymond Hettinger in
    <https://code.activestate.com/recipes/393090-binary-floating-point-summation-accurate-to-full-p/>,
@@ -3047,16 +3219,21 @@ math_exec(PyObject *module)
 static PyMethodDef math_methods[] = {
     {"acos",            math_acos,      METH_O,         math_acos_doc},
     {"acosh",           math_acosh,     METH_O,         math_acosh_doc},
+    {"acospi",          math_acospi,    METH_O,         math_acospi_doc},
     {"asin",            math_asin,      METH_O,         math_asin_doc},
     {"asinh",           math_asinh,     METH_O,         math_asinh_doc},
+    {"asinpi",          math_asinpi,    METH_O,         math_asinpi_doc},
     {"atan",            math_atan,      METH_O,         math_atan_doc},
     {"atan2",           _PyCFunction_CAST(math_atan2),     METH_FASTCALL,  math_atan2_doc},
     {"atanh",           math_atanh,     METH_O,         math_atanh_doc},
+    {"atan2pi",         _PyCFunction_CAST(math_atan2pi),   METH_FASTCALL,  math_atan2pi_doc},
+    {"atanpi",          math_atanpi,    METH_O,       math_atanpi_doc},
     {"cbrt",            math_cbrt,      METH_O,         math_cbrt_doc},
     MATH_CEIL_METHODDEF
     {"copysign",        _PyCFunction_CAST(math_copysign),  METH_FASTCALL,  math_copysign_doc},
     {"cos",             math_cos,       METH_O,         math_cos_doc},
     {"cosh",            math_cosh,      METH_O,         math_cosh_doc},
+    {"cospi",           math_cospi,     METH_O,         math_cospi_doc},
     MATH_DEGREES_METHODDEF
     MATH_DIST_METHODDEF
     {"erf",             math_erf,       METH_O,         math_erf_doc},
@@ -3093,9 +3270,11 @@ static PyMethodDef math_methods[] = {
     MATH_SIGNBIT_METHODDEF
     {"sin",             math_sin,       METH_O,         math_sin_doc},
     {"sinh",            math_sinh,      METH_O,         math_sinh_doc},
+    {"sinpi",           math_sinpi,     METH_O,         math_sinpi_doc},
     {"sqrt",            math_sqrt,      METH_O,         math_sqrt_doc},
     {"tan",             math_tan,       METH_O,         math_tan_doc},
     {"tanh",            math_tanh,      METH_O,         math_tanh_doc},
+    {"tanpi",           math_tanpi,     METH_O,         math_tanpi_doc},
     MATH_SUMPROD_METHODDEF
     MATH_TRUNC_METHODDEF
     MATH_PROD_METHODDEF
index 67e5b3e468280249647dd532298045f6f22c62fa..0cd98a193030dd52ef1a7e02e026c74876fb41b5 100755 (executable)
--- a/configure
+++ b/configure
@@ -642,6 +642,7 @@ ac_includes_default="\
 #endif"
 
 ac_header_c_list=
+ac_func_c_list=
 ac_subst_vars='LTLIBOBJS
 MODULE_BLOCK
 JIT_SHIM_BUILD_O
@@ -3421,6 +3422,13 @@ as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
 as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
 as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
 as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+as_fn_append ac_func_c_list " acospi HAVE_ACOSPI"
+as_fn_append ac_func_c_list " asinpi HAVE_ASINPI"
+as_fn_append ac_func_c_list " atanpi HAVE_ATANPI"
+as_fn_append ac_func_c_list " atan2pi HAVE_ATAN2PI"
+as_fn_append ac_func_c_list " cospi HAVE_COSPI"
+as_fn_append ac_func_c_list " sinpi HAVE_SINPI"
+as_fn_append ac_func_c_list " tanpi HAVE_TANPI"
 
 # Auxiliary files required by this configure script.
 ac_aux_files="install-sh config.guess config.sub"
@@ -27003,6 +27011,27 @@ esac
 fi
 
 done
+
+ac_func=
+for ac_item in $ac_func_c_list
+do
+  if test $ac_func; then
+    ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+    if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+      echo "#define $ac_item 1" >> confdefs.h
+    fi
+    ac_func=
+  else
+    ac_func=$ac_item
+  fi
+done
+
+
+
+
+
+
+
 LIBS=$LIBS_SAVE
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX semaphores are enabled" >&5
index cdff5ec78a5fb7523f3d48f376ec0cc134fcf350..d3320f0e45fe1464233f2d7b346cfa62798e7f51 100644 (file)
@@ -6367,6 +6367,8 @@ AC_CHECK_FUNCS(
   [],
   [AC_MSG_ERROR([Python requires C99 compatible libm])]
 )
+
+AC_CHECK_FUNCS_ONCE(acospi asinpi atanpi atan2pi cospi sinpi tanpi)
 LIBS=$LIBS_SAVE
 
 dnl For multiprocessing module, check that sem_open
index 7ef83fcd0b9e0bfc868b7dcda2d50b097655d34a..dc2404fe85fa232810834540ffdf54436d2e86f9 100644 (file)
@@ -55,6 +55,9 @@
 /* Define to 1 if you have the 'acosh' function. */
 #undef HAVE_ACOSH
 
+/* Define to 1 if you have the 'acospi' function. */
+#undef HAVE_ACOSPI
+
 /* struct addrinfo (netdb.h) */
 #undef HAVE_ADDRINFO
 
 /* Define to 1 if you have the 'asinh' function. */
 #undef HAVE_ASINH
 
+/* Define to 1 if you have the 'asinpi' function. */
+#undef HAVE_ASINPI
+
 /* Define to 1 if you have the <asm/types.h> header file. */
 #undef HAVE_ASM_TYPES_H
 
+/* Define to 1 if you have the 'atan2pi' function. */
+#undef HAVE_ATAN2PI
+
 /* Define to 1 if you have the 'atanh' function. */
 #undef HAVE_ATANH
 
+/* Define to 1 if you have the 'atanpi' function. */
+#undef HAVE_ATANPI
+
 /* Define to 1 if you have the 'backtrace' function. */
 #undef HAVE_BACKTRACE
 
 /* Define to 1 if you have the 'copy_file_range' function. */
 #undef HAVE_COPY_FILE_RANGE
 
+/* Define to 1 if you have the 'cospi' function. */
+#undef HAVE_COSPI
+
 /* Define to 1 if you have the 'ctermid' function. */
 #undef HAVE_CTERMID
 
 /* Define to 1 if you have the 'sigwaitinfo' function. */
 #undef HAVE_SIGWAITINFO
 
+/* Define to 1 if you have the 'sinpi' function. */
+#undef HAVE_SINPI
+
 /* Define to 1 if you have the 'snprintf' function. */
 #undef HAVE_SNPRINTF
 
 /* Define to 1 if you have the <sys/xattr.h> header file. */
 #undef HAVE_SYS_XATTR_H
 
+/* Define to 1 if you have the 'tanpi' function. */
+#undef HAVE_TANPI
+
 /* Define to 1 if you have the 'tcgetpgrp' function. */
 #undef HAVE_TCGETPGRP