-- Testcases for functions in cmath.
--
-- Each line takes the form:
--
-- <testid> <function> <input_value> -> <output_value> <flags>
--
-- where:
--
--   <testid> is a short name identifying the test,
--
--   <function> is the function to be tested (exp, cos, asinh, ...),
--
--   <input_value> is a pair of floats separated by whitespace
--     representing real and imaginary parts of a complex number, and
--
--   <output_value> is the expected (ideal) output value, again
--     represented as a pair of floats.
--
--   <flags> is a list of the floating-point flags required by C99
--
-- The possible flags are:
--
--   divide-by-zero : raised when a finite input gives a
--     mathematically infinite result.
--
--   overflow : raised when a finite input gives a finite result whose
--     real or imaginary part is too large to fit in the usual range
--     of an IEEE 754 double.
--
--   invalid : raised for invalid inputs.
--
--   ignore-real-sign : indicates that the sign of the real part of
--     the result is unspecified; if the real part of the result is
--     given as inf, then both -inf and inf should be accepted as
--     correct.
--
--   ignore-imag-sign : indicates that the sign of the imaginary part
--     of the result is unspecified.
--
-- Flags may appear in any order.
--
-- Lines beginning with '--' (like this one) start a comment, and are
-- ignored.  Blank lines, or lines containing only whitespace, are also
-- ignored.

-- The majority of the values below were computed with the help of
-- version 2.3 of the MPFR library for multiple-precision
-- floating-point computations with correct rounding.  All output
-- values in this file are (modulo yet-to-be-discovered bugs)
-- correctly rounded, provided that each input and output decimal
-- floating-point value below is interpreted as a representation of
-- the corresponding nearest IEEE 754 double-precision value.  See the
-- MPFR homepage at http://www.mpfr.org for more information about the
-- MPFR project.

