# Data file for mpc_acos.
#
# Copyright (C)  INRIA
#
# This file is part of GNU MPC.
#
# GNU MPC is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 3 of the License, or (at your
#o ption) any later version.
#
# GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
# more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see http://www.gnu.org/licenses/ .
#
# The line format respects the parameter order in function prototype as
# follow:
#
# INEX_RE  INEX_IM  PREC_ROP_RE  ROP_RE  PREC_ROP_IM  ROP_IM  PREC_OP_RE  OP_RE  PREC_OP_IM  OP_IM  RND_RE  RND_IM
#
# where op = op_re + i * op_im, rop = rop_re + i * rop_im,
# rop_re is ROP_RE rounded to nearest to the precision of PREC_ROP_RE
# rop_im is ROP_IM rounded to nearest to the precision of PREC_ROP_IM
# op_re is OP_RE rounded to nearest to the precision of PREC_OP_RE
# op_im is OP_IM rounded to nearest to the precision of PREC_OP_IM
# ROP_RE is checked against Re(acos op) rounded to the precision PREC_ROP_RE
#   in the direction RND_RE
# ROP_IM is checked against Im(acos op) rounded to the precision PREC_ROP_IM
#   in the direction RND_IM
# INEX_RE is the ternary value for the real part with the following notation:
# "?" ternary value not checked
# "+" if ROP_RE is greater than the exact mathematical result
# "0" if ROP_RE is exactly the mathematical result
# "-" if ROP_RE is less than the exact mathematical result
# (m.m. INEX_IM)
# rounding modes notation:
# "N" is rounding to nearest
# "Z" is rounding towards zero
# "U" is rounding towards plus infinity
# "D" is rounding towards minus infinity
# Use prefixes "0b" for values in base two, "0x" for values in base sixteen,
#   no prefix for value in base ten.
# In all bases, "nan" is NaN, "inf" is infinity;
# The sign of the result is checked with "+inf", "-inf", "-0", or "+0".

# special values (following ISO C99 standard)
- 0 53  0x12D97C7F3321D2p-51 53 +inf    53 -inf 53 -inf N N
- 0 53  0x1921FB54442D18p-51 53 +inf    53 -inf 53   -1 N N
- 0 53  0x1921FB54442D18p-51 53 +inf    53 -inf 53   -0 N N
- 0 53  0x1921FB54442D18p-51 53 -inf    53 -inf 53   +0 N N
- 0 53  0x1921FB54442D18p-51 53 -inf    53 -inf 53   +1 N N
- 0 53  0x12D97C7F3321D2p-51 53 -inf    53 -inf 53 +inf N N
0 0 53                   nan 53  inf    53 -inf 53  nan N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53   -6 53 -inf N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53   -6 53 +inf N N
0 0 53                   nan 53  nan    53   -6 53  nan N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53 -0.5 53 -inf N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53 -0.5 53 +inf N N
0 0 53                   nan 53  nan    53 -0.5 53  nan N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53   -0 53 -inf N N
- 0 53  0x1921FB54442D18p-52 53   +0    53   -0 53   -0 N N
- 0 53  0x1921FB54442D18p-52 53   -0    53   -0 53   +0 N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53   -0 53 +inf N N
- 0 53  0x1921FB54442D18p-52 53  nan    53   -0 53  nan N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53   +0 53 -inf N N
- 0 53  0x1921FB54442D18p-52 53   +0    53   +0 53   -0 N N
- 0 53  0x1921FB54442D18p-52 53   -0    53   +0 53   +0 N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53   +0 53 +inf N N
- 0 53  0x1921FB54442D18p-52 53  nan    53   +0 53  nan N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53 +0.5 53 -inf N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53 +0.5 53 +inf N N
0 0 53                   nan 53  nan    53 +0.5 53  nan N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53   +6 53 -inf N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53   +6 53 +inf N N
0 0 53                   nan 53  nan    53   +6 53  nan N N
- 0 53  0x1921FB54442D18p-53 53 +inf    53 +inf 53 -inf N N
0 0 53                    +0 53 +inf    53 +inf 53   -1 N N
0 0 53                    +0 53 +inf    53 +inf 53   -0 N N
0 0 53                    +0 53 -inf    53 +inf 53   +0 N N
0 0 53                    +0 53 -inf    53 +inf 53   +1 N N
- 0 53  0x1921FB54442D18p-53 53 -inf    53 +inf 53 +inf N N
0 0 53                   nan 53  inf    53 +inf 53  nan N N
0 0 53                   nan 53 +inf    53  nan 53 -inf N N
0 0 53                   nan 53  nan    53  nan 53   -1 N N
0 0 53                   nan 53  nan    53  nan 53   -0 N N
0 0 53                   nan 53  nan    53  nan 53   +0 N N
0 0 53                   nan 53  nan    53  nan 53   +1 N N
0 0 53                   nan 53 -inf    53  nan 53 +inf N N
0 0 53                   nan 53  nan    53  nan 53  nan N N

