Subject: [PATCH Cwd.pm] cut-n-paste error?
[p5sagit/p5-mst-13.2.git] / lib / Math / BigInt / t / inf_nan.t
CommitLineData
b3abae2a 1#!/usr/bin/perl -w
2
3use Test;
4use strict;
5
6BEGIN
7 {
8 $| = 1;
9 plan tests => 7*6*4;
10 chdir 't' if -d 't';
11 unshift @INC, '../lib';
12 }
13
14use Math::BigInt;
15
16my (@args,$x,$y,$z);
17
18# +
19foreach (qw/
20 -inf:-inf:-inf
21 -1:-inf:-inf
22 -0:-inf:-inf
23 0:-inf:-inf
24 1:-inf:-inf
25 inf:-inf:NaN
26 NaN:-inf:NaN
27
28 -inf:-1:-inf
29 -1:-1:-2
30 -0:-1:-1
31 0:-1:-1
32 1:-1:0
33 inf:-1:inf
34 NaN:-1:NaN
35
36 -inf:0:-inf
37 -1:0:-1
38 -0:0:0
39 0:0:0
40 1:0:1
41 inf:0:inf
42 NaN:0:NaN
43
44 -inf:1:-inf
45 -1:1:0
46 -0:1:1
47 0:1:1
48 1:1:2
49 inf:1:inf
50 NaN:1:NaN
51
52 -inf:inf:NaN
53 -1:inf:inf
54 -0:inf:inf
55 0:inf:inf
56 1:inf:inf
57 inf:inf:inf
58 NaN:inf:NaN
59
60 -inf:NaN:NaN
61 -1:NaN:NaN
62 -0:NaN:NaN
63 0:NaN:NaN
64 1:NaN:NaN
65 inf:NaN:NaN
66 NaN:NaN:NaN
67 /)
68 {
69 @args = split /:/,$_;
70 $x = Math::BigInt->new($args[0]);
71 $y = Math::BigInt->new($args[1]);
72 $args[2] = '0' if $args[2] eq '-0'; # BigInt hasn't got -0
73 print "# $args[0] + $args[1] should be $args[2] but is ",$x->bstr(),"\n"
74 if !ok ($x->badd($y)->bstr(),$args[2]);
75 }
76
77# -
78foreach (qw/
79 -inf:-inf:NaN
80 -1:-inf:inf
81 -0:-inf:inf
82 0:-inf:inf
83 1:-inf:inf
84 inf:-inf:inf
85 NaN:-inf:NaN
86
87 -inf:-1:-inf
88 -1:-1:0
89 -0:-1:1
90 0:-1:1
91 1:-1:2
92 inf:-1:inf
93 NaN:-1:NaN
94
95 -inf:0:-inf
96 -1:0:-1
97 -0:0:-0
98 0:0:0
99 1:0:1
100 inf:0:inf
101 NaN:0:NaN
102
103 -inf:1:-inf
104 -1:1:-2
105 -0:1:-1
106 0:1:-1
107 1:1:0
108 inf:1:inf
109 NaN:1:NaN
110
111 -inf:inf:-inf
112 -1:inf:-inf
113 -0:inf:-inf
114 0:inf:-inf
115 1:inf:-inf
116 inf:inf:NaN
117 NaN:inf:NaN
118
119 -inf:NaN:NaN
120 -1:NaN:NaN
121 -0:NaN:NaN
122 0:NaN:NaN
123 1:NaN:NaN
124 inf:NaN:NaN
125 NaN:NaN:NaN
126 /)
127 {
128 @args = split /:/,$_;
129 $x = Math::BigInt->new($args[0]);
130 $y = Math::BigInt->new($args[1]);
131 $args[2] = '0' if $args[2] eq '-0'; # BigInt hasn't got -0
132 print "# $args[0] - $args[1] should be $args[2] but is $x\n"
133 if !ok ($x->bsub($y)->bstr(),$args[2]);
134 }
135
136# *
137foreach (qw/
138 -inf:-inf:inf
139 -1:-inf:inf
140 -0:-inf:NaN
141 0:-inf:NaN
142 1:-inf:-inf
143 inf:-inf:-inf
144 NaN:-inf:NaN
145
146 -inf:-1:inf
147 -1:-1:1
148 -0:-1:0
149 0:-1:-0
150 1:-1:-1
151 inf:-1:-inf
152 NaN:-1:NaN
153
154 -inf:0:NaN
155 -1:0:-0
156 -0:0:-0
157 0:0:0
158 1:0:0
159 inf:0:NaN
160 NaN:0:NaN
161
162 -inf:1:-inf
163 -1:1:-1
164 -0:1:-0
165 0:1:0
166 1:1:1
167 inf:1:inf
168 NaN:1:NaN
169
170 -inf:inf:-inf
171 -1:inf:-inf
172 -0:inf:NaN
173 0:inf:NaN
174 1:inf:inf
175 inf:inf:inf
176 NaN:inf:NaN
177
178 -inf:NaN:NaN
179 -1:NaN:NaN
180 -0:NaN:NaN
181 0:NaN:NaN
182 1:NaN:NaN
183 inf:NaN:NaN
184 NaN:NaN:NaN
185 /)
186 {
187 @args = split /:/,$_;
188 $x = Math::BigInt->new($args[0]);
189 $y = Math::BigInt->new($args[1]);
190 $args[2] = '0' if $args[2] eq '-0'; # BigInt hasn't got -0
191 print "# $args[0] * $args[1] should be $args[2] but is $x\n"
192 if !ok ($x->bmul($y)->bstr(),$args[2]);
193 }
194
195# /
196foreach (qw/
197 -inf:-inf:NaN
198 -1:-inf:0
199 -0:-inf:0
200 0:-inf:-0
201 1:-inf:-0
202 inf:-inf:NaN
203 NaN:-inf:NaN
204
205 -inf:-1:inf
206 -1:-1:1
207 -0:-1:0
208 0:-1:-0
209 1:-1:-1
210 inf:-1:-inf
211 NaN:-1:NaN
212
213 -inf:0:-inf
214 -1:0:-inf
215 -0:0:NaN
216 0:0:NaN
217 1:0:inf
218 inf:0:inf
219 NaN:0:NaN
220
221 -inf:1:-inf
222 -1:1:-1
223 -0:1:-0
224 0:1:0
225 1:1:1
226 inf:1:inf
227 NaN:1:NaN
228
229 -inf:inf:NaN
230 -1:inf:-0
231 -0:inf:-0
232 0:inf:0
233 1:inf:0
234 inf:inf:NaN
235 NaN:inf:NaN
236
237 -inf:NaN:NaN
238 -1:NaN:NaN
239 -0:NaN:NaN
240 0:NaN:NaN
241 1:NaN:NaN
242 inf:NaN:NaN
243 NaN:NaN:NaN
244 /)
245 {
246 @args = split /:/,$_;
247 $x = Math::BigInt->new($args[0]);
248 $y = Math::BigInt->new($args[1]);
249 $args[2] = '0' if $args[2] eq '-0'; # BigInt hasn't got -0
250 print "# $args[0] / $args[1] should be $args[2] but is $x\n"
251 if !ok ($x->bdiv($y)->bstr(),$args[2]);
252
253 }
254
255