resetting manifest requested domain to floor
[platform/upstream/mpc.git] / tests / sqr.dat
1 # Data file for mpc_sqr.
2 #
3 # Copyright (C) 2008, 2010, 2012 INRIA
4 #
5 # This file is part of GNU MPC.
6 #
7 # GNU MPC is free software; you can redistribute it and/or modify it under
8 # the terms of the GNU Lesser General Public License as published by the
9 # Free Software Foundation; either version 3 of the License, or (at your
10 #o ption) any later version.
11 #
12 # GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
15 # more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public License
18 # along with this program. If not, see http://www.gnu.org/licenses/ .
19 #
20 # The line format respects the parameter order in function prototype as
21 # follow:
22 #
23 # PREC_ROP_RE  ROP_RE  PREC_ROP_IM  ROP_IM  PREC_OP_RE  OP_RE  PREC_OP_IM  OP_IM  RND_RE  RND_IM
24 #
25 # see sin.dat for precisions
26
27 # special values (following ISO C99 standard)
28 0 0 53  nan 53 +inf     53 -inf 53 -inf N N
29 0 0 53 +inf 53 +inf     53 -inf 53   -1 N N
30 0 0 53 +inf 53  nan     53 -inf 53   -0 N N
31 0 0 53 +inf 53  nan     53 -inf 53   +0 N N
32 0 0 53 +inf 53 -inf     53 -inf 53   +1 N N
33 0 0 53  nan 53 -inf     53 -inf 53 +inf N N
34 0 0 53  nan 53  nan     53 -inf 53  nan N N
35 0 0 53 -inf 53 +inf     53   -1 53 -inf N N
36 0 0 53   +1 53   +0     53   -1 53   -0 N N
37 0 0 53   +1 53   -0     53   -1 53   +0 N N
38 0 0 53 -inf 53 -inf     53   -1 53 +inf N N
39 0 0 53  nan 53  nan     53   -1 53  nan N N
40 0 0 53 -inf 53  nan     53   -0 53 -inf N N
41 0 0 53   -1 53   +0     53   -0 53   -1 N N
42 0 0 53    0 53   +0     53   -0 53   -0 N N
43 0 0 53    0 53   -0     53   -0 53   +0 N N
44 0 0 53   -1 53   -0     53   -0 53   +1 N N
45 0 0 53 -inf 53  nan     53   -0 53 +inf N N
46 0 0 53  nan 53  nan     53   -0 53  nan N N
47 0 0 53 -inf 53  nan     53   +0 53 -inf N N
48 0 0 53   -1 53   -0     53   +0 53   -1 N N
49 0 0 53    0 53   -0     53   +0 53   -0 N N
50 0 0 53    0 53   +0     53   +0 53   +0 N N
51 0 0 53   -1 53   +0     53   +0 53   +1 N N
52 0 0 53 -inf 53  nan     53   +0 53 +inf N N
53 0 0 53  nan 53  nan     53   +0 53  nan N N
54 0 0 53 -inf 53 -inf     53   +1 53 -inf N N
55 0 0 53   +1 53   -0     53   +1 53   -0 N N
56 0 0 53   +1 53   +0     53   +1 53   +0 N N
57 0 0 53 -inf 53 +inf     53   +1 53 +inf N N
58 0 0 53  nan 53  nan     53   +1 53  nan N N
59 0 0 53  nan 53 -inf     53 +inf 53 -inf N N
60 0 0 53 +inf 53 -inf     53 +inf 53   -1 N N
61 0 0 53 +inf 53  nan     53 +inf 53   -0 N N
62 0 0 53 +inf 53  nan     53 +inf 53   +0 N N
63 0 0 53 +inf 53 +inf     53 +inf 53   +1 N N
64 0 0 53  nan 53 +inf     53 +inf 53 +inf N N
65 0 0 53  nan 53  nan     53 +inf 53  nan N N
66 0 0 53  nan 53  nan     53  nan 53 -inf N N
67 0 0 53  nan 53  nan     53  nan 53   -1 N N
68 0 0 53  nan 53  nan     53  nan 53   -0 N N
69 0 0 53  nan 53  nan     53  nan 53   +0 N N
70 0 0 53  nan 53  nan     53  nan 53   +1 N N
71 0 0 53  nan 53  nan     53  nan 53 +inf N N
72 0 0 53  nan 53  nan     53  nan 53  nan N N
73
74 # pure real argument
75 + 0 53 0x12345676543230p+52  2 +0    53  0x1111111000000f 17 +0 N N
76 - 0 53 0x1234567654322fp+52  3 -0    54 -0x1111111000000f 16 +0 Z N
77 + 0 53 0x12345676543230p+52  4 -0    55  0x1111111000000f 15 -0 U N
78 - 0 53 0x1234567654322fp+52  5 +0    56 -0x1111111000000f 14 -0 D N
79 - 0 53 0x1234567654322fp+52  6 +0    57  0x1111111000000f 13 +0 Z Z
80 + 0 53 0x12345676543230p+52  7 -0    58 -0x1111111000000f 12 +0 U Z
81 - 0 53 0x1234567654322fp+52  8 -0    59  0x1111111000000f 11 -0 D Z
82 + 0 53 0x12345676543230p+52  9 +0    60 -0x1111111000000f 10 -0 N Z
83 + 0 53 0x12345676543230p+52 10 +0    61  0x1111111000000f  9 +0 U U
84 - 0 53 0x1234567654322fp+52 11 -0    62 -0x1111111000000f  8 +0 D U
85 + 0 53 0x12345676543230p+52 12 -0    63  0x1111111000000f  7 -0 N U
86 - 0 53 0x1234567654322fp+52 13 +0    64 -0x1111111000000f  6 -0 Z U
87 - 0 53 0x1234567654322fp+52 14 +0    65  0x1111111000000f  5 +0 D D
88 + 0 53 0x12345676543230p+52 15 -0    66 -0x1111111000000f  4 +0 N D
89 - 0 53 0x1234567654322fp+52 16 -0    67  0x1111111000000f  3 -0 Z D
90 + 0 53 0x12345676543230p+52 17 +0    68 -0x1111111000000f  2 -0 U D
91
92 # pure imaginary argument
93 - 0 53 -0xE1000002000000p+56 53 +0    53 +0 53  0xf0000001111111 N N
94 + 0 53 -0xe1000001fffff8p+56 52 -0    51 -0 54  0xf0000001111111 Z N
95 + 0 53 -0xe1000001fffff8p+56 51 -0    49 +0 55 -0xf0000001111111 U N
96 - 0 53 -0xe1000002000000p+56 50 +0    47 -0 56 -0xf0000001111111 D N
97 + 0 53 -0xe1000001fffff8p+56 49 +0    45 +0 57  0xf0000001111111 Z Z
98 + 0 53 -0xe1000001fffff8p+56 48 -0    43 -0 58  0xf0000001111111 U Z
99 - 0 53 -0xe1000002000000p+56 47 -0    41 +0 59 -0xf0000001111111 D Z
100 - 0 53 -0xe1000002000000p+56 46 +0    39 -0 60 -0xf0000001111111 N Z
101 + 0 53 -0xe1000001fffff8p+56 45 +0    37 +0 61  0xf0000001111111 U U
102 - 0 53 -0xe1000002000000p+56 44 -0    35 -0 62  0xf0000001111111 D U
103 - 0 53 -0xe1000002000000p+56 43 -0    33 +0 63 -0xf0000001111111 N U
104 + 0 53 -0xe1000001fffff8p+56 42 +0    31 -0 64 -0xf0000001111111 Z U
105 - 0 53 -0xe1000002000000p+56 41 +0    29 +0 65  0xf0000001111111 D D
106 - 0 53 -0xe1000002000000p+56 40 -0    27 -0 66  0xf0000001111111 N D
107 + 0 53 -0xe1000001fffff8p+56 39 -0    25 +0 67 -0xf0000001111111 Z D
108 + 0 53 -0xe1000001fffff8p+56 38 +0    23 -0 68 -0xf0000001111111 U D
109
110 # IEEE-754 double precision
111 - + 53  0x10000000020000p+04   53  0x10000000effff         53  0x400008000180fp-22   53  0x7ffff0077efcbp-32   N N
112 - - 53  0x3ffffffffffffd       53  0x7ffffffffffff4p+52    53  0x1fffffffffffff      53  0x1ffffffffffffe      Z N
113 + + 53  0x1c16e5d4c4d5e7p-45   53 -0x7ffffff800007p-47     53  0xf                   53 -0x1111111000000fp-53  U N
114 - + 53  0xfdbac097c8dc50p+2096 53  0x7f6e5d4c3b2a2p+1036   53  0xfedcba9876543p+1024 53  0x10000000000001p-42  D N
115 + - 53 -0x10000000020000p+04   53  0x10000000efffefp-04    53  0x7ffff0077efcbp-32   53  0x400008000180fp-22   Z Z
116 + + 53  0x3ffffffffffffe       53 -0x7ffffffffffff4p+52    53  0x1fffffffffffff      53 -0x1ffffffffffffe      U Z
117 - - 53  0xe0b72ea626af3p-44    53  0x7ffffff800007p-47     53  0xf                   53  0x1111111000000fp-53  D Z
118 - - 53 -0xfdbac097c8dc58p+2096 53  0x7f6e5d4c3b2a1cp+1032  53 -0x10000000000001p-42  53 -0xfedcba9876543p+1024 N Z
119 + + 53  0x10000000020001p+04   53 -0x10000000efffefp-04    53  0x400008000180fp-22   53 -0x7ffff0077efcbp-32   U U
120 - + 53 -0x3ffffffffffffe       53 -0x7ffffffffffff4p+52    53 -0x1ffffffffffffe      53  0x1fffffffffffff      D U
121 - + 53 -0x1C16E5D4C4D5E7p-45   53  0x1ffffffe00001dp-49    53 -0x1111111000000fp-53  53 -0xf                   N U
122 + + 53 -0xfdbac097c8dc50p+2096 53 -0x7f6e5d4c3b2a1cp+1032  53  0x10000000000001p-42  53 -0xfedcba9876543p+1024 Z U
123 - - 53 -0x10000000020001p+04   53 -0x10000000effff         53 -0x7ffff0077efcbp-32   53  0x400008000180fp-22   D D
124 - - 53  0x3ffffffffffffd       53 -0x7ffffffffffff8p+52    53 -0x1fffffffffffff      53  0x1ffffffffffffe      N D
125 + - 53 -0xE0B72EA626AF3p-44    53 -0x1FFFFFFE00001Dp-49    53  0x1111111000000fp-53  53 -0xf                   Z D
126 + - 53  0xfdbac097c8dc58p+2096 53 -0x7f6e5d4c3b2a2p+1036   53 -0xfedcba9876543p+1024 53  0x10000000000001p-42  U D
127
128 # improve test coverage:
129 # For op=x+i*y, we need a case where x+y and x-y are inexact at the
130 # higher computing precision, and where x and y do not have too
131 # distinct exponents so that Karatsuba gets triggered...
132 # (2^44 + i*(2^29 + 1))^2 \approx (2^88-2^58) + i*2^45*(2^29+1)
133 + 0 30 309485009533114692573069312 30 18889465966662952943616  30 17592186044416 30 536870913 N N
134 # ...and a case where x+y or x-y are 0.
135 0 0 4 0 4 2  4 1 4 1 N N
136
137 # a few values, previously hard-coded in tsqr.c
138 0 0 8 7 8 24  8 4 8 3 N N
139 + + 8 0b1.1000111e-3 8 0b1.1100111e-3  27 0b1.11111011011000010101000000e-2 27 0b1.11010001010110111001110001e-3 N N
140
141 # bug 20090930, infinite loop
142 + + 3464 inf 3464 inf  866 -0x2.5763c6519ef1510f8afa101a210b8030b1909cc17004db561a25d9b53e2c08c41c01e8bbac5af6299b9d8786030aa14943d841798c8c369287942e4d4cec42a60ab0922af931159805e631128e97f973754ad53972d5d320a651a3b4a667f0ef2b92dbd698d159c3642675140@192158913 866 -0xd.15f2d530934dd930d66e89d70762d2337a8f973dd6915eb6b532fd372fcc955df1d852632d4e46fe64154ceda991a1302caf1b0ec622497e3e5724dd05b1c89a06e28d7e18e8af58f5ff4c9998cb31714688867524f41e0b31e847c1bf40de5127f858069998efd7c3e599080@192158893 N N
143
144 # bug 20091001, infinite loop
145 ? + 2256 0 2256 -0  564 0xc.87999bfd1cb1a64288881e214b7cf1af979863b23c030b79c4a8bebb39177967608388a2e4df527977e7755a25df8af8f72fdd6dd2f42bd00de83088b4e9b59ce85caf2e6b0c0@-184298749 564 -0x2.5109af459d4daf357e09475ec991cdc9b02c8f7dfacdc060d2a24710d09c997f8aea6dbd46f10828c30b583fdcc90d7dcbb895689d594d3813db40784d2309e450d1fb6e38da8@-184298726 N N
146
147 # (x+x*i)^2 = 0+2*x^2*i with exact real part
148 0 0 100 0 100 304831530559368   100 12345678 100 12345678 N N
149 0 0 1000 0 100 304831530559368   100 12345678 100 12345678 N N
150 # intermediate overflow- and underflows
151 0 + 100 0 100 +inf  100 0x1@225000750 100 0x1@225000750 N N
152 0 + 10000 0 10000 +inf  100 0x1@225000750 100 0x1@225000750 N N
153 0 - 100 0 100 +0  100 0x1@-225000750 100 0x1@-225000750 N N
154 0 + 100 0 100 -0  100 0x1@-225000750 100 -0x1@-225000750 N N
155 0 - 10000 0 10000 +0  100 0x1@-225000750 100 0x1@-225000750 N N
156 0 + 10000 0 10000 -0  100 0x1@-225000750 100 -0x1@-225000750 N N
157
158 # intermediate overflow in Karatsuba found by hydra, simplified test case
159 - - 100 -inf 100 -inf  593 -0xf@192058806 593 0x1@192058873 N N
160 # another interesting one with not exactly the same behaviour
161 - - 100 -inf 100 -inf  100 -0xf@192058806 100 0x1@192058873 N N
162 0 + 100 0 100 inf  100 0x1@192058806  100 0x1@192058806 N N
163 # Re(op)*Im(op) can be computed, but multiplication by 2 triggers overflow
164 0 + 100 0 100 inf  100 0b1@536870911  100 0b1@536870911 N N
165 0 - 10 0 10 0b1.111111111e1073741822  100 0b1@536870911  100 0b1@536870911 N D
166 0 - 10 0 10 0b1.111111111e1073741822  100 0b1@536870912  100 0b1@536870912 N D
167 0 0 10 0 10 0b1e-1073741823  100 0b1@-536870912  100 0b1@-536870912 N N
168 0 - 10 0 10 0  100 0b1@-536870913  100 0b1@-536870913 N N
169 0 + 10 0 10 0b1@-1073741824  100 0b1@-536870913  100 0b1@-536870913 N U
170 + - 10 0b1e-1073741824 10 0  100 0b1@-536870912  100 0b1@-536870913 N N