-- 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.
--------------------------
-- 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.52