summaryrefslogtreecommitdiff
path: root/tests/mul.dat
blob: 7ee10b829a7ea0ac2f130cb427e45ef7b6140274 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# Data file for mpc_mul
#
# Copyright (C) 2008, 2010 Philippe Th\'eveny, Andreas Enge, Paul Zimmermann
#
# This file is part of the MPC Library.
#
# The MPC Library 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 2.1 of the License, or (at your
# option) any later version.
#
# The MPC Library 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 the MPC Library; see the file COPYING.LIB.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.
#
# 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_OP1_RE  OP1_RE  PREC_OP1_IM  OP1_IM  PREC_OP2_RE  OP2_RE  PREC_OP2_IM  OP2_IM  RND_RE  RND_IM
#
# See add.dat for more details.

# special values (following ISO C99 standard, G.5.1)
0 0 53  nan 53 +inf    53 -inf 53 -inf 53 -inf 53 -inf N Z
0 0 53  nan 53 +inf    53 -inf 53 +inf 53   +1 53 -inf Z U
0 0 53 +inf 53 -inf    53 +inf 53 -inf 53 +inf 53   +0 U D
0 0 53 +inf 53 -inf    53 +inf 53 +inf 53   -0 53   -1 D N
0 0 53 -inf 53 +inf    53 -inf 53 -inf 53   -0 53   -1 N U
0 0 53 -inf 53 +inf    53 -inf 53 +inf 53 +inf 53  nan Z D
0 0 53 -inf 53 -inf    53 +inf 53 -inf 53  nan 53   -1 U N
0 0 53  nan 53  nan    53 +inf 53 +inf 53   -0 53  nan D Z
0 0 53  nan 53  nan    53 -inf 53 -inf 53  nan 53  nan N D

0 0 53 -inf 53 -inf    53   -1 53 -inf 53 +inf 53   -1 N D
0 0 53 -inf 53  nan    53 -inf 53   +1 53 +inf 53   -0 Z N
0 0 53 +inf 53  nan    53   +1 53 -inf 53   -0 53   +1 U Z
0 0 53  nan 53  nan    53 +inf 53   +1 53   -0 53   -0 D U
0 0 53  nan 53 -inf    53   -1 53 -inf 53 +inf 53  nan N N
0 0 53  nan 53 -inf    53 -inf 53   +1 53  nan 53   +1 Z Z
0 0 53  nan 53  nan    53   +1 53 -inf 53   -0 53  nan U U
0 0 53  nan 53  nan    53 +inf 53   +1 53  nan 53  nan D D

0 0 53 +inf 53  nan    53   -0 53 -inf 53   +0 53 +inf D D
0 0 53 -inf 53  nan    53 -inf 53   +0 53   +1 53   -0 N Z
0 0 53  nan 53  nan    53   +0 53 -inf 53   -0 53   -0 Z U
0 0 53 -inf 53  nan    53 +inf 53   +0 53 -inf 53  nan U D
0 0 53 -inf 53  nan    53   -0 53 -inf 53  nan 53   -1 D N
0 0 53  nan 53  nan    53 -inf 53   +0 53   +0 53  nan N U
0 0 53  nan 53  nan    53   +0 53 -inf 53  nan 53  nan Z D

0 0 53   +1 53   -0    53   +0 53   +1 53   -0 53   -1 Z D
0 0 53   -0 53   +0    53   -1 53   -0 53   +0 53   -0 U N
0 0 53 -inf 53  nan    53   -0 53   +1 53  nan 53 +inf D Z
0 0 53  nan 53  nan    53   +1 53   -0 53   -1 53  nan N D
0 0 53  nan 53  nan    53   +0 53   +1 53  nan 53   -0 Z N
0 0 53  nan 53  nan    53   -1 53   -0 53  nan 53  nan U Z

0 0 53   +0 53   +0    53   -0 53   +0 53   +0 53   -0 U Z
0 0 53  nan 53  nan    53   +0 53   -0 53  nan 53 -inf D U
0 0 53  nan 53  nan    53   +0 53   +0 53   -1 53  nan N N
0 0 53  nan 53  nan    53   -0 53   -0 53  nan 53   -0 Z Z
0 0 53  nan 53  nan    53   -0 53   +0 53  nan 53  nan U U

0 0 53 +inf 53  nan    53  nan 53 -inf 53  nan 53 +inf U U
0 0 53 -inf 53  nan    53 +inf 53  nan 53   -1 53  nan D D
0 0 53  nan 53  nan    53  nan 53 -inf 53  nan 53   -0 N Z
0 0 53  nan 53  nan    53 -inf 53  nan 53  nan 53  nan Z U

