Import Upstream version 0.8.2
[platform/upstream/mpc.git] / tests / sqr.dat
1 # Data file for mpc_sqr.
2 #
3 # Copyright (C) 2008 Philippe Th\'eveny, Andreas Enge
4 #
5 # This file is part of the MPC Library.
6 #
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.
11 #
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.
16 #
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,
20 # MA 02111-1307, USA.
21 #
22 # The line format respects the parameter order in function prototype as
23 # follow:
24 #
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
26 #
27 # see sin.dat for precisions
28
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
75
76 # pure real argument
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
93
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
111
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
129
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
138