# Data file for mpc_asin.
#
# Copyright (C) 2009 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(asin op) rounded to the precision PREC_ROP_RE
#   in the direction RND_RE
# ROP_IM is checked against Im(asin 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 -0x1921FB54442D18p-53 53 -inf    53 -inf 53 -inf N N
+ 0 53 -0x1921FB54442D18p-52 53 -inf    53 -inf 53   -1 N N
+ 0 53 -0x1921FB54442D18p-52 53 -inf    53 -inf 53   -0 N N
+ 0 53 -0x1921FB54442D18p-52 53 +inf    53 -inf 53   +0 N N
+ 0 53 -0x1921FB54442D18p-52 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                    -0 53 -inf    53   -6 53 -inf N N
0 0 53                    -0 53 +inf    53   -6 53 +inf N N
0 0 53                   nan 53  nan    53   -6 53  nan N N
0 0 53                    -0 53 -inf    53 -0.5 53 -inf N N
0 0 53                    -0 53 +inf    53 -0.5 53 +inf N N
0 0 53                   nan 53  nan    53 -0.5 53  nan N N
0 0 53                    -0 53 -inf    53   -0 53 -inf N N
0 0 53                    -0 53   -0    53   -0 53   -0 N N
0 0 53                    -0 53   +0    53   -0 53   +0 N N
0 0 53                    -0 53 +inf    53   -0 53 +inf N N
0 0 53                    -0 53  nan    53   -0 53  nan N N
0 0 53                    +0 53 -inf    53   +0 53 -inf N N
0 0 53                    +0 53   -0    53   +0 53   -0 N N
0 0 53                    +0 53   +0    53   +0 53   +0 N N
0 0 53                    +0 53 +inf    53   +0 53 +inf N N
0 0 53                    +0 53  nan    53   +0 53  nan N N
0 0 53                    +0 53 -inf    53 +0.5 53 -inf N N
0 0 53                    +0 53 +inf    53 +0.5 53 +inf N N
0 0 53                   nan 53  nan    53 +0.5 53  nan N N
0 0 53                    +0 53 -inf    53   +6 53 -inf N N
0 0 53                    +0 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 53  0x1921FB54442D18p-52 53 -inf    53 +inf 53   -1 N N
- 0 53  0x1921FB54442D18p-52 53 -inf    53 +inf 53   -0 N N
- 0 53  0x1921FB54442D18p-52 53 +inf    53 +inf 53   +0 N N
- 0 53  0x1921FB54442D18p-52 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-52 53 -0x1ECC2CAEC5160Ap-53    53 -1.5 53   -0 N N
+ + 53 -0x1921FB54442D18p-52 53  0x1ECC2CAEC5160Ap-53    53 -1.5 53   +0 N N
+ 0 53 -0x1921FB54442D18p-52 53                    -0    53   -1 53   -0 N N
+ 0 53 -0x1921FB54442D18p-52 53                    +0    53   -1 53   +0 N N
- 0 53 -0x10C152382D7366p-53 53                    -0    53 -0.5 53   -0 N N
- 0 53 -0x10C152382D7366p-53 53                    +0    53 -0.5 53   +0 N N
+ 0 53  0x10C152382D7366p-53 53                    -0    53 +0.5 53   -0 N N
+ 0 53  0x10C152382D7366p-53 53                    +0    53 +0.5 53   +0 N N
- 0 53  0x1921FB54442D18p-52 53                    -0    53   +1 53   -0 N N
- 0 53  0x1921FB54442D18p-52 53                    +0    53   +1 53   +0 N N
- - 53  0x1921FB54442D18p-52 53 -0x1ECC2CAEC5160Ap-53    53 +1.5 53   -0 N N
- + 53  0x1921FB54442D18p-52 53  0x1ECC2CAEC5160Ap-53    53 +1.5 53   +0 N N

# pure imaginary argument
0 + 53                    -0 53 -0x131DC0090B63D8p-52    53   -0 53 -1.5 N N
0 + 53                    +0 53 -0x131DC0090B63D8p-52    53   +0 53 -1.5 N N
0 - 53                    -0 53 -0x1C34366179D427p-53    53   -0 53   -1 N N
0 - 53                    +0 53 -0x1C34366179D427p-53    53   +0 53   -1 N N
0 - 53                    -0 53 -0x1ECC2CAEC5160Ap-54    53   -0 53 -0.5 N N
0 - 53                    +0 53 -0x1ECC2CAEC5160Ap-54    53   +0 53 -0.5 N N
0 + 53                    -0 53  0x1ECC2CAEC5160Ap-54    53   -0 53 +0.5 N N
0 + 53                    +0 53  0x1ECC2CAEC5160Ap-54    53   +0 53 +0.5 N N
0 + 53                    -0 53  0x1C34366179D427p-53    53   -0 53   +1 N N
0 + 53                    +0 53  0x1C34366179D427p-53    53   +0 53   +1 N N
0 - 53                    -0 53  0x131DC0090B63D8p-52    53   -0 53 +1.5 N N
0 - 53                    +0 53  0x131DC0090B63D8p-52    53   +0 53 +1.5 N N

# IEEE-754 double precision and other precisions
+ - 53 0x189BF9EC7FCD5Bp-54 53 0x1206ECFA94614Bp-50 53 17 53 42 N N
- + 2 1.5 2 6 2 96 2 0x1p-8 N N
- - 8 0xC9p-7 8 0x15p-2 2 96 2 0x1p-8 N N