0 0 53  nan 53  nan    53   +1 53  nan 53  nan 53   -1 Z U
0 0 53  nan 53  nan    53  nan 53   +1 53   -0 53  nan U D
0 0 53  nan 53  nan    53   -1 53  nan 53  nan 53  nan D N

0 0 53  nan 53  nan    53  nan 53   +0 53   +0 53  nan D N
0 0 53  nan 53  nan    53   +0 53  nan 53  nan 53  nan N U

0 0 53  nan 53  nan    53  nan 53  nan 53  nan 53  nan N U

# pure real arguments
0 0 53  0x10000000000001p-52 53 -0    53 +1 53 -0 53 0x10000000000001p-52 53 -0 N N
0 0 53  0x10000000000001p-52 53 -0    53 +1 53 -0 53 0x10000000000001p-52 53 -0 Z Z
0 0 53  0x10000000000001p-52 53 -0    53 +1 53 -0 53 0x10000000000001p-52 53 -0 U U
0 0 53 -0x10000000000001p-52 53 -0    53 -1 53 -0 53 0x10000000000001p-52 53 -0 D D

# one pure real argument
0 0 53  0x10000000000001p-52 53  0x10000000000001p-52    53 +1 53 +1 53 0x10000000000001p-52 53 -0 N N
0 0 53  0x10000000000001p-52 53 -0x10000000000001p-51    53 +1 53 -2 53 0x10000000000001p-52 53 -0 Z Z
- + 53 -0x30000000000004p-52 53  0x30000000000004p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 N N
+ - 53 -0x30000000000002p-52 53  0x30000000000002p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 Z Z
+ + 53 -0x30000000000002p-52 53  0x30000000000004p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 U U
- - 53 -0x30000000000004p-52 53  0x30000000000002p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 D D
0 0 53 -0x10000000000001p-52 53 -0x10000000000001p-50    53 -1 53 -4 53 0x10000000000001p-52 53 +0 D D
0 0 53                    +0 53                    +0    53 +0 53 +0 53 0x10000000000001p-52 53 -1 N N
0 0 53                    +0 53                    -0    53 +0 53 -0 53 0x10000000000001p-52 53 -2 Z Z
0 0 53                    +0 53                    +0    53 +0 53 +0 53 0x10000000000001p-52 53 +3 U U
0 0 53                    -0 53                    -0    53 -0 53 -0 53 0x10000000000001p-52 53 +4 D D

# pure imaginary arguments
0 0 53 -0x10000000000001p-52 53 -0     53 -0 53 0x10000000000001p-52 53 -0 53 +1 N N
0 0 53 -0x10000000000001p-52 53 +0     53 +0 53 0x10000000000001p-52 53 -0 53 +1 Z Z
0 0 53 -0x10000000000001p-52 53 +0     53 +0 53 0x10000000000001p-52 53 -0 53 +1 U U
0 0 53 -0x10000000000001p-52 53 -0     53 -0 53 0x10000000000001p-52 53 -0 53 +1 D D

# one pure imaginary argument
0 0 53 -0x10000000000001p-52 53 -0x10000000000001p-52   53 -0 53 0x10000000000001p-52 53 -1 53 +1 N N
0 0 53 +0x10000000000001p-52 53 -0x10000000000001p-51   53 +0 53 0x10000000000001p-52 53 -2 53 -1 Z Z
+ - 53  0x30000000000004p-52 53 -0x30000000000004p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 N N
- + 53  0x30000000000002p-52 53 -0x30000000000002p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 Z Z
+ + 53  0x30000000000004p-52 53 -0x30000000000002p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 U U
- - 53  0x30000000000002p-52 53 -0x30000000000004p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 D D
0 0 53 +0x10000000000001p-52 53 -0x10000000000001p-50   53 -0 53 0x10000000000001p-52 53 -4 53 -1 D D

# big precision uses Karatsuba method
0 0 4096 0x1420176785BD601FC018AD36471p-96 4096 -0x1ECCDBDA38B2611A32848E7ADF43p-100    53  0x6B2E363676587p-44 53  0x1AC20AAC49ED37p-47 53  0x12264C57B44C6Bp-53 53 -0x138639A4B8D8B3p-50 N N