-- A minority of the test cases were generated with the help of
-- mpmath 0.19 at 100 bit accuracy (http://mpmath.org) to improve
-- coverage of real functions with real-valued arguments. These are
-- used in test.test_math.MathTests.test_testfile, as well as in
-- test_cmath.


--------------------------
-- acos: Inverse cosine --
--------------------------

-- zeros
acos0000 acos 0.0 0.0 -> 1.5707963267948966 -0.0
acos0001 acos 0.0 -0.0 -> 1.5707963267948966 0.0
acos0002 acos -0.0 0.0 -> 1.5707963267948966 -0.0
acos0003 acos -0.0 -0.0 -> 1.5707963267948966 0.0

-- branch points: +/-1
acos0010 acos 1.0 0.0 -> 0.0 -0.0
acos0011 acos 1.0 -0.0 -> 0.0 0.0
acos0012 acos -1.0 0.0 -> 3.1415926535897931 -0.0
acos0013 acos -1.0 -0.0 -> 3.1415926535897931 0.0

-- values along both sides of real axis
acos0020 acos -9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0
acos0021 acos -9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0
acos0022 acos -1e-305 0.0 -> 1.5707963267948966 -0.0
acos0023 acos -1e-305 -0.0 -> 1.5707963267948966 0.0
acos0024 acos -1e-150 0.0 -> 1.5707963267948966 -0.0
acos0025 acos -1e-150 -0.0 -> 1.5707963267948966 0.0
acos0026 acos -9.9999999999999998e-17 0.0 -> 1.5707963267948968 -0.0
acos0027 acos -9.9999999999999998e-17 -0.0 -> 1.5707963267948968 0.0
acos0028 acos -0.001 0.0 -> 1.5717963269615634 -0.0
acos0029 acos -0.001 -0.0 -> 1.5717963269615634 0.0
acos0030 acos -0.57899999999999996 0.0 -> 2.1882979816120667 -0.0
acos0031 acos -0.57899999999999996 -0.0 -> 2.1882979816120667 0.0
acos0032 acos -0.99999999999999989 0.0 -> 3.1415926386886319 -0.0
acos0033 acos -0.99999999999999989 -0.0 -> 3.1415926386886319 0.0
acos0034 acos -1.0000000000000002 0.0 -> 3.1415926535897931 -2.1073424255447014e-08
acos0035 acos -1.0000000000000002 -0.0 -> 3.1415926535897931 2.1073424255447014e-08
acos0036 acos -1.0009999999999999 0.0 -> 3.1415926535897931 -0.044717633608306849
acos0037 acos -1.0009999999999999 -0.0 -> 3.1415926535897931 0.044717633608306849
acos0038 acos -2.0 0.0 -> 3.1415926535897931 -1.3169578969248168
acos0039 acos -2.0 -0.0 -> 3.1415926535897931 1.3169578969248168
acos0040 acos -23.0 0.0 -> 3.1415926535897931 -3.8281684713331012
acos0041 acos -23.0 -0.0 -> 3.1415926535897931 3.8281684713331012
acos0042 acos -10000000000000000.0 0.0 -> 3.1415926535897931 -37.534508668464674
acos0043 acos -10000000000000000.0 -0.0 -> 3.1415926535897931 37.534508668464674
acos0044 acos -9.9999999999999998e+149 0.0 -> 3.1415926535897931 -346.08091112966679
acos0045 acos -9.9999999999999998e+149 -0.0 -> 3.1415926535897931 346.08091112966679
acos0046 acos -1.0000000000000001e+299 0.0 -> 3.1415926535897931 -689.16608998577965
acos0047 acos -1.0000000000000001e+299 -0.0 -> 3.1415926535897931 689.16608998577965
acos0048 acos 9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0
acos0049 acos 9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0
acos0050 acos 1e-305 0.0 -> 1.5707963267948966 -0.0
acos0051 acos 1e-305 -0.0 -> 1.5707963267948966 0.0
acos0052 acos 1e-150 0.0 -> 1.5707963267948966 -0.0
acos0053 acos 1e-150 -0.0 -> 1.5707963267948966 0.0
acos0054 acos 9.9999999999999998e-17 0.0 -> 1.5707963267948966 -0.0
acos0055 acos 9.9999999999999998e-17 -0.0 -> 1.5707963267948966 0.0
acos0056 acos 0.001 0.0 -> 1.56979632662823 -0.0
acos0057 acos 0.001 -0.0 -> 1.56979632662823 0.0
acos0058 acos 0.57899999999999996 0.0 -> 0.95329467197772655 -0.0
acos0059 acos 0.57899999999999996 -0.0 -> 0.95329467197772655 0.0
acos0060 acos 0.99999999999999989 0.0 -> 1.4901161193847656e-08 -0.0
acos0061 acos 0.99999999999999989 -0.0 -> 1.4901161193847656e-08 0.0
acos0062 acos 1.0000000000000002 0.0 -> 0.0 -2.1073424255447014e-08
acos0063 acos 1.0000000000000002 -0.0 -> 0.0 2.1073424255447014e-08
acos0064 acos 1.0009999999999999 0.0 -> 0.0 -0.044717633608306849
acos0065 acos 1.0009999999999999 -0.0 -> 0.0 0.044717633608306849
acos0066 acos 2.0 0.0 -> 0.0 -1.3169578969248168
acos0067 acos 2.0 -0.0 -> 0.0 1.3169578969248168
acos0068 acos 23.0 0.0 -> 0.0 -3.8281684713331012
acos0069 acos 23.0 -0.0 -> 0.0 3.8281684713331012
acos0070 acos 10000000000000000.0 0.0 -> 0.0 -37.534508668464674
acos0071 acos 10000000000000000.0 -0.0 -> 0.0 37.534508668464674
acos0072 acos 9.9999999999999998e+149 0.0 -> 0.0 -346.08091112966679
acos0073 acos 9.9999999999999998e+149 -0.0 -> 0.0 346.08091112966679
acos0074 acos 1.0000000000000001e+299 0.0 -> 0.0 -689.16608998577965
acos0075 acos 1.0000000000000001e+299 -0.0 -> 0.0 689.16608998577965

-- random inputs
acos0100 acos -3.3307113324596682 -10.732007530863266 -> 1.8706085694482339 3.113986806554613
acos0101 acos -2863.952991743291 -2681013315.2571239 -> 1.5707973950301699 22.402607843274758
acos0102 acos -0.33072639793220088 -0.85055464658253055 -> 1.8219426895922601 0.79250166729311966
acos0103 acos -2.5722325842097802 -12.703940809821574 -> 1.7699942413107408 3.2565170156527325
acos0104 acos -42.495233785459583 -0.54039320751337161 -> 3.1288732573153304 4.4424815519735601
acos0105 acos -1.1363818625856401 9641.1325498630376 -> 1.5709141948820049 -9.8669410553254284
acos0106 acos -2.4398426824157866e-11 0.33002051890266165 -> 1.570796326818066 -0.32430578041578667
acos0107 acos -1.3521340428186552 2.9369737912076772 -> 1.9849059192339338 -1.8822893674117942
acos0108 acos -1.827364706477915 1.0355459232147557 -> 2.5732246307960032 -1.4090688267854969
acos0109 acos -0.25978373706403546 10.09712669185833 -> 1.5963940386378306 -3.0081673050196063
acos0110 acos 0.33561778471072551 -4587350.6823999118 -> 1.5707962536333251 16.031960402579539
acos0111 acos 0.49133444610998445 -0.8071422362990015 -> 1.1908761712801788 0.78573345813187867
acos0112 acos 0.42196734507823974 -2.4812965431745115 -> 1.414091186100692 1.651707260988172
acos0113 acos 2.961426210100655 -219.03295695248664 -> 1.5572768319822778 6.0824659885827304
acos0114 acos 2.886209063652641 -20.38011207220606 -> 1.4302765252297889 3.718201853147642
acos0115 acos 0.4180568075276509 1.4833433990823484 -> 1.3393834558303042 -1.2079847758301576
acos0116 acos 52.376111405924718 0.013930429001941001 -> 0.00026601761804024188 -4.6515066691204714
acos0117 acos 41637948387.625969 1.563418292894041 -> 3.7547918507883548e-11 -25.145424989809381
acos0118 acos 0.061226659122249526 0.8447234394615154 -> 1.5240280306367315 -0.76791798971140812
acos0119 acos 2.4480466420442959e+26 0.18002339201384662 -> 7.353756620564798e-28 -61.455650015996376

-- values near infinity
acos0200 acos 1.6206860518683021e+308 1.0308426226285283e+308 -> 0.56650826093826223 -710.54206874241561
acos0201 acos 1.2067735875070062e+308 -1.3429173724390276e+308 -> 0.83874369390864889 710.48017794027498
acos0202 acos -7.4130145132549047e+307 1.1759130543927645e+308 -> 2.1332729346478536 -710.21871115698752
acos0203 acos -8.6329426442257249e+307 -1.2316282952184133e+308 -> 2.1821511032444838 710.29752145697148
acos0204 acos 0.0 1.4289713855849746e+308 -> 1.5707963267948966 -710.24631069738996
acos0205 acos -0.0 1.3153524545987432e+308 -> 1.5707963267948966 -710.1634604787539
acos0206 acos 0.0 -9.6229037669269321e+307 -> 1.5707963267948966 709.85091679573691
acos0207 acos -0.0 -4.9783616421107088e+307 -> 1.5707963267948966 709.19187157911233
acos0208 acos 1.3937541925739389e+308 0.0 -> 0.0 -710.22135678707264
acos0209 acos 9.1362388967371536e+307 -0.0 -> 0.0 709.79901953124613
acos0210 acos -1.3457361220697436e+308 0.0 -> 3.1415926535897931 -710.18629698871848
acos0211 acos -5.4699090056144284e+307 -0.0 -> 3.1415926535897931 709.28603271085649
acos0212 acos 1.5880716932358901e+308 5.5638401252339929 -> 3.503519487773873e-308 -710.35187633140583
acos0213 acos 1.2497211663463164e+308 -3.0456477717911024 -> 2.4370618453197486e-308 710.11227628223412
acos0214 acos -9.9016224006029528e+307 4.9570427340789056 -> 3.1415926535897931 -709.87946935229468
acos0215 acos -1.5854071066874139e+308 -4.4233577741497783 -> 3.1415926535897931 710.35019704672004
acos0216 acos 9.3674623083647628 1.5209559051877979e+308 -> 1.5707963267948966 -710.30869484491086
acos0217 acos 8.1773832021784383 -6.6093445795000056e+307 -> 1.5707963267948966 709.4752552227792
acos0218 acos -3.1845935000665104 1.5768856396650893e+308 -> 1.5707963267948966 -710.34480761042687
acos0219 acos -1.0577303880953903 -6.4574626815735613e+307 -> 1.5707963267948966 709.45200719662046

-- values near 0
acos0220 acos 1.8566986970714045e-320 3.1867234156760402e-321 -> 1.5707963267948966 -3.1867234156760402e-321
acos0221 acos 7.9050503334599447e-323 -8.8931816251424378e-323 -> 1.5707963267948966 8.8931816251424378e-323
acos0222 acos -4.4465908125712189e-323 2.4654065097222727e-311 -> 1.5707963267948966 -2.4654065097222727e-311
acos0223 acos -6.1016916408192619e-311 -2.4703282292062327e-323 -> 1.5707963267948966 2.4703282292062327e-323
acos0224 acos 0.0 3.4305783621842729e-311 -> 1.5707963267948966 -3.4305783621842729e-311
acos0225 acos -0.0 1.6117409498633145e-319 -> 1.5707963267948966 -1.6117409498633145e-319
acos0226 acos 0.0 -4.9900630229965901e-322 -> 1.5707963267948966 4.9900630229965901e-322
acos0227 acos -0.0 -4.4889279210592818e-311 -> 1.5707963267948966 4.4889279210592818e-311
acos0228 acos 5.3297678681477214e-312 0.0 -> 1.5707963267948966 -0.0
acos0229 acos 6.2073425897211614e-313 -0.0 -> 1.5707963267948966 0.0
acos0230 acos -4.9406564584124654e-324 0.0 -> 1.5707963267948966 -0.0
acos0231 acos -1.7107517052899003e-318 -0.0 -> 1.5707963267948966 0.0

-- special values
acos1000 acos 0.0 0.0 -> 1.5707963267948966 -0.0
acos1001 acos 0.0 -0.0 -> 1.5707963267948966 0.0
acos1002 acos -0.0 0.0 -> 1.5707963267948966 -0.0
acos1003 acos -0.0 -0.0 -> 1.5707963267948966 0.0
acos1004 acos 0.0 nan -> 1.5707963267948966 nan
acos1005 acos -0.0 nan -> 1.5707963267948966 nan
acos1006 acos -2.3 inf -> 1.5707963267948966 -inf
acos1007 acos -0.0 inf -> 1.5707963267948966 -inf
acos1008 acos 0.0 inf -> 1.5707963267948966 -inf
acos1009 acos 2.3 inf -> 1.5707963267948966 -inf
acos1010 acos -2.3 nan -> nan nan
acos1011 acos 2.3 nan -> nan nan
acos1012 acos -inf 2.3 -> 3.1415926535897931 -inf
acos1013 acos -inf 0.0 -> 3.1415926535897931 -inf
acos1014 acos inf 2.3 -> 0.0 -inf
acos1015 acos inf 0.0 -> 0.0 -inf
acos1016 acos -inf inf -> 2.3561944901923448 -inf
acos1017 acos inf inf -> 0.78539816339744828 -inf
acos1018 acos inf nan -> nan inf                        ignore-imag-sign
acos1019 acos -inf nan -> nan inf                       ignore-imag-sign
acos1020 acos nan 0.0 -> nan nan
acos1021 acos nan 2.3 -> nan nan
acos1022 acos nan inf -> nan -inf
acos1023 acos nan nan -> nan nan
acos1024 acos -2.3 -inf -> 1.5707963267948966 inf
acos1025 acos -0.0 -inf -> 1.5707963267948966 inf
acos1026 acos 0.0 -inf -> 1.5707963267948966 inf
acos1027 acos 2.3 -inf -> 1.5707963267948966 inf
acos1028 acos -inf -2.3 -> 3.1415926535897931 inf
acos1029 acos -inf -0.0 -> 3.1415926535897931 inf
acos1030 acos inf -2.3 -> 0.0 inf
acos1031 acos inf -0.0 -> 0.0 inf
acos1032 acos -inf -inf -> 2.3561944901923448 inf
acos1033 acos inf -inf -> 0.78539816339744828 inf
acos1034 acos nan -0.0 -> nan nan
acos1035 acos nan -2.3 -> nan nan
acos1036 acos nan -inf -> nan inf


--------------------------------------
-- acosh: Inverse hyperbolic cosine --
--------------------------------------

-- zeros
acosh0000 acosh 0.0 0.0 -> 0.0 1.5707963267948966
acosh0001 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966
acosh0002 acosh -0.0 0.0 -> 0.0 1.5707963267948966
acosh0003 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966

-- branch points: +/-1
acosh0010 acosh 1.0 0.0 -> 0.0 0.0
acosh0011 acosh 1.0 -0.0 -> 0.0 -0.0
acosh0012 acosh -1.0 0.0 -> 0.0 3.1415926535897931
acosh0013 acosh -1.0 -0.0 -> 0.0 -3.1415926535897931

-- values along both sides of real axis
acosh0020 acosh -9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966
acosh0021 acosh -9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966
acosh0022 acosh -1e-305 0.0 -> 0.0 1.5707963267948966
acosh0023 acosh -1e-305 -0.0 -> 0.0 -1.5707963267948966
acosh0024 acosh -1e-150 0.0 -> 0.0 1.5707963267948966
acosh0025 acosh -1e-150 -0.0 -> 0.0 -1.5707963267948966
acosh0026 acosh -9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948968
acosh0027 acosh -9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948968
acosh0028 acosh -0.001 0.0 -> 0.0 1.5717963269615634
acosh0029 acosh -0.001 -0.0 -> 0.0 -1.5717963269615634
acosh0030 acosh -0.57899999999999996 0.0 -> 0.0 2.1882979816120667
acosh0031 acosh -0.57899999999999996 -0.0 -> 0.0 -2.1882979816120667
acosh0032 acosh -0.99999999999999989 0.0 -> 0.0 3.1415926386886319
acosh0033 acosh -0.99999999999999989 -0.0 -> 0.0 -3.1415926386886319
acosh0034 acosh -1.0000000000000002 0.0 -> 2.1073424255447014e-08 3.1415926535897931
acosh0035 acosh -1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -3.1415926535897931
acosh0036 acosh -1.0009999999999999 0.0 -> 0.044717633608306849 3.1415926535897931
acosh0037 acosh -1.0009999999999999 -0.0 -> 0.044717633608306849 -3.1415926535897931
acosh0038 acosh -2.0 0.0 -> 1.3169578969248168 3.1415926535897931
acosh0039 acosh -2.0 -0.0 -> 1.3169578969248168 -3.1415926535897931
acosh0040 acosh -23.0 0.0 -> 3.8281684713331012 3.1415926535897931
acosh0041 acosh -23.0 -0.0 -> 3.8281684713331012 -3.1415926535897931
acosh0042 acosh -10000000000000000.0 0.0 -> 37.534508668464674 3.1415926535897931
acosh0043 acosh -10000000000000000.0 -0.0 -> 37.534508668464674 -3.1415926535897931
acosh0044 acosh -9.9999999999999998e+149 0.0 -> 346.08091112966679 3.1415926535897931
acosh0045 acosh -9.9999999999999998e+149 -0.0 -> 346.08091112966679 -3.1415926535897931
acosh0046 acosh -1.0000000000000001e+299 0.0 -> 689.16608998577965 3.1415926535897931
acosh0047 acosh -1.0000000000000001e+299 -0.0 -> 689.16608998577965 -3.1415926535897931
acosh0048 acosh 9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966
acosh0049 acosh 9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966
acosh0050 acosh 1e-305 0.0 -> 0.0 1.5707963267948966
acosh0051 acosh 1e-305 -0.0 -> 0.0 -1.5707963267948966
acosh0052 acosh 1e-150 0.0 -> 0.0 1.5707963267948966
acosh0053 acosh 1e-150 -0.0 -> 0.0 -1.5707963267948966
acosh0054 acosh 9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948966
acosh0055 acosh 9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948966
acosh0056 acosh 0.001 0.0 -> 0.0 1.56979632662823
acosh0057 acosh 0.001 -0.0 -> 0.0 -1.56979632662823
acosh0058 acosh 0.57899999999999996 0.0 -> 0.0 0.95329467197772655
acosh0059 acosh 0.57899999999999996 -0.0 -> 0.0 -0.95329467197772655
acosh0060 acosh 0.99999999999999989 0.0 -> 0.0 1.4901161193847656e-08
acosh0061 acosh 0.99999999999999989 -0.0 -> 0.0 -1.4901161193847656e-08
acosh0062 acosh 1.0000000000000002 0.0 -> 2.1073424255447014e-08 0.0
acosh0063 acosh 1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -0.0
acosh0064 acosh 1.0009999999999999 0.0 -> 0.044717633608306849 0.0
acosh0065 acosh 1.0009999999999999 -0.0 -> 0.044717633608306849 -0.0
acosh0066 acosh 2.0 0.0 -> 1.3169578969248168 0.0
acosh0067 acosh 2.0 -0.0 -> 1.3169578969248168 -0.0
acosh0068 acosh 23.0 0.0 -> 3.8281684713331012 0.0
acosh0069 acosh 23.0 -0.0 -> 3.8281684713331012 -0.0
acosh0070 acosh 10000000000000000.0 0.0 -> 37.534508668464674 0.0
acosh0071 acosh 10000000000000000.0 -0.0 -> 37.534508668464674 -0.0
acosh0072 acosh 9.9999999999999998e+149 0.0 -> 346.08091112966679 0.0
acosh0073 acosh 9.9999999999999998e+149 -0.0 -> 346.08091112966679 -0.0
acosh0074 acosh 1.0000000000000001e+299 0.0 -> 689.16608998577965 0.0
acosh0075 acosh 1.0000000000000001e+299 -0.0 -> 689.16608998577965 -0.0

-- random inputs
acosh0100 acosh -1.4328589581250843 -1.8370347775558309 -> 1.5526962646549587 -2.190250168435786
acosh0101 acosh -0.31075819156220957 -1.0772555786839297 -> 0.95139168286193709 -1.7812228089636479
acosh0102 acosh -1.9044776578070453 -20.485370158932124 -> 3.7177411088932359 -1.6633888745861227
acosh0103 acosh -0.075642506000858742 -21965976320.873051 -> 24.505907742881991 -1.5707963267983402
acosh0104 acosh -1.6162271181056307 -3.0369343458696099 -> 1.9407057262861227 -2.0429549461750209
acosh0105 acosh -0.3103780280298063 0.00018054880018078987 -> 0.00018992877058761416 1.886386995096728
acosh0106 acosh -9159468751.5897655 5.8014747664273649 -> 23.631201197959193 3.1415926529564078
acosh0107 acosh -0.037739157550933884 0.21841357493510705 -> 0.21685844960602488 1.6076735133449402
acosh0108 acosh -8225991.0508394297 0.28318543008913644 -> 16.615956520420287 3.1415926191641019
acosh0109 acosh -35.620070502302639 0.31303237005015 -> 4.2658980006943965 3.1328013255541873
acosh0110 acosh 96.729939906820917 -0.029345228372365334 -> 5.2650434775863548 -0.00030338895866972843
acosh0111 acosh 0.59656024007966491 -2.0412294654163978 -> 1.4923002024287835 -1.312568421900338
acosh0112 acosh 109.29384112677828 -0.00015454863061533812 -> 5.3871662961545477 -1.4141245154061214e-06
acosh0113 acosh 8.6705651969361597 -3.6723631649787465 -> 2.9336180958363545 -0.40267362031872861
acosh0114 acosh 1.8101646445052686 -0.012345132721855478 -> 1.1997148566285769 -0.0081813912760150265
acosh0115 acosh 52.56897195025288 0.001113916065985443 -> 4.6551827622264135 2.1193445872040307e-05
acosh0116 acosh 0.28336786164214739 355643992457.40485 -> 27.290343226816528 1.5707963267940999
acosh0117 acosh 0.73876621291911437 2.8828594541104322e-20 -> 4.2774820978159067e-20 0.73955845836827927
acosh0118 acosh 0.025865471781718878 37125746064318.492 -> 31.938478989418012 1.5707963267948959
acosh0119 acosh 2.2047353511780132 0.074712248143489271 -> 1.4286403248698021 0.037997904971626598

-- values near infinity
acosh0200 acosh 8.1548592876467785e+307 9.0943779335951128e+307 -> 710.08944620800605 0.83981165425478954
acosh0201 acosh 1.4237229680972531e+308 -1.0336966617874858e+308 -> 710.4543331094759 -0.6279972876348755
acosh0202 acosh -1.5014526899738939e+308 1.5670700378448792e+308 -> 710.66420706795464 2.3348137299106697
acosh0203 acosh -1.0939040375213928e+308 -1.0416960351127978e+308 -> 710.30182863115886 -2.380636147787027
acosh0204 acosh 0.0 1.476062433559588e+308 -> 710.27873384716929 1.5707963267948966
acosh0205 acosh -0.0 6.2077210326221094e+307 -> 709.41256457484769 1.5707963267948966
acosh0206 acosh 0.0 -1.5621899909968308e+308 -> 710.33544449990734 -1.5707963267948966
acosh0207 acosh -0.0 -8.3556624833839122e+307 -> 709.70971018048317 -1.5707963267948966
acosh0208 acosh 1.3067079752499342e+308 0.0 -> 710.15686680107228 0.0
acosh0209 acosh 1.5653640340214026e+308 -0.0 -> 710.33747422926706 -0.0
acosh0210 acosh -6.9011375992290636e+307 0.0 -> 709.51845699719922 3.1415926535897931
acosh0211 acosh -9.9539576809926973e+307 -0.0 -> 709.88474095870185 -3.1415926535897931
acosh0212 acosh 7.6449598518914925e+307 9.5706540768268358 -> 709.62081731754802 1.2518906916769345e-307
acosh0213 acosh 5.4325410972602197e+307 -7.8064807816522706 -> 709.279177727925 -1.4369851312471974e-307
acosh0214 acosh -1.1523626112360465e+308 7.0617510038869336 -> 710.03117010216909 3.1415926535897931
acosh0215 acosh -1.1685027786862599e+308 -5.1568558357925625 -> 710.04507907571417 -3.1415926535897931
acosh0216 acosh 3.0236370339788721 1.7503248720096417e+308 -> 710.44915723458064 1.5707963267948966
acosh0217 acosh 6.6108007926031149 -9.1469968225806149e+307 -> 709.80019633903328 -1.5707963267948966
acosh0218 acosh -5.1096262905623959 6.4484926785412395e+307 -> 709.45061713997973 1.5707963267948966
acosh0219 acosh -2.8080920608735846 -1.7716118836519368e+308 -> 710.46124562363445 -1.5707963267948966

-- values near 0
acosh0220 acosh 4.5560530326699304e-317 7.3048989121436657e-318 -> 7.3048989121436657e-318 1.5707963267948966
acosh0221 acosh 4.8754274133585331e-314 -9.8469794897684199e-315 -> 9.8469794897684199e-315 -1.5707963267948966
acosh0222 acosh -4.6748876009960097e-312 9.7900342887557606e-318 -> 9.7900342887557606e-318 1.5707963267948966
acosh0223 acosh -4.3136871538399236e-320 -4.9406564584124654e-323 -> 4.9406564584124654e-323 -1.5707963267948966
acosh0224 acosh 0.0 4.3431013866496774e-314 -> 4.3431013866496774e-314 1.5707963267948966
acosh0225 acosh -0.0 6.0147334335829184e-317 -> 6.0147334335829184e-317 1.5707963267948966
acosh0226 acosh 0.0 -1.2880291387081297e-320 -> 1.2880291387081297e-320 -1.5707963267948966
acosh0227 acosh -0.0 -1.4401563976534621e-317 -> 1.4401563976534621e-317 -1.5707963267948966
acosh0228 acosh 1.3689680570863091e-313 0.0 -> 0.0 1.5707963267948966
acosh0229 acosh 1.5304346893494371e-312 -0.0 -> 0.0 -1.5707963267948966
acosh0230 acosh -3.7450175954766488e-320 0.0 -> 0.0 1.5707963267948966
acosh0231 acosh -8.4250563080885801e-311 -0.0 -> 0.0 -1.5707963267948966

-- special values
acosh1000 acosh 0.0 0.0 -> 0.0 1.5707963267948966
acosh1001 acosh -0.0 0.0 -> 0.0 1.5707963267948966
acosh1002 acosh 0.0 inf -> inf 1.5707963267948966
acosh1003 acosh 2.3 inf -> inf 1.5707963267948966
acosh1004 acosh -0.0 inf -> inf 1.5707963267948966
acosh1005 acosh -2.3 inf -> inf 1.5707963267948966
acosh1006 acosh 0.0 nan -> nan nan
acosh1007 acosh 2.3 nan -> nan nan
acosh1008 acosh -0.0 nan -> nan nan
acosh1009 acosh -2.3 nan -> nan nan
acosh1010 acosh -inf 0.0 -> inf 3.1415926535897931
acosh1011 acosh -inf 2.3 -> inf 3.1415926535897931
acosh1012 acosh inf 0.0 -> inf 0.0
acosh1013 acosh inf 2.3 -> inf 0.0
acosh1014 acosh -inf inf -> inf 2.3561944901923448
acosh1015 acosh inf inf -> inf 0.78539816339744828
acosh1016 acosh inf nan -> inf nan
acosh1017 acosh -inf nan -> inf nan
acosh1018 acosh nan 0.0 -> nan nan
acosh1019 acosh nan 2.3 -> nan nan
acosh1020 acosh nan inf -> inf nan
acosh1021 acosh nan nan -> nan nan
acosh1022 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966
acosh1023 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966
acosh1024 acosh 0.0 -inf -> inf -1.5707963267948966
acosh1025 acosh 2.3 -inf -> inf -1.5707963267948966
acosh1026 acosh -0.0 -inf -> inf -1.5707963267948966
acosh1027 acosh -2.3 -inf -> inf -1.5707963267948966
acosh1028 acosh -inf -0.0 -> inf -3.1415926535897931
acosh1029 acosh -inf -2.3 -> inf -3.1415926535897931
acosh1030 acosh inf -0.0 -> inf -0.0
acosh1031 acosh inf -2.3 -> inf -0.0
acosh1032 acosh -inf -inf -> inf -2.3561944901923448
acosh1033 acosh inf -inf -> inf -0.78539816339744828
acosh1034 acosh nan -0.0 -> nan nan
acosh1035 acosh nan -2.3 -> nan nan
acosh1036 acosh nan -inf -> inf nan


------------------------
-- asin: Inverse sine --
------------------------

-- zeros
asin0000 asin 0.0 0.0 -> 0.0 0.0
asin0001 asin 0.0 -0.0 -> 0.0 -0.0
asin0002 asin -0.0 0.0 -> -0.0 0.0
asin0003 asin -0.0 -0.0 -> -0.0 -0.0

-- branch points: +/-1
asin0010 asin 1.0 0.0 -> 1.5707963267948966 0.0
asin0011 asin 1.0 -0.0 -> 1.5707963267948966 -0.0
asin0012 asin -1.0 0.0 -> -1.5707963267948966 0.0
asin0013 asin -1.0 -0.0 -> -1.5707963267948966 -0.0

-- values along both sides of real axis
asin0020 asin -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0
asin0021 asin -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0
asin0022 asin -1e-305 0.0 -> -1e-305 0.0
asin0023 asin -1e-305 -0.0 -> -1e-305 -0.0
asin0024 asin -1e-150 0.0 -> -1e-150 0.0
asin0025 asin -1e-150 -0.0 -> -1e-150 -0.0
asin0026 asin -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0
asin0027 asin -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0
asin0028 asin -0.001 0.0 -> -0.0010000001666667416 0.0
asin0029 asin -0.001 -0.0 -> -0.0010000001666667416 -0.0
asin0030 asin -0.57899999999999996 0.0 -> -0.61750165481717001 0.0
asin0031 asin -0.57899999999999996 -0.0 -> -0.61750165481717001 -0.0
asin0032 asin -0.99999999999999989 0.0 -> -1.5707963118937354 0.0
asin0033 asin -0.99999999999999989 -0.0 -> -1.5707963118937354 -0.0
asin0034 asin -1.0000000000000002 0.0 -> -1.5707963267948966 2.1073424255447014e-08
asin0035 asin -1.0000000000000002 -0.0 -> -1.5707963267948966 -2.1073424255447014e-08
asin0036 asin -1.0009999999999999 0.0 -> -1.5707963267948966 0.044717633608306849
asin0037 asin -1.0009999999999999 -0.0 -> -1.5707963267948966 -0.044717633608306849
asin0038 asin -2.0 0.0 -> -1.5707963267948966 1.3169578969248168
asin0039 asin -2.0 -0.0 -> -1.5707963267948966 -1.3169578969248168
asin0040 asin -23.0 0.0 -> -1.5707963267948966 3.8281684713331012
asin0041 asin -23.0 -0.0 -> -1.5707963267948966 -3.8281684713331012
asin0042 asin -10000000000000000.0 0.0 -> -1.5707963267948966 37.534508668464674
asin0043 asin -10000000000000000.0 -0.0 -> -1.5707963267948966 -37.534508668464674
asin0044 asin -9.9999999999999998e+149 0.0 -> -1.5707963267948966 346.08091112966679
asin0045 asin -9.9999999999999998e+149 -0.0 -> -1.5707963267948966 -346.08091112966679
asin0046 asin -1.0000000000000001e+299 0.0 -> -1.5707963267948966 689.16608998577965
asin0047 asin -1.0000000000000001e+299 -0.0 -> -1.5707963267948966 -689.16608998577965
asin0048 asin 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0
asin0049 asin 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0
asin0050 asin 1e-305 0.0 -> 1e-305 0.0
asin0051 asin 1e-305 -0.0 -> 1e-305 -0.0
asin0052 asin 1e-150 0.0 -> 1e-150 0.0
asin0053 asin 1e-150 -0.0 -> 1e-150 -0.0
asin0054 asin 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0
asin0055 asin 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0
asin0056 asin 0.001 0.0 -> 0.0010000001666667416 0.0
asin0057 asin 0.001 -0.0 -> 0.0010000001666667416 -0.0
asin0058 asin 0.57899999999999996 0.0 -> 0.61750165481717001 0.0
asin0059 asin 0.57899999999999996 -0.0 -> 0.61750165481717001 -0.0
asin0060 asin 0.99999999999999989 0.0 -> 1.5707963118937354 0.0
asin0061 asin 0.99999999999999989 -0.0 -> 1.5707963118937354 -0.0
asin0062 asin 1.0000000000000002 0.0 -> 1.5707963267948966 2.1073424255447014e-08
asin0063 asin 1.0000000000000002 -0.0 -> 1.5707963267948966 -2.1073424255447014e-08
asin0064 asin 1.0009999999999999 0.0 -> 1.5707963267948966 0.044717633608306849
asin0065 asin 1.0009999999999999 -0.0 -> 1.5707963267948966 -0.044717633608306849
asin0066 asin 2.0 0.0 -> 1.5707963267948966 1.3169578969248168
asin0067 asin 2.0 -0.0 -> 1.5707963267948966 -1.3169578969248168
asin0068 asin 23.0 0.0 -> 1.5707963267948966 3.8281684713331012
asin0069 asin 23.0 -0.0 -> 1.5707963267948966 -3.8281684713331012
asin0070 asin 10000000000000000.0 0.0 -> 1.5707963267948966 37.534508668464674
asin0071 asin 10000000000000000.0 -0.0 -> 1.5707963267948966 -37.534508668464674
asin0072 asin 9.9999999999999998e+149 0.0 -> 1.5707963267948966 346.08091112966679
asin0073 asin 9.9999999999999998e+149 -0.0 -> 1.5707963267948966 -346.08091112966679
asin0074 asin 1.0000000000000001e+299 0.0 -> 1.5707963267948966 689.16608998577965
asin0075 asin 1.0000000000000001e+299 -0.0 -> 1.5707963267948966 -689.16608998577965

-- random inputs
asin0100 asin -1.5979555835086083 -0.15003009814595247 -> -1.4515369557405788 -1.0544476399790823
asin0101 asin -0.57488225895317679 -9.6080397838952743e-13 -> -0.61246024460412851 -1.174238005400403e-12
asin0102 asin -3.6508087930516249 -0.36027527093220152 -> -1.4685890605305874 -1.9742273007152038
asin0103 asin -1.5238659792326819 -1.1360813516996364 -> -0.86080051691147275 -1.3223742205689195
asin0104 asin -1592.0639045555306 -0.72362427935018236 -> -1.5703418071175179 -8.0659336918729228
asin0105 asin -0.19835471371312019 4.2131508416697709 -> -0.045777831019935149 2.1461732751933171
asin0106 asin -1.918471054430213 0.40603305079779234 -> -1.3301396585791556 1.30263642314981
asin0107 asin -254495.01623373642 0.71084414434470822 -> -1.5707935336394359 13.140183712762321
asin0108 asin -0.31315882715691157 3.9647994288429866 -> -0.076450403840916004 2.0889762138713457
asin0109 asin -0.90017064284720816 1.2530659485907105 -> -0.53466509741943447 1.1702811557577
asin0110 asin 2.1615181696571075 -0.14058647488229523 -> 1.4976166323896871 -1.4085811039334604
asin0111 asin 1.2104749210707795 -0.85732484485298999 -> 0.83913071588343924 -1.0681719250525901
asin0112 asin 1.7059733185128891 -0.84032966373156581 -> 1.0510900815816229 -1.2967979791361652
asin0113 asin 9.9137085017290687 -1.4608383970250893 -> 1.4237704820128891 -2.995414677560686
asin0114 asin 117.12344751041495 -5453908091.5334015 -> 2.1475141411392012e-08 -23.112745450217066
asin0115 asin 0.081041187798029227 0.067054349860173196 -> 0.080946786856771813 0.067223991060639698
asin0116 asin 46.635472322049949 2.3835190718056678 -> 1.5197194940010779 4.5366989600972083
asin0117 asin 3907.0687961127105 19.144021886390181 -> 1.5658965233083235 8.9637018715924217
asin0118 asin 1.0889312322308273 509.01577883554768 -> 0.0021392803817829316 6.9256294494524706
asin0119 asin 0.10851518277509224 1.5612510908217476 -> 0.058491014243902621 1.2297075725621327

-- values near infinity
asin0200 asin 1.5230241998821499e+308 5.5707228994084525e+307 -> 1.2201446370892068 710.37283486535966
asin0201 asin 8.1334317698672204e+307 -9.2249425197872451e+307 -> 0.72259991284020042 -710.0962453049026
asin0202 asin -9.9138506659241768e+307 6.701544526434995e+307 -> -0.97637511742194594 710.06887486671371
asin0203 asin -1.4141298868173842e+308 -5.401505134514191e+307 -> -1.2059319055160587 -710.30396478954628
asin0204 asin 0.0 9.1618092977897431e+307 -> 0.0 709.80181441050593
asin0205 asin -0.0 6.8064342551939755e+307 -> -0.0 709.50463910853489
asin0206 asin 0.0 -6.4997516454798215e+307 -> 0.0 -709.45853469751592
asin0207 asin -0.0 -1.6767449053345242e+308 -> -0.0 -710.4062101803022
asin0208 asin 5.4242749957378916e+307 0.0 -> 1.5707963267948966 709.27765497888902
asin0209 asin 9.5342145121164749e+307 -0.0 -> 1.5707963267948966 -709.84165758595907
asin0210 asin -7.0445698006201847e+307 0.0 -> -1.5707963267948966 709.53902780872136
asin0211 asin -1.0016025569769706e+308 -0.0 -> -1.5707963267948966 -709.89095709697881
asin0212 asin 1.6552203778877204e+308 0.48761543336249491 -> 1.5707963267948966 710.39328998153474
asin0213 asin 1.2485712830384869e+308 -4.3489311161278899 -> 1.5707963267948966 -710.1113557467786
asin0214 asin -1.5117842813353125e+308 5.123452666102434 -> -1.5707963267948966 710.30264641923031
asin0215 asin -1.3167634313008016e+308 -0.52939679793528982 -> -1.5707963267948966 -710.16453260239768
asin0216 asin 0.80843929176985907 1.0150851827767876e+308 -> 7.9642507396113875e-309 709.90432835561637
asin0217 asin 8.2544809829680901 -1.7423548140539474e+308 -> 4.7375430746865733e-308 -710.44459336242164
asin0218 asin -5.2499000118824295 4.6655578977512214e+307 -> -1.1252459249113292e-307 709.1269781491103
asin0219 asin -5.9904782760833433 -4.7315689314781163e+307 -> -1.2660659419394637e-307 -709.14102757522312

-- special values
asin1000 asin -0.0 0.0 -> -0.0 0.0
asin1001 asin 0.0 0.0 -> 0.0 0.0
asin1002 asin -0.0 -0.0 -> -0.0 -0.0
asin1003 asin 0.0 -0.0 -> 0.0 -0.0
asin1004 asin -inf 0.0 -> -1.5707963267948966 inf
asin1005 asin -inf 2.2999999999999998 -> -1.5707963267948966 inf
asin1006 asin nan 0.0 -> nan nan
asin1007 asin nan 2.2999999999999998 -> nan nan
asin1008 asin -0.0 inf -> -0.0 inf
asin1009 asin -2.2999999999999998 inf -> -0.0 inf
asin1010 asin -inf inf -> -0.78539816339744828 inf
asin1011 asin nan inf -> nan inf
asin1012 asin -0.0 nan -> -0.0 nan
asin1013 asin -2.2999999999999998 nan -> nan nan
asin1014 asin -inf nan -> nan inf ignore-imag-sign
asin1015 asin nan nan -> nan nan
asin1016 asin inf 0.0 -> 1.5707963267948966 inf
asin1017 asin inf 2.2999999999999998 -> 1.5707963267948966 inf
asin1018 asin 0.0 inf -> 0.0 inf
asin1019 asin 2.2999999999999998 inf -> 0.0 inf
asin1020 asin inf inf -> 0.78539816339744828 inf
asin1021 asin 0.0 nan -> 0.0 nan
asin1022 asin 2.2999999999999998 nan -> nan nan
asin1023 asin inf nan -> nan inf ignore-imag-sign
asin1024 asin inf -0.0 -> 1.5707963267948966 -inf
asin1025 asin inf -2.2999999999999998 -> 1.5707963267948966 -inf
asin1026 asin nan -0.0 -> nan nan
asin1027 asin nan -2.2999999999999998 -> nan nan
asin1028 asin 0.0 -inf -> 0.0 -inf
asin1029 asin 2.2999999999999998 -inf -> 0.0 -inf
asin1030 asin inf -inf -> 0.78539816339744828 -inf
asin1031 asin nan -inf -> nan -inf
asin1032 asin -inf -0.0 -> -1.5707963267948966 -inf
asin1033 asin -inf -2.2999999999999998 -> -1.5707963267948966 -inf
asin1034 asin -0.0 -inf -> -0.0 -inf
asin1035 asin -2.2999999999999998 -inf -> -0.0 -inf
asin1036 asin -inf -inf -> -0.78539816339744828 -inf


------------------------------------
-- asinh: Inverse hyperbolic sine --
------------------------------------

-- zeros
asinh0000 asinh 0.0 0.0 -> 0.0 0.0
asinh0001 asinh 0.0 -0.0 -> 0.0 -0.0
asinh0002 asinh -0.0 0.0 -> -0.0 0.0
asinh0003 asinh -0.0 -0.0 -> -0.0 -0.0

-- branch points: +/-i
asinh0010 asinh 0.0 1.0 -> 0.0 1.5707963267948966
asinh0011 asinh 0.0 -1.0 -> 0.0 -1.5707963267948966
asinh0012 asinh -0.0 1.0 -> -0.0 1.5707963267948966
asinh0013 asinh -0.0 -1.0 -> -0.0 -1.5707963267948966

-- values along both sides of imaginary axis
asinh0020 asinh 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324
asinh0021 asinh -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324
asinh0022 asinh 0.0 -1e-305 -> 0.0 -1e-305
asinh0023 asinh -0.0 -1e-305 -> -0.0 -1e-305
asinh0024 asinh 0.0 -1e-150 -> 0.0 -1e-150
asinh0025 asinh -0.0 -1e-150 -> -0.0 -1e-150
asinh0026 asinh 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17
asinh0027 asinh -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17
asinh0028 asinh 0.0 -0.001 -> 0.0 -0.0010000001666667416
asinh0029 asinh -0.0 -0.001 -> -0.0 -0.0010000001666667416
asinh0030 asinh 0.0 -0.57899999999999996 -> 0.0 -0.61750165481717001
asinh0031 asinh -0.0 -0.57899999999999996 -> -0.0 -0.61750165481717001
asinh0032 asinh 0.0 -0.99999999999999989 -> 0.0 -1.5707963118937354
asinh0033 asinh -0.0 -0.99999999999999989 -> -0.0 -1.5707963118937354
asinh0034 asinh 0.0 -1.0000000000000002 -> 2.1073424255447014e-08 -1.5707963267948966
asinh0035 asinh -0.0 -1.0000000000000002 -> -2.1073424255447014e-08 -1.5707963267948966
asinh0036 asinh 0.0 -1.0009999999999999 -> 0.044717633608306849 -1.5707963267948966
asinh0037 asinh -0.0 -1.0009999999999999 -> -0.044717633608306849 -1.5707963267948966
asinh0038 asinh 0.0 -2.0 -> 1.3169578969248168 -1.5707963267948966
asinh0039 asinh -0.0 -2.0 -> -1.3169578969248168 -1.5707963267948966
asinh0040 asinh 0.0 -20.0 -> 3.6882538673612966 -1.5707963267948966
asinh0041 asinh -0.0 -20.0 -> -3.6882538673612966 -1.5707963267948966
asinh0042 asinh 0.0 -10000000000000000.0 -> 37.534508668464674 -1.5707963267948966
asinh0043 asinh -0.0 -10000000000000000.0 -> -37.534508668464674 -1.5707963267948966
asinh0044 asinh 0.0 -9.9999999999999998e+149 -> 346.08091112966679 -1.5707963267948966
asinh0045 asinh -0.0 -9.9999999999999998e+149 -> -346.08091112966679 -1.5707963267948966
asinh0046 asinh 0.0 -1.0000000000000001e+299 -> 689.16608998577965 -1.5707963267948966
asinh0047 asinh -0.0 -1.0000000000000001e+299 -> -689.16608998577965 -1.5707963267948966
asinh0048 asinh 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324
asinh0049 asinh -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324
asinh0050 asinh 0.0 1e-305 -> 0.0 1e-305
asinh0051 asinh -0.0 1e-305 -> -0.0 1e-305
asinh0052 asinh 0.0 1e-150 -> 0.0 1e-150
asinh0053 asinh -0.0 1e-150 -> -0.0 1e-150
asinh0054 asinh 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17
asinh0055 asinh -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17
asinh0056 asinh 0.0 0.001 -> 0.0 0.0010000001666667416
asinh0057 asinh -0.0 0.001 -> -0.0 0.0010000001666667416
asinh0058 asinh 0.0 0.57899999999999996 -> 0.0 0.61750165481717001
asinh0059 asinh -0.0 0.57899999999999996 -> -0.0 0.61750165481717001
asinh0060 asinh 0.0 0.99999999999999989 -> 0.0 1.5707963118937354
asinh0061 asinh -0.0 0.99999999999999989 -> -0.0 1.5707963118937354
asinh0062 asinh 0.0 1.0000000000000002 -> 2.1073424255447014e-08 1.5707963267948966
asinh0063 asinh -0.0 1.0000000000000002 -> -2.1073424255447014e-08 1.5707963267948966
asinh0064 asinh 0.0 1.0009999999999999 -> 0.044717633608306849 1.5707963267948966
asinh0065 asinh -0.0 1.0009999999999999 -> -0.044717633608306849 1.5707963267948966
asinh0066 asinh 0.0 2.0 -> 1.3169578969248168 1.5707963267948966
asinh0067 asinh -0.0 2.0 -> -1.3169578969248168 1.5707963267948966
asinh0068 asinh 0.0 20.0 -> 3.6882538673612966 1.5707963267948966
asinh0069 asinh -0.0 20.0 -> -3.6882538673612966 1.5707963267948966
asinh0070 asinh 0.0 10000000000000000.0 -> 37.534508668464674 1.5707963267948966
asinh0071 asinh -0.0 10000000000000000.0 -> -37.534508668464674 1.5707963267948966
asinh0072 asinh 0.0 9.9999999999999998e+149 -> 346.08091112966679 1.5707963267948966
asinh0073 asinh -0.0 9.9999999999999998e+149 -> -346.08091112966679 1.5707963267948966
asinh0074 asinh 0.0 1.0000000000000001e+299 -> 689.16608998577965 1.5707963267948966
asinh0075 asinh -0.0 1.0000000000000001e+299 -> -689.16608998577965 1.5707963267948966

-- random inputs
asinh0100 asinh -0.5946402853710423 -0.044506548910000145 -> -0.56459775392653022 -0.038256221441536356
asinh0101 asinh -0.19353958046180916 -0.017489624793193454 -> -0.19237926804196651 -0.017171741895336792
asinh0102 asinh -0.033117585138955893 -8.5256414015933757 -> -2.8327758348650969 -1.5668848791092411
asinh0103 asinh -1.5184043184035716 -0.73491245339073275 -> -1.2715891419764005 -0.39204624408542355
asinh0104 asinh -0.60716120271208818 -0.28900743958436542 -> -0.59119299421187232 -0.24745931678118135
asinh0105 asinh -0.0237177865112429 2.8832601052166313 -> -1.7205820772413236 1.5620261702963094
asinh0106 asinh -2.3906812342743979 2.6349216848574013 -> -1.9609636249445124 0.8142142660574706
asinh0107 asinh -0.0027605019787620517 183.85588476550555 -> -5.9072920005445066 1.5707813120847871
asinh0108 asinh -0.99083661164404713 0.028006797051617648 -> -0.8750185251283995 0.019894099615994653
asinh0109 asinh -3.0362951937986393 0.86377266758504867 -> -1.8636030714685221 0.26475058859950168
asinh0110 asinh 0.34438464536152769 -0.71603790174885029 -> 0.43985415690734164 -0.71015037409294324
asinh0111 asinh 4.4925124413876256 -60604595352.871613 -> 25.520783738612078 -1.5707963267207683
asinh0112 asinh 2.3213991428170337 -7.5459667007307258 -> 2.7560464993451643 -1.270073210856117
asinh0113 asinh 0.21291939741682028 -1.2720428814784408 -> 0.77275088137338266 -1.3182099250896895
asinh0114 asinh 6.6447359379455957 -0.97196191666946996 -> 2.602830695139672 -0.14368247412319965
asinh0115 asinh 7.1326256655083746 2.1516360452706857 -> 2.7051146374367212 0.29051701669727581
asinh0116 asinh 0.18846550905063442 3.4705348585339832 -> 1.917697875799296 1.514155593347924
asinh0117 asinh 0.19065075303281598 0.26216814548222012 -> 0.19603050785932474 0.26013422809614117
asinh0118 asinh 2.0242004665739719 0.70510281647495787 -> 1.4970366212896002 0.30526007200481453
asinh0119 asinh 37.336596461576057 717.29157391678234 -> 7.269981997945294 1.5187910219576033

-- values near infinity
asinh0200 asinh 1.0760517500874541e+308 1.1497786241240167e+308 -> 710.34346055651815 0.81850936961793475
asinh0201 asinh 1.1784839328845529e+308 -1.6478429586716638e+308 -> 710.59536255783678 -0.94996311735607697
asinh0202 asinh -4.8777682248909193e+307 1.4103736217538474e+308 -> -710.28970147376992 1.2378239519096443
asinh0203 asinh -1.2832478903233108e+308 -1.5732392613155698e+308 -> -710.59750164290745 -0.88657181439322452
asinh0204 asinh 0.0 6.8431383856345372e+307 -> 709.51001718444604 1.5707963267948966
asinh0205 asinh -0.0 8.601822432238051e+307 -> -709.73874482126689 1.5707963267948966
asinh0206 asinh 0.0 -5.5698396067303782e+307 -> 709.30413698733742 -1.5707963267948966
asinh0207 asinh -0.0 -7.1507777734621804e+307 -> -709.55399186002705 -1.5707963267948966
asinh0208 asinh 1.6025136110019349e+308 0.0 -> 710.3609292261076 0.0
asinh0209 asinh 1.3927819858239114e+308 -0.0 -> 710.22065899832899 -0.0
asinh0210 asinh -6.0442994056210995e+307 0.0 -> -709.38588631057621 0.0
asinh0211 asinh -1.2775271979042634e+308 -0.0 -> -710.13428215553972 -0.0
asinh0212 asinh 1.0687496260268489e+308 1.0255615699476961 -> 709.95584521407841 9.5959010882679093e-309
asinh0213 asinh 1.0050967333370962e+308 -0.87668970117333433 -> 709.89443961168183 -8.7224410556242882e-309
asinh0214 asinh -5.7161452814862392e+307 8.2377808413450122 -> -709.33006540611166 1.4411426644501116e-307
asinh0215 asinh -8.2009040727653315e+307 -6.407409526654976 -> -709.69101513070109 -7.8130526461510088e-308
asinh0216 asinh 6.4239368496483982 1.6365990821551427e+308 -> 710.38197618101287 1.5707963267948966
asinh0217 asinh 5.4729111423315882 -1.1227237438144211e+308 -> 710.00511346983546 -1.5707963267948966
asinh0218 asinh -8.3455818297412723 1.443172020182019e+308 -> -710.25619930551818 1.5707963267948966
asinh0219 asinh -2.6049726230372441 -1.7952291144022702e+308 -> -710.47448847685644 -1.5707963267948966

-- values near 0
asinh0220 asinh 1.2940113339664088e-314 6.9169190417774516e-323 -> 1.2940113339664088e-314 6.9169190417774516e-323
asinh0221 asinh 2.3848478863874649e-315 -3.1907655025717717e-310 -> 2.3848478863874649e-315 -3.1907655025717717e-310
asinh0222 asinh -3.0097643679641622e-316 4.6936236354918422e-322 -> -3.0097643679641622e-316 4.6936236354918422e-322
asinh0223 asinh -1.787997087755751e-308 -8.5619622834902341e-310 -> -1.787997087755751e-308 -8.5619622834902341e-310
asinh0224 asinh 0.0 1.2491433448427325e-314 -> 0.0 1.2491433448427325e-314
asinh0225 asinh -0.0 2.5024072154538062e-308 -> -0.0 2.5024072154538062e-308
asinh0226 asinh 0.0 -2.9643938750474793e-323 -> 0.0 -2.9643938750474793e-323
asinh0227 asinh -0.0 -2.9396905927554169e-320 -> -0.0 -2.9396905927554169e-320
asinh0228 asinh 5.64042930029359e-317 0.0 -> 5.64042930029359e-317 0.0
asinh0229 asinh 3.3833911866596068e-318 -0.0 -> 3.3833911866596068e-318 -0.0
asinh0230 asinh -4.9406564584124654e-324 0.0 -> -4.9406564584124654e-324 0.0
asinh0231 asinh -2.2211379227994845e-308 -0.0 -> -2.2211379227994845e-308 -0.0

-- special values
asinh1000 asinh 0.0 0.0 -> 0.0 0.0
asinh1001 asinh 0.0 -0.0 -> 0.0 -0.0
asinh1002 asinh -0.0 0.0 -> -0.0 0.0
asinh1003 asinh -0.0 -0.0 -> -0.0 -0.0
asinh1004 asinh 0.0 inf -> inf 1.5707963267948966
asinh1005 asinh 2.3 inf -> inf 1.5707963267948966
asinh1006 asinh 0.0 nan -> nan nan
asinh1007 asinh 2.3 nan -> nan nan
asinh1008 asinh inf 0.0 -> inf 0.0
asinh1009 asinh inf 2.3 -> inf 0.0
asinh1010 asinh inf inf -> inf 0.78539816339744828
asinh1011 asinh inf nan -> inf nan
asinh1012 asinh nan 0.0 -> nan 0.0
asinh1013 asinh nan 2.3 -> nan nan
asinh1014 asinh nan inf -> inf nan                      ignore-real-sign
asinh1015 asinh nan nan -> nan nan
asinh1016 asinh 0.0 -inf -> inf -1.5707963267948966
asinh1017 asinh 2.3 -inf -> inf -1.5707963267948966
asinh1018 asinh inf -0.0 -> inf -0.0
asinh1019 asinh inf -2.3 -> inf -0.0
asinh1020 asinh inf -inf -> inf -0.78539816339744828
asinh1021 asinh nan -0.0 -> nan -0.0
asinh1022 asinh nan -2.3 -> nan nan
asinh1023 asinh nan -inf -> inf nan                     ignore-real-sign
asinh1024 asinh -0.0 -inf -> -inf -1.5707963267948966
asinh1025 asinh -2.3 -inf -> -inf -1.5707963267948966
asinh1026 asinh -0.0 nan -> nan nan
asinh1027 asinh -2.3 nan -> nan nan
asinh1028 asinh -inf -0.0 -> -inf -0.0
asinh1029 asinh -inf -2.3 -> -inf -0.0
asinh1030 asinh -inf -inf -> -inf -0.78539816339744828
asinh1031 asinh -inf nan -> -inf nan
asinh1032 asinh -0.0 inf -> -inf 1.5707963267948966
asinh1033 asinh -2.3 inf -> -inf 1.5707963267948966
asinh1034 asinh -inf 0.0 -> -inf 0.0
asinh1035 asinh -inf 2.3 -> -inf 0.0
asinh1036 asinh -inf inf -> -inf 0.78539816339744828


---------------------------
-- atan: Inverse tangent --
---------------------------

-- zeros
-- These are tested in testAtanSign in test_cmath.py
-- atan0000 atan 0.0 0.0 -> 0.0 0.0
-- atan0001 atan 0.0 -0.0 -> 0.0 -0.0
-- atan0002 atan -0.0 0.0 -> -0.0 0.0
-- atan0003 atan -0.0 -0.0 -> -0.0 -0.0

-- values along both sides of imaginary axis
atan0010 atan 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324
atan0011 atan -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324
atan0012 atan 0.0 -1e-305 -> 0.0 -1e-305
atan0013 atan -0.0 -1e-305 -> -0.0 -1e-305
atan0014 atan 0.0 -1e-150 -> 0.0 -1e-150
atan0015 atan -0.0 -1e-150 -> -0.0 -1e-150
atan0016 atan 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17
atan0017 atan -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17
atan0018 atan 0.0 -0.001 -> 0.0 -0.0010000003333335333
atan0019 atan -0.0 -0.001 -> -0.0 -0.0010000003333335333
atan0020 atan 0.0 -0.57899999999999996 -> 0.0 -0.6609570902866303
atan0021 atan -0.0 -0.57899999999999996 -> -0.0 -0.6609570902866303
atan0022 atan 0.0 -0.99999999999999989 -> 0.0 -18.714973875118524
atan0023 atan -0.0 -0.99999999999999989 -> -0.0 -18.714973875118524
atan0024 atan 0.0 -1.0000000000000002 -> 1.5707963267948966 -18.36840028483855
atan0025 atan -0.0 -1.0000000000000002 -> -1.5707963267948966 -18.36840028483855
atan0026 atan 0.0 -1.0009999999999999 -> 1.5707963267948966 -3.8007011672919218
atan0027 atan -0.0 -1.0009999999999999 -> -1.5707963267948966 -3.8007011672919218
atan0028 atan 0.0 -2.0 -> 1.5707963267948966 -0.54930614433405489
atan0029 atan -0.0 -2.0 -> -1.5707963267948966 -0.54930614433405489
atan0030 atan 0.0 -20.0 -> 1.5707963267948966 -0.050041729278491265
atan0031 atan -0.0 -20.0 -> -1.5707963267948966 -0.050041729278491265
atan0032 atan 0.0 -10000000000000000.0 -> 1.5707963267948966 -9.9999999999999998e-17
atan0033 atan -0.0 -10000000000000000.0 -> -1.5707963267948966 -9.9999999999999998e-17
atan0034 atan 0.0 -9.9999999999999998e+149 -> 1.5707963267948966 -1e-150
atan0035 atan -0.0 -9.9999999999999998e+149 -> -1.5707963267948966 -1e-150
atan0036 atan 0.0 -1.0000000000000001e+299 -> 1.5707963267948966 -9.9999999999999999e-300
atan0037 atan -0.0 -1.0000000000000001e+299 -> -1.5707963267948966 -9.9999999999999999e-300
atan0038 atan 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324
atan0039 atan -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324
atan0040 atan 0.0 1e-305 -> 0.0 1e-305
atan0041 atan -0.0 1e-305 -> -0.0 1e-305
atan0042 atan 0.0 1e-150 -> 0.0 1e-150
atan0043 atan -0.0 1e-150 -> -0.0 1e-150
atan0044 atan 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17
atan0045 atan -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17
atan0046 atan 0.0 0.001 -> 0.0 0.0010000003333335333
atan0047 atan -0.0 0.001 -> -0.0 0.0010000003333335333
atan0048 atan 0.0 0.57899999999999996 -> 0.0 0.6609570902866303
atan0049 atan -0.0 0.57899999999999996 -> -0.0 0.6609570902866303
atan0050 atan 0.0 0.99999999999999989 -> 0.0 18.714973875118524
atan0051 atan -0.0 0.99999999999999989 -> -0.0 18.714973875118524
atan0052 atan 0.0 1.0000000000000002 -> 1.5707963267948966 18.36840028483855
atan0053 atan -0.0 1.0000000000000002 -> -1.5707963267948966 18.36840028483855
atan0054 atan 0.0 1.0009999999999999 -> 1.5707963267948966 3.8007011672919218
atan0055 atan -0.0 1.0009999999999999 -> -1.5707963267948966 3.8007011672919218
atan0056 atan 0.0 2.0 -> 1.5707963267948966 0.54930614433405489
atan0057 atan -0.0 2.0 -> -1.5707963267948966 0.54930614433405489
atan0058 atan 0.0 20.0 -> 1.5707963267948966 0.050041729278491265
atan0059 atan -0.0 20.0 -> -1.5707963267948966 0.050041729278491265
atan0060 atan 0.0 10000000000000000.0 -> 1.5707963267948966 9.9999999999999998e-17
atan0061 atan -0.0 10000000000000000.0 -> -1.5707963267948966 9.9999999999999998e-17
atan0062 atan 0.0 9.9999999999999998e+149 -> 1.5707963267948966 1e-150
atan0063 atan -0.0 9.9999999999999998e+149 -> -1.5707963267948966 1e-150
atan0064 atan 0.0 1.0000000000000001e+299 -> 1.5707963267948966 9.9999999999999999e-300
atan0065 atan -0.0 1.0000000000000001e+299 -> -1.5707963267948966 9.9999999999999999e-300

-- random inputs
atan0100 atan -0.32538873661060214 -1.5530461550412578 -> -1.3682728427554227 -0.69451401598762041
atan0101 atan -0.45863393495197929 -4799.1747094903594 -> -1.5707963068820623 -0.00020836916050636145
atan0102 atan -8.3006999685976162 -2.6788890251790938 -> -1.4619862771810199 -0.034811669653327826
atan0103 atan -1.8836307682985314 -1.1441976638861771 -> -1.1839984370871612 -0.20630956157312796
atan0104 atan -0.00063230482407491669 -4.9312520961829485 -> -1.5707692093223147 -0.20563867743008304
atan0105 atan -0.84278137150065946 179012.37493146997 -> -1.5707963267685969 5.5862059836425272e-06
atan0106 atan -0.95487853984049287 14.311334539886177 -> -1.5661322859434561 0.069676024526232005
atan0107 atan -1.3513252539663239 6.0500727021632198e-08 -> -0.93371676315220975 2.140800269742656e-08
atan0108 atan -0.20566254458595795 0.11933771944159823 -> -0.20556463711174916 0.11493405387141732
atan0109 atan -0.58563718795408559 0.64438965423212868 -> -0.68361089300233124 0.46759762751800249
atan0110 atan 48.479267751948292 -78.386382460112543 -> 1.5650888770910523 -0.0092276811373297584
atan0111 atan 1.0575373914056061 -0.75988012377296987 -> 0.94430886722043594 -0.31915698126703118
atan0112 atan 4444810.4314677203 -0.56553404593942558 -> 1.5707961018134231 -2.8625446437701909e-14
atan0113 atan 0.010101405082520009 -0.032932668550282478 -> 0.01011202676646334 -0.032941214776834996
atan0114 atan 1.5353585300154911 -2.1947099346796519 -> 1.3400310739206394 -0.29996003607449045
atan0115 atan 0.21869457055670882 9.9915684254007093 -> 1.5685846078876444 0.1003716881759439
atan0116 atan 0.17783290150246836 0.064334689863650957 -> 0.17668728064286277 0.062435808728873846
atan0117 atan 15.757474087615918 383.57262142534 -> 1.5706894060369621 0.0026026817278826603
atan0118 atan 10.587017408533317 0.21720238081843438 -> 1.4766594681336236 0.0019199097383010061
atan0119 atan 0.86026078678781204 0.1230148609359502 -> 0.7147259322534929 0.070551221954286605

-- values near infinity
atan0200 atan 7.8764397011195798e+307 8.1647921137746308e+307 -> 1.5707963267948966 6.3439446939604493e-309
atan0201 atan 1.5873698696131487e+308 -1.0780367422960641e+308 -> 1.5707963267948966 -2.9279309368530781e-309
atan0202 atan -1.5844551864825834e+308 1.0290657809098675e+308 -> -1.5707963267948966 2.8829614736961417e-309
atan0203 atan -1.3168792562524032e+308 -9.088432341614825e+307 -> -1.5707963267948966 -3.5499373057390056e-309
atan0204 atan 0.0 1.0360465742258337e+308 -> 1.5707963267948966 9.6520757355646018e-309
atan0205 atan -0.0 1.0045063210373196e+308 -> -1.5707963267948966 9.955138947929503e-309
atan0206 atan 0.0 -9.5155296715763696e+307 -> 1.5707963267948966 -1.050913648020118e-308
atan0207 atan -0.0 -1.5565700490496501e+308 -> -1.5707963267948966 -6.4243816114189071e-309
atan0208 atan 1.2956339389525244e+308 0.0 -> 1.5707963267948966 0.0
atan0209 atan 1.4408126243772151e+308 -0.0 -> 1.5707963267948966 -0.0
atan0210 atan -1.0631786461936417e+308 0.0 -> -1.5707963267948966 0.0
atan0211 atan -1.0516056964171069e+308 -0.0 -> -1.5707963267948966 -0.0
atan0212 atan 1.236162319603838e+308 4.6827953496242936 -> 1.5707963267948966 0.0
atan0213 atan 7.000516472897218e+307 -5.8631608017844163 -> 1.5707963267948966 -0.0
atan0214 atan -1.5053444003338508e+308 5.1199197268420313 -> -1.5707963267948966 0.0
atan0215 atan -1.399172518147259e+308 -3.5687766472913673 -> -1.5707963267948966 -0.0
atan0216 atan 8.1252833070803021 6.2782953917343822e+307 -> 1.5707963267948966 1.5927890256908564e-308
atan0217 atan 2.8034285947515167 -1.3378049775753878e+308 -> 1.5707963267948966 -7.4749310756219562e-309
atan0218 atan -1.4073509988974953 1.6776381785968355e+308 -> -1.5707963267948966 5.9607608646364569e-309
atan0219 atan -2.7135551527592119 -1.281567445525738e+308 -> -1.5707963267948966 -7.8029447727565326e-309

-- imaginary part = +/-1, real part tiny
atan0300 atan -1e-150 -1.0 -> -0.78539816339744828 -173.04045556483339
atan0301 atan 1e-155 1.0 -> 0.78539816339744828 178.79691829731851
atan0302 atan 9.9999999999999999e-161 -1.0 -> 0.78539816339744828 -184.55338102980363
atan0303 atan -1e-165 1.0 -> -0.78539816339744828 190.30984376228875
atan0304 atan -9.9998886718268301e-321 -1.0 -> -0.78539816339744828 -368.76019403576692

-- Additional real values (mpmath)
atan0400 atan 1.7976931348623157e+308 0.0 -> 1.5707963267948966192 0.0
atan0401 atan -1.7976931348623157e+308 0.0 -> -1.5707963267948966192 0.0
atan0402 atan 1e-17 0.0 -> 1.0000000000000000715e-17 0.0
atan0403 atan -1e-17 0.0 -> -1.0000000000000000715e-17 0.0
atan0404 atan 0.0001 0.0 -> 0.000099999999666666673459 0.0
atan0405 atan -0.0001 0.0 -> -0.000099999999666666673459 0.0
atan0406 atan 0.999999999999999 0.0 -> 0.78539816339744781002 0.0
atan0407 atan 1.000000000000001 0.0 -> 0.78539816339744886473 0.0
atan0408 atan 14.101419947171719 0.0 -> 1.4999999999999999969 0.0
atan0409 atan 1255.7655915007897 0.0 -> 1.5700000000000000622 0.0

-- special values
atan1000 atan -0.0 0.0 -> -0.0 0.0
atan1001 atan nan 0.0 -> nan 0.0
atan1002 atan -0.0 1.0 -> -0.0 inf divide-by-zero
atan1003 atan -inf 0.0 -> -1.5707963267948966 0.0
atan1004 atan -inf 2.2999999999999998 -> -1.5707963267948966 0.0
atan1005 atan nan 2.2999999999999998 -> nan nan
atan1006 atan -0.0 inf -> -1.5707963267948966 0.0
atan1007 atan -2.2999999999999998 inf -> -1.5707963267948966 0.0
atan1008 atan -inf inf -> -1.5707963267948966 0.0
atan1009 atan nan inf -> nan 0.0
atan1010 atan -0.0 nan -> nan nan
atan1011 atan -2.2999999999999998 nan -> nan nan
atan1012 atan -inf nan -> -1.5707963267948966 0.0 ignore-imag-sign
atan1013 atan nan nan -> nan nan
atan1014 atan 0.0 0.0 -> 0.0 0.0
atan1015 atan 0.0 1.0 -> 0.0 inf divide-by-zero
atan1016 atan inf 0.0 -> 1.5707963267948966 0.0
atan1017 atan inf 2.2999999999999998 -> 1.5707963267948966 0.0
atan1018 atan 0.0 inf -> 1.5707963267948966 0.0
atan1019 atan 2.2999999999999998 inf -> 1.5707963267948966 0.0
atan1020 atan inf inf -> 1.5707963267948966 0.0
atan1021 atan 0.0 nan -> nan nan
atan1022 atan 2.2999999999999998 nan -> nan nan
atan1023 atan inf nan -> 1.5707963267948966 0.0 ignore-imag-sign
atan1024 atan 0.0 -0.0 -> 0.0 -0.0
atan1025 atan nan -0.0 -> nan -0.0
atan1026 atan 0.0 -1.0 -> 0.0 -inf divide-by-zero
atan1027 atan inf -0.0 -> 1.5707963267948966 -0.0
atan1028 atan inf -2.2999999999999998 -> 1.5707963267948966 -0.0
atan1029 atan nan -2.2999999999999998 -> nan nan
atan1030 atan 0.0 -inf -> 1.5707963267948966 -0.0
atan1031 atan 2.2999999999999998 -inf -> 1.5707963267948966 -0.0
atan1032 atan inf -inf -> 1.5707963267948966 -0.0
atan1033 atan nan -inf -> nan -0.0
atan1034 atan -0.0 -0.0 -> -0.0 -0.0
atan1035 atan -0.0 -1.0 -> -0.0 -inf divide-by-zero
atan1036 atan -inf -0.0 -> -1.5707963267948966 -0.0
atan1037 atan -inf -2.2999999999999998 -> -1.5707963267948966 -0.0
atan1038 atan -0.0 -inf -> -1.5707963267948966 -0.0
atan1039 atan -2.2999999999999998 -inf -> -1.5707963267948966 -0.0
atan1040 atan -inf -inf -> -1.5707963267948966 -0.0


---------------------------------------
-- atanh: Inverse hyperbolic tangent --
---------------------------------------

-- zeros
-- These are tested in testAtanhSign in test_cmath.py
-- atanh0000 atanh 0.0 0.0 -> 0.0 0.0
-- atanh0001 atanh 0.0 -0.0 -> 0.0 -0.0
-- atanh0002 atanh -0.0 0.0 -> -0.0 0.0
-- atanh0003 atanh -0.0 -0.0 -> -0.0 -0.0

-- values along both sides of real axis
atanh0010 atanh -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0
atanh0011 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0
atanh0012 atanh -1e-305 0.0 -> -1e-305 0.0
atanh0013 atanh -1e-305 -0.0 -> -1e-305 -0.0
atanh0014 atanh -1e-150 0.0 -> -1e-150 0.0
atanh0015 atanh -1e-150 -0.0 -> -1e-150 -0.0
atanh0016 atanh -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0
atanh0017 atanh -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0
atanh0018 atanh -0.001 0.0 -> -0.0010000003333335333 0.0
atanh0019 atanh -0.001 -0.0 -> -0.0010000003333335333 -0.0
atanh0020 atanh -0.57899999999999996 0.0 -> -0.6609570902866303 0.0
atanh0021 atanh -0.57899999999999996 -0.0 -> -0.6609570902866303 -0.0
atanh0022 atanh -0.99999999999999989 0.0 -> -18.714973875118524 0.0
atanh0023 atanh -0.99999999999999989 -0.0 -> -18.714973875118524 -0.0
atanh0024 atanh -1.0000000000000002 0.0 -> -18.36840028483855 1.5707963267948966
atanh0025 atanh -1.0000000000000002 -0.0 -> -18.36840028483855 -1.5707963267948966
atanh0026 atanh -1.0009999999999999 0.0 -> -3.8007011672919218 1.5707963267948966
atanh0027 atanh -1.0009999999999999 -0.0 -> -3.8007011672919218 -1.5707963267948966
atanh0028 atanh -2.0 0.0 -> -0.54930614433405489 1.5707963267948966
atanh0029 atanh -2.0 -0.0 -> -0.54930614433405489 -1.5707963267948966
atanh0030 atanh -23.0 0.0 -> -0.043505688494814884 1.5707963267948966
atanh0031 atanh -23.0 -0.0 -> -0.043505688494814884 -1.5707963267948966
atanh0032 atanh -10000000000000000.0 0.0 -> -9.9999999999999998e-17 1.5707963267948966
atanh0033 atanh -10000000000000000.0 -0.0 -> -9.9999999999999998e-17 -1.5707963267948966
atanh0034 atanh -9.9999999999999998e+149 0.0 -> -1e-150 1.5707963267948966
atanh0035 atanh -9.9999999999999998e+149 -0.0 -> -1e-150 -1.5707963267948966
atanh0036 atanh -1.0000000000000001e+299 0.0 -> -9.9999999999999999e-300 1.5707963267948966
atanh0037 atanh -1.0000000000000001e+299 -0.0 -> -9.9999999999999999e-300 -1.5707963267948966
atanh0038 atanh 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0
atanh0039 atanh 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0
atanh0040 atanh 1e-305 0.0 -> 1e-305 0.0
atanh0041 atanh 1e-305 -0.0 -> 1e-305 -0.0
atanh0042 atanh 1e-150 0.0 -> 1e-150 0.0
atanh0043 atanh 1e-150 -0.0 -> 1e-150 -0.0
atanh0044 atanh 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0
atanh0045 atanh 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0
atanh0046 atanh 0.001 0.0 -> 0.0010000003333335333 0.0
atanh0047 atanh 0.001 -0.0 -> 0.0010000003333335333 -0.0
atanh0048 atanh 0.57899999999999996 0.0 -> 0.6609570902866303 0.0
atanh0049 atanh 0.57899999999999996 -0.0 -> 0.6609570902866303 -0.0
atanh0050 atanh 0.99999999999999989 0.0 -> 18.714973875118524 0.0
atanh0051 atanh 0.99999999999999989 -0.0 -> 18.714973875118524 -0.0
atanh0052 atanh 1.0000000000000002 0.0 -> 18.36840028483855 1.5707963267948966
atanh0053 atanh 1.0000000000000002 -0.0 -> 18.36840028483855 -1.5707963267948966
atanh0054 atanh 1.0009999999999999 0.0 -> 3.8007011672919218 1.5707963267948966
atanh0055 atanh 1.0009999999999999 -0.0 -> 3.8007011672919218 -1.5707963267948966
atanh0056 atanh 2.0 0.0 -> 0.54930614433405489 1.5707963267948966
atanh0057 atanh 2.0 -0.0 -> 0.54930614433405489 -1.5707963267948966
atanh0058 atanh 23.0 0.0 -> 0.043505688494814884 1.5707963267948966
atanh0059 atanh 23.0 -0.0 -> 0.043505688494814884 -1.5707963267948966
atanh0060 atanh 10000000000000000.0 0.0 -> 9.9999999999999998e-17 1.5707963267948966
atanh0061 atanh 10000000000000000.0 -0.0 -> 9.9999999999999998e-17 -1.5707963267948966
atanh0062 atanh 9.9999999999999998e+149 0.0 -> 1e-150 1.5707963267948966
atanh0063 atanh 9.9999999999999998e+149 -0.0 -> 1e-150 -1.5707963267948966
atanh0064 atanh 1.0000000000000001e+299 0.0 -> 9.9999999999999999e-300 1.5707963267948966
atanh0065 atanh 1.0000000000000001e+299 -0.0 -> 9.9999999999999999e-300 -1.5707963267948966

-- random inputs
atanh0100 atanh -0.54460925980633501 -0.54038050126721027 -> -0.41984265808446974 -0.60354153938352828
atanh0101 atanh -1.6934614269829051 -0.48807386108113621 -> -0.58592769102243281 -1.3537837470975898
atanh0102 atanh -1.3467293985501207 -0.47868354895395876 -> -0.69961624370709985 -1.1994450156570076
atanh0103 atanh -5.6142232418984888 -544551613.39307702 -> -1.8932657550925744e-17 -1.5707963249585235
atanh0104 atanh -0.011841460381263651 -3.259978899823385 -> -0.0010183936547405188 -1.2731614020743838
atanh0105 atanh -0.0073345736950029532 0.35821949670922248 -> -0.0065004869024682466 0.34399359971920895
atanh0106 atanh -13.866782244320014 0.9541129545860273 -> -0.071896852055058899 1.5658322704631409
atanh0107 atanh -708.59964982780775 21.984802159266675 -> -0.0014098779074189741 1.5707525842838959
atanh0108 atanh -30.916832076030602 1.3691897138829843 -> -0.032292682045743676 1.5693652094847115
atanh0109 atanh -0.57461806339861754 0.29534797443913063 -> -0.56467464472482765 0.39615612824172625
atanh0110 atanh 0.40089246737415685 -1.632285984300659 -> 0.1063832707890608 -1.0402821335326482
atanh0111 atanh 2119.6167688262176 -1.5383653437377242e+17 -> 8.9565008518382049e-32 -1.5707963267948966
atanh0112 atanh 756.86017850941641 -6.6064087133223817 -> 0.0013211481136820046 -1.5707847948702234
atanh0113 atanh 4.0490617718041602 -2.5784456791040652e-12 -> 0.25218425538553618 -1.5707963267947291
atanh0114 atanh 10.589254957173523 -0.13956391149624509 -> 0.094700890282197664 -1.5695407140217623
atanh0115 atanh 1.0171187553160499 0.70766113465354019 -> 0.55260251975367791 0.96619711116641682
atanh0116 atanh 0.031645502527750849 0.067319983726544394 -> 0.031513018344086742 0.067285437670549036
atanh0117 atanh 0.13670177624994517 0.43240089361857947 -> 0.11538933151017253 0.41392008145336212
atanh0118 atanh 0.64173899243596688 2.9008577686695256 -> 0.065680142424134405 1.2518535724053921
atanh0119 atanh 0.19313813528025942 38.799619150741869 -> 0.00012820765917366644 1.5450292202823612

-- values near infinity
atanh0200 atanh 5.3242646831347954e+307 1.3740396080084153e+308 -> 2.4519253616695576e-309 1.5707963267948966
atanh0201 atanh 1.158701641241358e+308 -6.5579268873375853e+307 -> 6.5365375267795098e-309 -1.5707963267948966
atanh0202 atanh -1.3435325735762247e+308 9.8947369259601547e+307 -> -4.8256680906589956e-309 1.5707963267948966
atanh0203 atanh -1.4359857522598942e+308 -9.4701204702391004e+307 -> -4.8531282262872645e-309 -1.5707963267948966
atanh0204 atanh 0.0 5.6614181068098497e+307 -> 0.0 1.5707963267948966
atanh0205 atanh -0.0 6.9813212721450139e+307 -> -0.0 1.5707963267948966
atanh0206 atanh 0.0 -7.4970613060311453e+307 -> 0.0 -1.5707963267948966
atanh0207 atanh -0.0 -1.5280601880314068e+308 -> -0.0 -1.5707963267948966
atanh0208 atanh 8.2219472336000745e+307 0.0 -> 1.2162568933954813e-308 1.5707963267948966
atanh0209 atanh 1.4811519617280899e+308 -0.0 -> 6.7515017083951325e-309 -1.5707963267948966
atanh0210 atanh -1.2282016263598785e+308 0.0 -> -8.1419856360537615e-309 1.5707963267948966
atanh0211 atanh -1.0616427760154426e+308 -0.0 -> -9.4193642399489563e-309 -1.5707963267948966
atanh0212 atanh 1.2971536510180682e+308 5.2847948452333293 -> 7.7091869510998328e-309 1.5707963267948966
atanh0213 atanh 1.1849860977411851e+308 -7.9781906447459949 -> 8.4389175696339014e-309 -1.5707963267948966
atanh0214 atanh -1.4029969422586635e+308 0.93891986543663375 -> -7.127599283218073e-309 1.5707963267948966
atanh0215 atanh -4.7508098912248211e+307 -8.2702421247039908 -> -2.1049042645278043e-308 -1.5707963267948966
atanh0216 atanh 8.2680742115769998 8.1153898410918065e+307 -> 0.0 1.5707963267948966
atanh0217 atanh 1.2575325146218885 -1.4746679147661649e+308 -> 0.0 -1.5707963267948966
atanh0218 atanh -2.4618803682310899 1.3781522717005568e+308 -> -0.0 1.5707963267948966
atanh0219 atanh -4.0952386694788112 -1.231083376353703e+308 -> -0.0 -1.5707963267948966

-- values near 0
atanh0220 atanh 3.8017563659811628e-314 2.6635484239074319e-312 -> 3.8017563659811628e-314 2.6635484239074319e-312
atanh0221 atanh 1.7391110733611878e-321 -4.3547800672541419e-313 -> 1.7391110733611878e-321 -4.3547800672541419e-313
atanh0222 atanh -5.9656816081325078e-317 9.9692253555416263e-313 -> -5.9656816081325078e-317 9.9692253555416263e-313
atanh0223 atanh -6.5606671178400239e-313 -2.1680936406357335e-309 -> -6.5606671178400239e-313 -2.1680936406357335e-309
atanh0224 atanh 0.0 2.5230944401820779e-319 -> 0.0 2.5230944401820779e-319
atanh0225 atanh -0.0 5.6066569490064658e-320 -> -0.0 5.6066569490064658e-320
atanh0226 atanh 0.0 -2.4222487249468377e-317 -> 0.0 -2.4222487249468377e-317
atanh0227 atanh -0.0 -3.0861101089206037e-316 -> -0.0 -3.0861101089206037e-316
atanh0228 atanh 3.1219222884393986e-310 0.0 -> 3.1219222884393986e-310 0.0
atanh0229 atanh 9.8926337564976196e-309 -0.0 -> 9.8926337564976196e-309 -0.0
atanh0230 atanh -1.5462535092918154e-312 0.0 -> -1.5462535092918154e-312 0.0
atanh0231 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0

-- real part = +/-1, imaginary part tiny
atanh0300 atanh 1.0 1e-153 -> 176.49433320432448 0.78539816339744828
atanh0301 atanh 1.0 9.9999999999999997e-155 -> 177.64562575082149 0.78539816339744828
atanh0302 atanh -1.0 1e-161 -> -185.70467357630065 0.78539816339744828
atanh0303 atanh 1.0 -1e-165 -> 190.30984376228875 -0.78539816339744828
atanh0304 atanh -1.0 -9.8813129168249309e-324 -> -372.22003596069061 -0.78539816339744828

-- special values
atanh1000 atanh 0.0 0.0 -> 0.0 0.0
atanh1001 atanh 0.0 nan -> 0.0 nan
atanh1002 atanh 1.0 0.0 -> inf 0.0                      divide-by-zero
atanh1003 atanh 0.0 inf -> 0.0 1.5707963267948966
atanh1004 atanh 2.3 inf -> 0.0 1.5707963267948966
atanh1005 atanh 2.3 nan -> nan nan
atanh1006 atanh inf 0.0 -> 0.0 1.5707963267948966
atanh1007 atanh inf 2.3 -> 0.0 1.5707963267948966
atanh1008 atanh inf inf -> 0.0 1.5707963267948966
atanh1009 atanh inf nan -> 0.0 nan
atanh1010 atanh nan 0.0 -> nan nan
atanh1011 atanh nan 2.3 -> nan nan
atanh1012 atanh nan inf -> 0.0 1.5707963267948966       ignore-real-sign
atanh1013 atanh nan nan -> nan nan
atanh1014 atanh 0.0 -0.0 -> 0.0 -0.0
atanh1015 atanh 1.0 -0.0 -> inf -0.0                    divide-by-zero
atanh1016 atanh 0.0 -inf -> 0.0 -1.5707963267948966
atanh1017 atanh 2.3 -inf -> 0.0 -1.5707963267948966
atanh1018 atanh inf -0.0 -> 0.0 -1.5707963267948966
atanh1019 atanh inf -2.3 -> 0.0 -1.5707963267948966
atanh1020 atanh inf -inf -> 0.0 -1.5707963267948966
atanh1021 atanh nan -0.0 -> nan nan
atanh1022 atanh nan -2.3 -> nan nan
atanh1023 atanh nan -inf -> 0.0 -1.5707963267948966     ignore-real-sign
atanh1024 atanh -0.0 -0.0 -> -0.0 -0.0
atanh1025 atanh -0.0 nan -> -0.0 nan
atanh1026 atanh -1.0 -0.0 -> -inf -0.0                  divide-by-zero
atanh1027 atanh -0.0 -inf -> -0.0 -1.5707963267948966
atanh1028 atanh -2.3 -inf -> -0.0 -1.5707963267948966
atanh1029 atanh -2.3 nan -> nan nan
atanh1030 atanh -inf -0.0 -> -0.0 -1.5707963267948966
atanh1031 atanh -inf -2.3 -> -0.0 -1.5707963267948966
atanh1032 atanh -inf -inf -> -0.0 -1.5707963267948966
atanh1033 atanh -inf nan -> -0.0 nan
atanh1034 atanh -0.0 0.0 -> -0.0 0.0
atanh1035 atanh -1.0 0.0 -> -inf 0.0                    divide-by-zero
atanh1036 atanh -0.0 inf -> -0.0 1.5707963267948966
atanh1037 atanh -2.3 inf -> -0.0 1.5707963267948966
atanh1038 atanh -inf 0.0 -> -0.0 1.5707963267948966
atanh1039 atanh -inf 2.3 -> -0.0 1.5707963267948966
atanh1040 atanh -inf inf -> -0.0 1.5707963267948966


----------------------------
-- log: Natural logarithm --
----------------------------

log0000 log 1.0 0.0 -> 0.0 0.0
log0001 log 1.0 -0.0 -> 0.0 -0.0
log0002 log -1.0 0.0 -> 0.0 3.1415926535897931
log0003 log -1.0 -0.0 -> 0.0 -3.1415926535897931
-- values along both sides of real axis
log0010 log -9.8813129168249309e-324 0.0 -> -743.74692474082133 3.1415926535897931
log0011 log -9.8813129168249309e-324 -0.0 -> -743.74692474082133 -3.1415926535897931
log0012 log -1e-305 0.0 -> -702.28845336318398 3.1415926535897931
log0013 log -1e-305 -0.0 -> -702.28845336318398 -3.1415926535897931
log0014 log -1e-150 0.0 -> -345.38776394910684 3.1415926535897931
log0015 log -1e-150 -0.0 -> -345.38776394910684 -3.1415926535897931
log0016 log -9.9999999999999998e-17 0.0 -> -36.841361487904734 3.1415926535897931
log0017 log -9.9999999999999998e-17 -0.0 -> -36.841361487904734 -3.1415926535897931
log0018 log -0.001 0.0 -> -6.9077552789821368 3.1415926535897931
log0019 log -0.001 -0.0 -> -6.9077552789821368 -3.1415926535897931
log0020 log -0.57899999999999996 0.0 -> -0.54645280140914188 3.1415926535897931
log0021 log -0.57899999999999996 -0.0 -> -0.54645280140914188 -3.1415926535897931
log0022 log -0.99999999999999989 0.0 -> -1.1102230246251565e-16 3.1415926535897931
log0023 log -0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -3.1415926535897931
log0024 log -1.0000000000000002 0.0 -> 2.2204460492503128e-16 3.1415926535897931
log0025 log -1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -3.1415926535897931
log0026 log -1.0009999999999999 0.0 -> 0.00099950033308342321 3.1415926535897931
log0027 log -1.0009999999999999 -0.0 -> 0.00099950033308342321 -3.1415926535897931
log0028 log -2.0 0.0 -> 0.69314718055994529 3.1415926535897931
log0029 log -2.0 -0.0 -> 0.69314718055994529 -3.1415926535897931
log0030 log -23.0 0.0 -> 3.1354942159291497 3.1415926535897931
log0031 log -23.0 -0.0 -> 3.1354942159291497 -3.1415926535897931
log0032 log -10000000000000000.0 0.0 -> 36.841361487904734 3.1415926535897931
log0033 log -10000000000000000.0 -0.0 -> 36.841361487904734 -3.1415926535897931
log0034 log -9.9999999999999998e+149 0.0 -> 345.38776394910684 3.1415926535897931
log0035 log -9.9999999999999998e+149 -0.0 -> 345.38776394910684 -3.1415926535897931
log0036 log -1.0000000000000001e+299 0.0 -> 688.47294280521965 3.1415926535897931
log0037 log -1.0000000000000001e+299 -0.0 -> 688.47294280521965 -3.1415926535897931
log0038 log 9.8813129168249309e-324 0.0 -> -743.74692474082133 0.0
log0039 log 9.8813129168249309e-324 -0.0 -> -743.74692474082133 -0.0
log0040 log 1e-305 0.0 -> -702.28845336318398 0.0
log0041 log 1e-305 -0.0 -> -702.28845336318398 -0.0
log0042 log 1e-150 0.0 -> -345.38776394910684 0.0
log0043 log 1e-150 -0.0 -> -345.38776394910684 -0.0
log0044 log 9.9999999999999998e-17 0.0 -> -36.841361487904734 0.0
log0045 log 9.9999999999999998e-17 -0.0 -> -36.841361487904734 -0.0
log0046 log 0.001 0.0 -> -6.9077552789821368 0.0
log0047 log 0.001 -0.0 -> -6.9077552789821368 -0.0
log0048 log 0.57899999999999996 0.0 -> -0.54645280140914188 0.0
log0049 log 0.57899999999999996 -0.0 -> -0.54645280140914188 -0.0
log0050 log 0.99999999999999989 0.0 -> -1.1102230246251565e-16 0.0
log0051 log 0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -0.0
log0052 log 1.0000000000000002 0.0 -> 2.2204460492503128e-16 0.0
log0053 log 1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -0.0
log0054 log 1.0009999999999999 0.0 -> 0.00099950                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                