1 # Data file for mpc_sqr.
3 # Copyright (C) 2008 Philippe Th\'eveny, Andreas Enge
5 # This file is part of the MPC Library.
7 # The MPC Library is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU Lesser General Public License as published by
9 # the Free Software Foundation; either version 2.1 of the License, or (at your
10 # option) any later version.
12 # The MPC Library is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 # License for more details.
17 # You should have received a copy of the GNU Lesser General Public License
18 # along with the MPC Library; see the file COPYING.LIB. If not, write to
19 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
22 # The line format respects the parameter order in function prototype as
25 # PREC_ROP_RE ROP_RE PREC_ROP_IM ROP_IM PREC_OP_RE OP_RE PREC_OP_IM OP_IM RND_RE RND_IM
27 # see sin.dat for precisions
29 # special values (following ISO C99 standard)
30 0 0 53 nan 53 +inf 53 -inf 53 -inf N N
31 0 0 53 +inf 53 +inf 53 -inf 53 -1 N N
32 0 0 53 +inf 53 nan 53 -inf 53 -0 N N
33 0 0 53 +inf 53 nan 53 -inf 53 +0 N N
34 0 0 53 +inf 53 -inf 53 -inf 53 +1 N N
35 0 0 53 nan 53 -inf 53 -inf 53 +inf N N
36 0 0 53 nan 53 nan 53 -inf 53 nan N N
37 0 0 53 -inf 53 +inf 53 -1 53 -inf N N
38 0 0 53 +1 53 +0 53 -1 53 -0 N N
39 0 0 53 +1 53 -0 53 -1 53 +0 N N
40 0 0 53 -inf 53 -inf 53 -1 53 +inf N N
41 0 0 53 nan 53 nan 53 -1 53 nan N N
42 0 0 53 -inf 53 nan 53 -0 53 -inf N N
43 0 0 53 -1 53 +0 53 -0 53 -1 N N
44 0 0 53 0 53 +0 53 -0 53 -0 N N
45 0 0 53 0 53 -0 53 -0 53 +0 N N
46 0 0 53 -1 53 -0 53 -0 53 +1 N N
47 0 0 53 -inf 53 nan 53 -0 53 +inf N N
48 0 0 53 nan 53 nan 53 -0 53 nan N N
49 0 0 53 -inf 53 nan 53 +0 53 -inf N N
50 0 0 53 -1 53 -0 53 +0 53 -1 N N
51 0 0 53 0 53 -0 53 +0 53 -0 N N
52 0 0 53 0 53 +0 53 +0 53 +0 N N
53 0 0 53 -1 53 +0 53 +0 53 +1 N N
54 0 0 53 -inf 53 nan 53 +0 53 +inf N N
55 0 0 53 nan 53 nan 53 +0 53 nan N N
56 0 0 53 -inf 53 -inf 53 +1 53 -inf N N
57 0 0 53 +1 53 -0 53 +1 53 -0 N N
58 0 0 53 +1 53 +0 53 +1 53 +0 N N
59 0 0 53 -inf 53 +inf 53 +1 53 +inf N N
60 0 0 53 nan 53 nan 53 +1 53 nan N N
61 0 0 53 nan 53 -inf 53 +inf 53 -inf N N
62 0 0 53 +inf 53 -inf 53 +inf 53 -1 N N
63 0 0 53 +inf 53 nan 53 +inf 53 -0 N N
64 0 0 53 +inf 53 nan 53 +inf 53 +0 N N
65 0 0 53 +inf 53 +inf 53 +inf 53 +1 N N
66 0 0 53 nan 53 +inf 53 +inf 53 +inf N N
67 0 0 53 nan 53 nan 53 +inf 53 nan N N
68 0 0 53 nan 53 nan 53 nan 53 -inf N N
69 0 0 53 nan 53 nan 53 nan 53 -1 N N
70 0 0 53 nan 53 nan 53 nan 53 -0 N N
71 0 0 53 nan 53 nan 53 nan 53 +0 N N
72 0 0 53 nan 53 nan 53 nan 53 +1 N N
73 0 0 53 nan 53 nan 53 nan 53 +inf N N
74 0 0 53 nan 53 nan 53 nan 53 nan N N
77 + 0 53 0x12345676543230p+52 2 +0 53 0x1111111000000f 17 +0 N N
78 - 0 53 0x1234567654322fp+52 3 -0 54 -0x1111111000000f 16 +0 Z N
79 + 0 53 0x12345676543230p+52 4 -0 55 0x1111111000000f 15 -0 U N
80 - 0 53 0x1234567654322fp+52 5 +0 56 -0x1111111000000f 14 -0 D N
81 - 0 53 0x1234567654322fp+52 6 +0 57 0x1111111000000f 13 +0 Z Z
82 + 0 53 0x12345676543230p+52 7 -0 58 -0x1111111000000f 12 +0 U Z
83 - 0 53 0x1234567654322fp+52 8 -0 59 0x1111111000000f 11 -0 D Z
84 + 0 53 0x12345676543230p+52 9 +0 60 -0x1111111000000f 10 -0 N Z
85 + 0 53 0x12345676543230p+52 10 +0 61 0x1111111000000f 9 +0 U U
86 - 0 53 0x1234567654322fp+52 11 -0 62 -0x1111111000000f 8 +0 D U
87 + 0 53 0x12345676543230p+52 12 -0 63 0x1111111000000f 7 -0 N U
88 - 0 53 0x1234567654322fp+52 13 +0 64 -0x1111111000000f 6 -0 Z U
89 - 0 53 0x1234567654322fp+52 14 +0 65 0x1111111000000f 5 +0 D D
90 + 0 53 0x12345676543230p+52 15 -0 66 -0x1111111000000f 4 +0 N D
91 - 0 53 0x1234567654322fp+52 16 -0 67 0x1111111000000f 3 -0 Z D
92 + 0 53 0x12345676543230p+52 17 +0 68 -0x1111111000000f 2 -0 U D
94 # pure imaginary argument
95 - 0 53 -0xE1000002000000p+56 53 +0 53 +0 53 0xf0000001111111 N N
96 + 0 53 -0xe1000001fffff8p+56 52 -0 51 -0 54 0xf0000001111111 Z N
97 + 0 53 -0xe1000001fffff8p+56 51 -0 49 +0 55 -0xf0000001111111 U N
98 - 0 53 -0xe1000002000000p+56 50 +0 47 -0 56 -0xf0000001111111 D N
99 + 0 53 -0xe1000001fffff8p+56 49 +0 45 +0 57 0xf0000001111111 Z Z
100 + 0 53 -0xe1000001fffff8p+56 48 -0 43 -0 58 0xf0000001111111 U Z
101 - 0 53 -0xe1000002000000p+56 47 -0 41 +0 59 -0xf0000001111111 D Z
102 - 0 53 -0xe1000002000000p+56 46 +0 39 -0 60 -0xf0000001111111 N Z
103 + 0 53 -0xe1000001fffff8p+56 45 +0 37 +0 61 0xf0000001111111 U U
104 - 0 53 -0xe1000002000000p+56 44 -0 35 -0 62 0xf0000001111111 D U
105 - 0 53 -0xe1000002000000p+56 43 -0 33 +0 63 -0xf0000001111111 N U
106 + 0 53 -0xe1000001fffff8p+56 42 +0 31 -0 64 -0xf0000001111111 Z U
107 - 0 53 -0xe1000002000000p+56 41 +0 29 +0 65 0xf0000001111111 D D
108 - 0 53 -0xe1000002000000p+56 40 -0 27 -0 66 0xf0000001111111 N D
109 + 0 53 -0xe1000001fffff8p+56 39 -0 25 +0 67 -0xf0000001111111 Z D
110 + 0 53 -0xe1000001fffff8p+56 38 +0 23 -0 68 -0xf0000001111111 U D
112 # IEEE-754 double precision
113 - + 53 0x10000000020000p+04 53 0x10000000effff 53 0x400008000180fp-22 53 0x7ffff0077efcbp-32 N N
114 - - 53 0x3ffffffffffffd 53 0x7ffffffffffff4p+52 53 0x1fffffffffffff 53 0x1ffffffffffffe Z N
115 + + 53 0x1c16e5d4c4d5e7p-45 53 -0x7ffffff800007p-47 53 0xf 53 -0x1111111000000fp-53 U N
116 - + 53 0xfdbac097c8dc50p+2096 53 0x7f6e5d4c3b2a2p+1036 53 0xfedcba9876543p+1024 53 0x10000000000001p-42 D N
117 + - 53 -0x10000000020000p+04 53 0x10000000efffefp-04 53 0x7ffff0077efcbp-32 53 0x400008000180fp-22 Z Z
118 + + 53 0x3ffffffffffffe 53 -0x7ffffffffffff4p+52 53 0x1fffffffffffff 53 -0x1ffffffffffffe U Z
119 - - 53 0xe0b72ea626af3p-44 53 0x7ffffff800007p-47 53 0xf 53 0x1111111000000fp-53 D Z
120 - - 53 -0xfdbac097c8dc58p+2096 53 0x7f6e5d4c3b2a1cp+1032 53 -0x10000000000001p-42 53 -0xfedcba9876543p+1024 N Z
121 + + 53 0x10000000020001p+04 53 -0x10000000efffefp-04 53 0x400008000180fp-22 53 -0x7ffff0077efcbp-32 U U
122 - + 53 -0x3ffffffffffffe 53 -0x7ffffffffffff4p+52 53 -0x1ffffffffffffe 53 0x1fffffffffffff D U
123 - + 53 -0x1C16E5D4C4D5E7p-45 53 0x1ffffffe00001dp-49 53 -0x1111111000000fp-53 53 -0xf N U
124 + + 53 -0xfdbac097c8dc50p+2096 53 -0x7f6e5d4c3b2a1cp+1032 53 0x10000000000001p-42 53 -0xfedcba9876543p+1024 Z U
125 - - 53 -0x10000000020001p+04 53 -0x10000000effff 53 -0x7ffff0077efcbp-32 53 0x400008000180fp-22 D D
126 - - 53 0x3ffffffffffffd 53 -0x7ffffffffffff8p+52 53 -0x1fffffffffffff 53 0x1ffffffffffffe N D
127 + - 53 -0xE0B72EA626AF3p-44 53 -0x1FFFFFFE00001Dp-49 53 0x1111111000000fp-53 53 -0xf Z D
128 + - 53 0xfdbac097c8dc58p+2096 53 -0x7f6e5d4c3b2a2p+1036 53 -0xfedcba9876543p+1024 53 0x10000000000001p-42 U D
130 # improve test coverage:
131 # For op=x+i*y, we need a case where x+y and x-y are inexact at the
132 # higher computing precision, and where x and y do not have too
133 # distinct exponents so that Karatsuba gets triggered...
134 # (2^44 + i*(2^29 + 1))^2 \approx (2^88-2^58) + i*2^45*(2^29+1)
135 + 0 30 309485009533114692573069312 30 18889465966662952943616 30 17592186044416 30 536870913 N N
136 # ...and a case where x+y or x-y are 0.
137 0 0 4 0 4 2 4 1 4 1 N N