# Karatsuba case where x=0 since ad=bc: (1+i)^2 at artificially high
# precision so that Karatsuba is actually used.
0 0 4096 0 4096 2    4096 1 4096 1  4096 1 4096 1  N N
# trigger the line reducing prec_x to prec_u
0 0 4096 0 4096 2    40960 1 40960 1  40960 1 40960 1  N N
# another particular cases
+ + 6 -0x9p-497 6 0x33p-315    6 -0x1dp-73 6  0x3p148   6  0x11p-463 6 0x3p-645  N N
+ - 6 0x33p-315 6 0x9p-497     6   0x3p148 6  0x1dp-73  6  0x11p-463 6 0x3p-645  N N
0 0 4 0x1p-1902 4 0x3p-1085    4 -0x1p-892 4 -0x3p-75   4 -0x1p-1010 4 0         N N

# a few values, previously hard-coded in tmul.c
0 0 8 10 8 -5  8 4 8 3  8 1 8 -2 N N
+ + 27 0b1.10110000001100010010000000e-3 27 0b1.00111100000010100001011001e-1  27 0b1.11111011011000010101000000e-2 27 0b1.11010001010110111001110001e-3  27 0b1.10100101110110011011100100e-1 27 0b1.10111100011000001100110011e-1 N N

# check squares, copied from sqr.dat
+ - 53  0xfdbac097c8dc58p+2096 53 -0x7f6e5d4c3b2a2p+1036   53 -0xfedcba9876543p+1024 53  0x10000000000001p-42  53 -0xfedcba9876543p+1024 53  0x10000000000001p-42  U D
+ 0 30 309485009533114692573069312 30 18889465966662952943616  30 17592186044416 30 536870913 30 17592186044416 30 536870913 N N
0 0 4 0 4 2  4 1 4 1 4 1 4 1 N N
+ + 8 0b1.1000111e-3 8 0b1.1100111e-3  27 0b1.11111011011000010101000000e-2 27 0b1.11010001010110111001110001e-3 27 0b1.11111011011000010101000000e-2 27 0b1.11010001010110111001110001e-3 N N
? + 3464 inf 3464 inf  866 -0x2.5763c6519ef1510f8afa101a210b8030b1909cc17004db561a25d9b53e2c08c41c01e8bbac5af6299b9d8786030aa14943d841798c8c369287942e4d4cec42a60ab0922af931159805e631128e97f973754ad53972d5d320a651a3b4a667f0ef2b92dbd698d159c3642675140@192158913 866 -0xd.15f2d530934dd930d66e89d70762d2337a8f973dd6915eb6b532fd372fcc955df1d852632d4e46fe64154ceda991a1302caf1b0ec622497e3e5724dd05b1c89a06e28d7e18e8af58f5ff4c9998cb31714688867524f41e0b31e847c1bf40de5127f858069998efd7c3e599080@192158893 866 -0x2.5763c6519ef1510f8afa101a210b8030b1909cc17004db561a25d9b53e2c08c41c01e8bbac5af6299b9d8786030aa14943d841798c8c369287942e4d4cec42a60ab0922af931159805e631128e97f973754ad53972d5d320a651a3b4a667f0ef2b92dbd698d159c3642675140@192158913 866 -0xd.15f2d530934dd930d66e89d70762d2337a8f973dd6915eb6b532fd372fcc955df1d852632d4e46fe64154ceda991a1302caf1b0ec622497e3e5724dd05b1c89a06e28d7e18e8af58f5ff4c9998cb31714688867524f41e0b31e847c1bf40de5127f858069998efd7c3e599080@192158893 N N
? + 2256 0 2256 -0  564 0xc.87999bfd1cb1a64288881e214b7cf1af979863b23c030b79c4a8bebb39177967608388a2e4df527977e7755a25df8af8f72fdd6dd2f42bd00de83088b4e9b59ce85caf2e6b0c0@-184298749 564 -0x2.5109af459d4daf357e09475ec991cdc9b02c8f7dfacdc060d2a24710d09c997f8aea6dbd46f10828c30b583fdcc90d7dcbb895689d594d3813db40784d2309e450d1fb6e38da8@-184298726 564 0xc.87999bfd1cb1a64288881e214b7cf1af979863b23c030b79c4a8bebb39177967608388a2e4df527977e7755a25df8af8f72fdd6dd2f42bd00de83088b4e9b59ce85caf2e6b0c0@-184298749 564 -0x2.5109af459d4daf357e09475ec991cdc9b02c8f7dfacdc060d2a24710d09c997f8aea6dbd46f10828c30b583fdcc90d7dcbb895689d594d3813db40784d2309e450d1fb6e38da8@-184298726 N N