Import Upstream version 0.8.2
[platform/upstream/mpc.git] / tests / mul.dat
1 # Data file for mpc_mul
2 #
3 # Copyright (C) 2008 Philippe Th\'eveny, Andreas Enge, Paul Zimmermann
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 # 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
26 #
27 # See add.dat for more details.
28
29 # special values (following ISO C99 standard, G.5.1)
30 0 0 53  nan 53 +inf    53 -inf 53 -inf 53 -inf 53 -inf N Z
31 0 0 53  nan 53 +inf    53 -inf 53 +inf 53   +1 53 -inf Z U
32 0 0 53 +inf 53 -inf    53 +inf 53 -inf 53 +inf 53   +0 U D
33 0 0 53 +inf 53 -inf    53 +inf 53 +inf 53   -0 53   -1 D N
34 0 0 53 -inf 53 +inf    53 -inf 53 -inf 53   -0 53   -1 N U
35 0 0 53 -inf 53 +inf    53 -inf 53 +inf 53 +inf 53  nan Z D
36 0 0 53 -inf 53 -inf    53 +inf 53 -inf 53  nan 53   -1 U N
37 0 0 53  nan 53  nan    53 +inf 53 +inf 53   -0 53  nan D Z
38 0 0 53  nan 53  nan    53 -inf 53 -inf 53  nan 53  nan N D
39
40 0 0 53 -inf 53 -inf    53   -1 53 -inf 53 +inf 53   -1 N D
41 0 0 53 -inf 53  nan    53 -inf 53   +1 53 +inf 53   -0 Z N
42 0 0 53 +inf 53  nan    53   +1 53 -inf 53   -0 53   +1 U Z
43 0 0 53  nan 53  nan    53 +inf 53   +1 53   -0 53   -0 D U
44 0 0 53  nan 53 -inf    53   -1 53 -inf 53 +inf 53  nan N N
45 0 0 53  nan 53 -inf    53 -inf 53   +1 53  nan 53   +1 Z Z
46 0 0 53  nan 53  nan    53   +1 53 -inf 53   -0 53  nan U U
47 0 0 53  nan 53  nan    53 +inf 53   +1 53  nan 53  nan D D
48
49 0 0 53 +inf 53  nan    53   -0 53 -inf 53   +0 53 +inf D D
50 0 0 53 -inf 53  nan    53 -inf 53   +0 53   +1 53   -0 N Z
51 0 0 53  nan 53  nan    53   +0 53 -inf 53   -0 53   -0 Z U
52 0 0 53 -inf 53  nan    53 +inf 53   +0 53 -inf 53  nan U D
53 0 0 53 -inf 53  nan    53   -0 53 -inf 53  nan 53   -1 D N
54 0 0 53  nan 53  nan    53 -inf 53   +0 53   +0 53  nan N U
55 0 0 53  nan 53  nan    53   +0 53 -inf 53  nan 53  nan Z D
56
57 0 0 53   +1 53   -0    53   +0 53   +1 53   -0 53   -1 Z D
58 0 0 53   -0 53   +0    53   -1 53   -0 53   +0 53   -0 U N
59 0 0 53 -inf 53  nan    53   -0 53   +1 53  nan 53 +inf D Z
60 0 0 53  nan 53  nan    53   +1 53   -0 53   -1 53  nan N D
61 0 0 53  nan 53  nan    53   +0 53   +1 53  nan 53   -0 Z N
62 0 0 53  nan 53  nan    53   -1 53   -0 53  nan 53  nan U Z
63
64 0 0 53   +0 53   +0    53   -0 53   +0 53   +0 53   -0 U Z
65 0 0 53  nan 53  nan    53   +0 53   -0 53  nan 53 -inf D U
66 0 0 53  nan 53  nan    53   +0 53   +0 53   -1 53  nan N N
67 0 0 53  nan 53  nan    53   -0 53   -0 53  nan 53   -0 Z Z
68 0 0 53  nan 53  nan    53   -0 53   +0 53  nan 53  nan U U
69
70 0 0 53 +inf 53  nan    53  nan 53 -inf 53  nan 53 +inf U U
71 0 0 53 -inf 53  nan    53 +inf 53  nan 53   -1 53  nan D D
72 0 0 53  nan 53  nan    53  nan 53 -inf 53  nan 53   -0 N Z
73 0 0 53  nan 53  nan    53 -inf 53  nan 53  nan 53  nan Z U
74
75 0 0 53  nan 53  nan    53   +1 53  nan 53  nan 53   -1 Z U
76 0 0 53  nan 53  nan    53  nan 53   +1 53   -0 53  nan U D
77 0 0 53  nan 53  nan    53   -1 53  nan 53  nan 53  nan D N
78
79 0 0 53  nan 53  nan    53  nan 53   +0 53   +0 53  nan D N
80 0 0 53  nan 53  nan    53   +0 53  nan 53  nan 53  nan N U
81
82 0 0 53  nan 53  nan    53  nan 53  nan 53  nan 53  nan N U
83
84 # pure real arguments
85 0 0 53  0x10000000000001p-52 53 -0    53 +1 53 -0 53 0x10000000000001p-52 53 -0 N N
86 0 0 53  0x10000000000001p-52 53 -0    53 +1 53 -0 53 0x10000000000001p-52 53 -0 Z Z
87 0 0 53  0x10000000000001p-52 53 -0    53 +1 53 -0 53 0x10000000000001p-52 53 -0 U U
88 0 0 53 -0x10000000000001p-52 53 -0    53 -1 53 -0 53 0x10000000000001p-52 53 -0 D D
89
90 # one pure real argument
91 0 0 53  0x10000000000001p-52 53  0x10000000000001p-52    53 +1 53 +1 53 0x10000000000001p-52 53 -0 N N
92 0 0 53  0x10000000000001p-52 53 -0x10000000000001p-51    53 +1 53 -2 53 0x10000000000001p-52 53 -0 Z Z
93 - + 53 -0x30000000000004p-52 53  0x30000000000004p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 N N
94 + - 53 -0x30000000000002p-52 53  0x30000000000002p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 Z Z
95 + + 53 -0x30000000000002p-52 53  0x30000000000004p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 U U
96 - - 53 -0x30000000000004p-52 53  0x30000000000002p-52    53 -3 53 +3 53 0x10000000000001p-52 53 +0 D D
97 0 0 53 -0x10000000000001p-52 53 -0x10000000000001p-50    53 -1 53 -4 53 0x10000000000001p-52 53 +0 D D
98 0 0 53                    +0 53                    +0    53 +0 53 +0 53 0x10000000000001p-52 53 -1 N N
99 0 0 53                    +0 53                    -0    53 +0 53 -0 53 0x10000000000001p-52 53 -2 Z Z
100 0 0 53                    +0 53                    +0    53 +0 53 +0 53 0x10000000000001p-52 53 +3 U U
101 0 0 53                    -0 53                    -0    53 -0 53 -0 53 0x10000000000001p-52 53 +4 D D
102
103 # pure imaginary arguments
104 0 0 53 -0x10000000000001p-52 53 -0     53 -0 53 0x10000000000001p-52 53 -0 53 +1 N N
105 0 0 53 -0x10000000000001p-52 53 +0     53 +0 53 0x10000000000001p-52 53 -0 53 +1 Z Z
106 0 0 53 -0x10000000000001p-52 53 +0     53 +0 53 0x10000000000001p-52 53 -0 53 +1 U U
107 0 0 53 -0x10000000000001p-52 53 -0     53 -0 53 0x10000000000001p-52 53 -0 53 +1 D D
108
109 # one pure imaginary argument
110 0 0 53 -0x10000000000001p-52 53 -0x10000000000001p-52   53 -0 53 0x10000000000001p-52 53 -1 53 +1 N N
111 0 0 53 +0x10000000000001p-52 53 -0x10000000000001p-51   53 +0 53 0x10000000000001p-52 53 -2 53 -1 Z Z
112 + - 53  0x30000000000004p-52 53 -0x30000000000004p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 N N
113 - + 53  0x30000000000002p-52 53 -0x30000000000002p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 Z Z
114 + + 53  0x30000000000004p-52 53 -0x30000000000002p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 U U
115 - - 53  0x30000000000002p-52 53 -0x30000000000004p-52   53 +0 53 0x10000000000001p-52 53 -3 53 -3 D D
116 0 0 53 +0x10000000000001p-52 53 -0x10000000000001p-50   53 -0 53 0x10000000000001p-52 53 -4 53 -1 D D
117
118 # big precision uses Karatsuba method
119 0 0 4096 0x1420176785BD601FC018AD36471p-96 4096 -0x1ECCDBDA38B2611A32848E7ADF43p-100    53  0x6B2E363676587p-44 53  0x1AC20AAC49ED37p-47 53  0x12264C57B44C6Bp-53 53 -0x138639A4B8D8B3p-50 N N
120
121 # Karatsuba case where x=0 since ad=bc: (1+i)^2 at artificially high
122 # precision so that Karatsuba is actually used.
123 0 0 4096 0 4096 2    4096 1 4096 1  4096 1 4096 1  N N
124 # trigger the line reducing prec_x to prec_u
125 0 0 4096 0 4096 2    40960 1 40960 1  40960 1 40960 1  N N
126 # another particular cases
127 + + 6 -0x9p-497 6 0x33p-315    6 -0x1dp-73 6  0x3p148   6  0x11p-463 6 0x3p-645  N N
128 + - 6 0x33p-315 6 0x9p-497     6   0x3p148 6  0x1dp-73  6  0x11p-463 6 0x3p-645  N N
129 0 0 4 0x1p-1902 4 0x3p-1085    4 -0x1p-892 4 -0x3p-75   4 -0x1p-1010 4 0         N N
130