# pure real argument
- + 53  0x1921FB54442D18p-51 53  0x13D2B7539DBA4Cp-51    53   -6 53 -0 N N
- - 53  0x1921FB54442D18p-51 53 -0x13D2B7539DBA4Cp-51    53   -6 53 +0 N N
- + 53  0x1921FB54442D18p-51 53  0x15124271980435p-52    53   -2 53 -0 N N
- - 53  0x1921FB54442D18p-51 53 -0x15124271980435p-52    53   -2 53 +0 N N
- 0 53  0x1921FB54442D18p-51 53                    +0    53   -1 53 -0 N N
- 0 53  0x1921FB54442D18p-51 53                    -0    53   -1 53 +0 N N
+ 0 53  0x10C152382D7366p-51 53                    +0    53 -0.5 53 -0 N N
+ 0 53  0x10C152382D7366p-51 53                    -0    53 -0.5 53 +0 N N
+ 0 53  0x10C152382D7366p-52 53                    -0    53 +0.5 53 +0 N N
+ 0 53  0x10C152382D7366p-52 53                    +0    53 +0.5 53 -0 N N
0 0 53                    +0 53                    -0    53   +1 53 +0 N N
0 0 53                    +0 53                    +0    53   +1 53 -0 N N
0 - 53                    +0 53 -0x15124271980435p-52    53   +2 53 +0 N N
0 + 53                    +0 53  0x15124271980435p-52    53   +2 53 -0 N N
0 - 53                    +0 53 -0x13D2B7539DBA4Cp-51    53   +6 53 +0 N N
0 + 53                    +0 53  0x13D2B7539DBA4Cp-51    53   +6 53 -0 N N

# pure imaginary argument
- + 53  0x1921FB54442D18p-52 53  0x1D185B507EDC0Ep-52    53 -0 53   -3 N N
- + 53  0x1921FB54442D18p-52 53  0x1D185B507EDC0Ep-52    53 +0 53   -3 N N
- + 53  0x1921FB54442D18p-52 53  0x1FACFB2399E637p-55    53 -0 53 -.25 N N
- + 53  0x1921FB54442D18p-52 53  0x1FACFB2399E637p-55    53 +0 53 -.25 N N
- - 53  0x1921FB54442D18p-52 53 -0x1FACFB2399E637p-55    53 -0 53 +.25 N N
- - 53  0x1921FB54442D18p-52 53 -0x1FACFB2399E637p-55    53 +0 53 +.25 N N
- - 53  0x1921FB54442D18p-52 53 -0x1D185B507EDC0Ep-52    53 -0 53   +3 N N
- - 53  0x1921FB54442D18p-52 53 -0x1D185B507EDC0Ep-52    53 +0 53   +3 N N

# regular argument for various precisions
- + 2 0.5 2 -1 2 2 2 1 N Z
+ + 9 0x5Dp-6 9 0x9Fp-5 9 8.5 9 -71 N U
+ + 2 0x3p-9 2 1.5 2 2 2 -0x1p-7 U N
+ - 53 0x74C141310E695p-53 53 -0x1D6D2CFA9F3F11p-52 53 0x3243F6A8885A3p-48 53 0x162E42FEFA39EFp-53 N N
