xref: /openbsd-src/gnu/usr.bin/perl/cpan/Math-BigInt/t/inf_nan.t (revision e068048151d29f2562a32185e21a8ba885482260)
1eac174f2Safresh1# -*- mode: perl; -*-
2b8851fccSafresh1
3b8851fccSafresh1# test inf/NaN handling all in one place
4b8851fccSafresh1
5b8851fccSafresh1use strict;
6b8851fccSafresh1use warnings;
7b8851fccSafresh1use lib 't';
8b8851fccSafresh1
9*e0680481Safresh1use Test::More tests => 1044;
10b8851fccSafresh1
11b8851fccSafresh1use Math::BigInt;
12b8851fccSafresh1use Math::BigFloat;
13b8851fccSafresh1use Math::BigInt::Subclass;
14b8851fccSafresh1use Math::BigFloat::Subclass;
15b8851fccSafresh1
16b8851fccSafresh1my @biclasses = qw/ Math::BigInt   Math::BigInt::Subclass   /;
17b8851fccSafresh1my @bfclasses = qw/ Math::BigFloat Math::BigFloat::Subclass /;
18b8851fccSafresh1
19*e0680481Safresh1my (@args, $x, $y, $z, $test);
20b8851fccSafresh1
21b8851fccSafresh1# +
22b8851fccSafresh1
23b8851fccSafresh1foreach (qw/
24b8851fccSafresh1
25b8851fccSafresh1    -inf:-inf:-inf
26b8851fccSafresh1    -1:-inf:-inf
27b8851fccSafresh1    -0:-inf:-inf
28b8851fccSafresh1    0:-inf:-inf
29b8851fccSafresh1    1:-inf:-inf
30b8851fccSafresh1    inf:-inf:NaN
31b8851fccSafresh1    NaN:-inf:NaN
32b8851fccSafresh1
33b8851fccSafresh1    -inf:-1:-inf
34b8851fccSafresh1    -1:-1:-2
35b8851fccSafresh1    -0:-1:-1
36b8851fccSafresh1    0:-1:-1
37b8851fccSafresh1    1:-1:0
38b8851fccSafresh1    inf:-1:inf
39b8851fccSafresh1    NaN:-1:NaN
40b8851fccSafresh1
41b8851fccSafresh1    -inf:0:-inf
42b8851fccSafresh1    -1:0:-1
43b8851fccSafresh1    -0:0:0
44b8851fccSafresh1    0:0:0
45b8851fccSafresh1    1:0:1
46b8851fccSafresh1    inf:0:inf
47b8851fccSafresh1    NaN:0:NaN
48b8851fccSafresh1
49b8851fccSafresh1    -inf:1:-inf
50b8851fccSafresh1    -1:1:0
51b8851fccSafresh1    -0:1:1
52b8851fccSafresh1    0:1:1
53b8851fccSafresh1    1:1:2
54b8851fccSafresh1    inf:1:inf
55b8851fccSafresh1    NaN:1:NaN
56b8851fccSafresh1
57b8851fccSafresh1    -inf:inf:NaN
58b8851fccSafresh1    -1:inf:inf
59b8851fccSafresh1    -0:inf:inf
60b8851fccSafresh1    0:inf:inf
61b8851fccSafresh1    1:inf:inf
62b8851fccSafresh1    inf:inf:inf
63b8851fccSafresh1    NaN:inf:NaN
64b8851fccSafresh1
65b8851fccSafresh1    -inf:NaN:NaN
66b8851fccSafresh1    -1:NaN:NaN
67b8851fccSafresh1    -0:NaN:NaN
68b8851fccSafresh1    0:NaN:NaN
69b8851fccSafresh1    1:NaN:NaN
70b8851fccSafresh1    inf:NaN:NaN
71b8851fccSafresh1    NaN:NaN:NaN
72b8851fccSafresh1
73b8851fccSafresh1  /)
74b8851fccSafresh1{
75b8851fccSafresh1    @args = split /:/, $_;
76b8851fccSafresh1    for my $class (@biclasses, @bfclasses) {
77*e0680481Safresh1        $args[2] = '0' if $args[2] eq '-0';     # Math::Big* has no -0
78b8851fccSafresh1        $x = $class->new($args[0]);
79b8851fccSafresh1        $y = $class->new($args[1]);
80*e0680481Safresh1        $z = $x->badd($y);
81b8851fccSafresh1
82*e0680481Safresh1        $test = qq|\$x = $class->new("$args[0]"); |
83*e0680481Safresh1              . qq|\$y = $class->new("$args[1]"); |
84*e0680481Safresh1              . qq|\$z = \$x->badd(\$y);|;
85*e0680481Safresh1
86*e0680481Safresh1        subtest $test => sub {
87*e0680481Safresh1            plan tests => 6;
88*e0680481Safresh1
89*e0680481Safresh1            is(ref($x), $class, "\$x is a $class");
90*e0680481Safresh1            is(ref($y), $class, "\$y is still a $class");
91*e0680481Safresh1            is(ref($z), $class, "\$z is a $class");
92*e0680481Safresh1            is($x->bstr(), $args[2], 'value of $x');
93*e0680481Safresh1            is($y->bstr(), $args[1], 'value of $y');
94*e0680481Safresh1            is($z->bstr(), $args[2], 'value of $z');
95*e0680481Safresh1        };
96b8851fccSafresh1    }
97b8851fccSafresh1}
98b8851fccSafresh1
99b8851fccSafresh1# -
100b8851fccSafresh1
101b8851fccSafresh1foreach (qw/
102b8851fccSafresh1
103b8851fccSafresh1    -inf:-inf:NaN
104b8851fccSafresh1    -1:-inf:inf
105b8851fccSafresh1    -0:-inf:inf
106b8851fccSafresh1    0:-inf:inf
107b8851fccSafresh1    1:-inf:inf
108b8851fccSafresh1    inf:-inf:inf
109b8851fccSafresh1    NaN:-inf:NaN
110b8851fccSafresh1
111b8851fccSafresh1    -inf:-1:-inf
112b8851fccSafresh1    -1:-1:0
113b8851fccSafresh1    -0:-1:1
114b8851fccSafresh1    0:-1:1
115b8851fccSafresh1    1:-1:2
116b8851fccSafresh1    inf:-1:inf
117b8851fccSafresh1    NaN:-1:NaN
118b8851fccSafresh1
119b8851fccSafresh1    -inf:0:-inf
120b8851fccSafresh1    -1:0:-1
121b8851fccSafresh1    -0:0:-0
122b8851fccSafresh1    0:0:0
123b8851fccSafresh1    1:0:1
124b8851fccSafresh1    inf:0:inf
125b8851fccSafresh1    NaN:0:NaN
126b8851fccSafresh1
127b8851fccSafresh1    -inf:1:-inf
128b8851fccSafresh1    -1:1:-2
129b8851fccSafresh1    -0:1:-1
130b8851fccSafresh1    0:1:-1
131b8851fccSafresh1    1:1:0
132b8851fccSafresh1    inf:1:inf
133b8851fccSafresh1    NaN:1:NaN
134b8851fccSafresh1
135b8851fccSafresh1    -inf:inf:-inf
136b8851fccSafresh1    -1:inf:-inf
137b8851fccSafresh1    -0:inf:-inf
138b8851fccSafresh1    0:inf:-inf
139b8851fccSafresh1    1:inf:-inf
140b8851fccSafresh1    inf:inf:NaN
141b8851fccSafresh1    NaN:inf:NaN
142b8851fccSafresh1
143b8851fccSafresh1    -inf:NaN:NaN
144b8851fccSafresh1    -1:NaN:NaN
145b8851fccSafresh1    -0:NaN:NaN
146b8851fccSafresh1    0:NaN:NaN
147b8851fccSafresh1    1:NaN:NaN
148b8851fccSafresh1    inf:NaN:NaN
149b8851fccSafresh1    NaN:NaN:NaN
150b8851fccSafresh1
151b8851fccSafresh1  /)
152b8851fccSafresh1{
153b8851fccSafresh1    @args = split /:/, $_;
154b8851fccSafresh1    for my $class (@biclasses, @bfclasses) {
155*e0680481Safresh1        $args[2] = '0' if $args[2] eq '-0';     # Math::Big* has no -0
156b8851fccSafresh1        $x = $class->new($args[0]);
157b8851fccSafresh1        $y = $class->new($args[1]);
158*e0680481Safresh1        $z = $x->bsub($y);
159b8851fccSafresh1
160*e0680481Safresh1        $test = qq|\$x = $class->new("$args[0]"); |
161*e0680481Safresh1              . qq|\$y = $class->new("$args[1]"); |
162*e0680481Safresh1              . qq|\$z = \$x->bsub(\$y);|;
163*e0680481Safresh1
164*e0680481Safresh1        subtest $test => sub {
165*e0680481Safresh1            plan tests => 6;
166*e0680481Safresh1
167*e0680481Safresh1            is(ref($x), $class, "\$x is a $class");
168*e0680481Safresh1            is(ref($y), $class, "\$y is still a $class");
169*e0680481Safresh1            is(ref($z), $class, "\$z is a $class");
170*e0680481Safresh1            is($x->bstr(), $args[2], 'value of $x');
171*e0680481Safresh1            is($y->bstr(), $args[1], 'value of $y');
172*e0680481Safresh1            is($z->bstr(), $args[2], 'value of $z');
173*e0680481Safresh1        };
174b8851fccSafresh1    }
175b8851fccSafresh1}
176b8851fccSafresh1
177b8851fccSafresh1# *
178b8851fccSafresh1
179b8851fccSafresh1foreach (qw/
180b8851fccSafresh1
181b8851fccSafresh1    -inf:-inf:inf
182b8851fccSafresh1    -1:-inf:inf
183b8851fccSafresh1    -0:-inf:NaN
184b8851fccSafresh1    0:-inf:NaN
185b8851fccSafresh1    1:-inf:-inf
186b8851fccSafresh1    inf:-inf:-inf
187b8851fccSafresh1    NaN:-inf:NaN
188b8851fccSafresh1
189b8851fccSafresh1    -inf:-1:inf
190b8851fccSafresh1    -1:-1:1
191b8851fccSafresh1    -0:-1:0
192b8851fccSafresh1    0:-1:-0
193b8851fccSafresh1    1:-1:-1
194b8851fccSafresh1    inf:-1:-inf
195b8851fccSafresh1    NaN:-1:NaN
196b8851fccSafresh1
197b8851fccSafresh1    -inf:0:NaN
198b8851fccSafresh1    -1:0:-0
199b8851fccSafresh1    -0:0:-0
200b8851fccSafresh1    0:0:0
201b8851fccSafresh1    1:0:0
202b8851fccSafresh1    inf:0:NaN
203b8851fccSafresh1    NaN:0:NaN
204b8851fccSafresh1
205b8851fccSafresh1    -inf:1:-inf
206b8851fccSafresh1    -1:1:-1
207b8851fccSafresh1    -0:1:-0
208b8851fccSafresh1    0:1:0
209b8851fccSafresh1    1:1:1
210b8851fccSafresh1    inf:1:inf
211b8851fccSafresh1    NaN:1:NaN
212b8851fccSafresh1
213b8851fccSafresh1    -inf:inf:-inf
214b8851fccSafresh1    -1:inf:-inf
215b8851fccSafresh1    -0:inf:NaN
216b8851fccSafresh1    0:inf:NaN
217b8851fccSafresh1    1:inf:inf
218b8851fccSafresh1    inf:inf:inf
219b8851fccSafresh1    NaN:inf:NaN
220b8851fccSafresh1
221b8851fccSafresh1    -inf:NaN:NaN
222b8851fccSafresh1    -1:NaN:NaN
223b8851fccSafresh1    -0:NaN:NaN
224b8851fccSafresh1    0:NaN:NaN
225b8851fccSafresh1    1:NaN:NaN
226b8851fccSafresh1    inf:NaN:NaN
227b8851fccSafresh1    NaN:NaN:NaN
228b8851fccSafresh1
229b8851fccSafresh1    /)
230b8851fccSafresh1{
231b8851fccSafresh1    @args = split /:/, $_;
232b8851fccSafresh1    for my $class (@biclasses, @bfclasses) {
233*e0680481Safresh1        $args[2] = '0' if $args[2] eq '-0';     # Math::Big* has no -0
234b8851fccSafresh1        $x = $class->new($args[0]);
235b8851fccSafresh1        $y = $class->new($args[1]);
236*e0680481Safresh1        $z = $x->bmul($y);
237b8851fccSafresh1
238*e0680481Safresh1        $test = qq|\$x = $class->new("$args[0]"); |
239*e0680481Safresh1              . qq|\$y = $class->new("$args[1]"); |
240*e0680481Safresh1              . qq|\$z = \$x->bmul(\$y);|;
241*e0680481Safresh1
242*e0680481Safresh1        subtest $test => sub {
243*e0680481Safresh1            plan tests => 6;
244*e0680481Safresh1
245*e0680481Safresh1            is(ref($x), $class, "\$x is a $class");
246*e0680481Safresh1            is(ref($y), $class, "\$y is still a $class");
247*e0680481Safresh1            is(ref($z), $class, "\$z is a $class");
248*e0680481Safresh1            is($x->bstr(), $args[2], 'value of $x');
249*e0680481Safresh1            is($y->bstr(), $args[1], 'value of $y');
250*e0680481Safresh1            is($z->bstr(), $args[2], 'value of $z');
251*e0680481Safresh1        };
252b8851fccSafresh1    }
253b8851fccSafresh1}
254b8851fccSafresh1
255b8851fccSafresh1# /
256b8851fccSafresh1
257b8851fccSafresh1foreach (qw/
258b8851fccSafresh1
259b8851fccSafresh1    -inf:-inf:NaN
260b8851fccSafresh1    -1:-inf:0
261b8851fccSafresh1    -0:-inf:0
262b8851fccSafresh1    0:-inf:-0
263b8851fccSafresh1    1:-inf:-1
264b8851fccSafresh1    inf:-inf:NaN
265b8851fccSafresh1    NaN:-inf:NaN
266b8851fccSafresh1
267b8851fccSafresh1    -inf:-1:inf
268b8851fccSafresh1    -1:-1:1
269b8851fccSafresh1    -0:-1:0
270b8851fccSafresh1    0:-1:-0
271b8851fccSafresh1    1:-1:-1
272b8851fccSafresh1    inf:-1:-inf
273b8851fccSafresh1    NaN:-1:NaN
274b8851fccSafresh1
275b8851fccSafresh1    -inf:0:-inf
276b8851fccSafresh1    -1:0:-inf
277b8851fccSafresh1    -0:0:NaN
278b8851fccSafresh1    0:0:NaN
279b8851fccSafresh1    1:0:inf
280b8851fccSafresh1    inf:0:inf
281b8851fccSafresh1    NaN:0:NaN
282b8851fccSafresh1
283b8851fccSafresh1    -inf:1:-inf
284b8851fccSafresh1    -1:1:-1
285b8851fccSafresh1    -0:1:-0
286b8851fccSafresh1    0:1:0
287b8851fccSafresh1    1:1:1
288b8851fccSafresh1    inf:1:inf
289b8851fccSafresh1    NaN:1:NaN
290b8851fccSafresh1
291b8851fccSafresh1    -inf:inf:NaN
292b8851fccSafresh1    -1:inf:-1
293b8851fccSafresh1    -0:inf:-0
294b8851fccSafresh1    0:inf:0
295b8851fccSafresh1    1:inf:0
296b8851fccSafresh1    inf:inf:NaN
297b8851fccSafresh1    NaN:inf:NaN
298b8851fccSafresh1
299b8851fccSafresh1    -inf:NaN:NaN
300b8851fccSafresh1    -1:NaN:NaN
301b8851fccSafresh1    -0:NaN:NaN
302b8851fccSafresh1    0:NaN:NaN
303b8851fccSafresh1    1:NaN:NaN
304b8851fccSafresh1    inf:NaN:NaN
305b8851fccSafresh1    NaN:NaN:NaN
306b8851fccSafresh1
307b8851fccSafresh1    /)
308b8851fccSafresh1{
309b8851fccSafresh1    @args = split /:/, $_;
310b8851fccSafresh1    for my $class (@biclasses, @bfclasses) {
311*e0680481Safresh1        $args[2] = '0' if $args[2] eq '-0';     # Math::Big* has no -0
312b8851fccSafresh1
313*e0680481Safresh1        my ($q, $r);
314b8851fccSafresh1
315b8851fccSafresh1        # bdiv in scalar context
316*e0680481Safresh1
317*e0680481Safresh1        $x = $class->new($args[0]);
318*e0680481Safresh1        $y = $class->new($args[1]);
319*e0680481Safresh1
320b8851fccSafresh1        unless ($class =~ /^Math::BigFloat/) {
321*e0680481Safresh1            $q = $x->bdiv($y);
322*e0680481Safresh1
323*e0680481Safresh1            $test = qq|\$x = $class->new("$args[0]"); |
324*e0680481Safresh1                  . qq|\$y = $class->new("$args[1]"); |
325*e0680481Safresh1                  . qq|\$q = \$x->bdiv(\$y);|;
326*e0680481Safresh1
327*e0680481Safresh1            subtest $test => sub {
328*e0680481Safresh1                plan tests => 6;
329*e0680481Safresh1
330*e0680481Safresh1                is(ref($x), $class, "\$x is a $class");
331*e0680481Safresh1                is(ref($y), $class, "\$y is still a $class");
332*e0680481Safresh1                is(ref($q), $class, "\$q is a $class");
333*e0680481Safresh1                is($x->bstr(), $args[2], 'value of $x');
334*e0680481Safresh1                is($y->bstr(), $args[1], 'value of $y');
335*e0680481Safresh1                is($q->bstr(), $args[2], 'value of $q');
336*e0680481Safresh1            };
337b8851fccSafresh1        }
338b8851fccSafresh1
339b8851fccSafresh1        # bmod and bdiv in list context
340*e0680481Safresh1
341*e0680481Safresh1        $x = $class->new($args[0]);
342*e0680481Safresh1        $y = $class->new($args[1]);
343*e0680481Safresh1
344*e0680481Safresh1        ($q, $r) = $x->bdiv($y);
345b8851fccSafresh1
346b8851fccSafresh1        # bdiv in list context
347*e0680481Safresh1
348*e0680481Safresh1        $test = qq|\$x = $class->new("$args[0]"); |
349*e0680481Safresh1              . qq|\$y = $class->new("$args[1]"); |
350*e0680481Safresh1              . qq|(\$q, \$r) = \$x->bdiv(\$y);|;
351*e0680481Safresh1
352*e0680481Safresh1        subtest $test => sub {
353*e0680481Safresh1            plan tests => 7;
354*e0680481Safresh1
355*e0680481Safresh1            is(ref($x), $class, "\$x is a $class");
356*e0680481Safresh1            is(ref($y), $class, "\$y is still a $class");
357*e0680481Safresh1            is(ref($q), $class, "\$q is a $class");
358*e0680481Safresh1            is(ref($r), $class, "\$r is a $class");
359*e0680481Safresh1            is($x->bstr(), $args[2], 'value of $x');
360*e0680481Safresh1            is($y->bstr(), $args[1], 'value of $y');
361*e0680481Safresh1            is($q->bstr(), $args[2], 'value of $q');
362*e0680481Safresh1        };
363b8851fccSafresh1
364b8851fccSafresh1        # bmod
365b8851fccSafresh1
366*e0680481Safresh1        $x = $class->new($args[0]);
367*e0680481Safresh1        $y = $class->new($args[1]);
368*e0680481Safresh1
369*e0680481Safresh1        my $m = $x->bmod($y);
370*e0680481Safresh1
371*e0680481Safresh1        $test = qq|\$x = $class->new("$args[0]"); |
372*e0680481Safresh1              . qq|\$y = $class->new("$args[1]"); |
373*e0680481Safresh1              . qq|\$m = \$x->bmod(\$y);|;
374*e0680481Safresh1
375*e0680481Safresh1        subtest $test => sub {
376*e0680481Safresh1            plan tests => 6;
377*e0680481Safresh1
378*e0680481Safresh1            is(ref($x), $class, "\$x is a $class");
379*e0680481Safresh1            is(ref($y), $class, "\$y is still a $class");
380*e0680481Safresh1            is(ref($m), $class, "\$m is a $class");
381*e0680481Safresh1            is($x->bstr(), $r->bstr(), 'value of $x');
382*e0680481Safresh1            is($y->bstr(), $args[1], 'value of $y');
383*e0680481Safresh1            is($m->bstr(), $r->bstr(), 'value of $m');
384*e0680481Safresh1        };
385b8851fccSafresh1    }
386b8851fccSafresh1}
387b8851fccSafresh1
388b8851fccSafresh1# /
389b8851fccSafresh1
390b8851fccSafresh1foreach (qw/
391b8851fccSafresh1
392b8851fccSafresh1    -inf:-inf:NaN
393b8851fccSafresh1    -1:-inf:0
394b8851fccSafresh1    -0:-inf:0
395b8851fccSafresh1    0:-inf:-0
396b8851fccSafresh1    1:-inf:-0
397b8851fccSafresh1    inf:-inf:NaN
398b8851fccSafresh1    NaN:-inf:NaN
399b8851fccSafresh1
400b8851fccSafresh1    -inf:-1:inf
401b8851fccSafresh1    -1:-1:1
402b8851fccSafresh1    -0:-1:0
403b8851fccSafresh1    0:-1:-0
404b8851fccSafresh1    1:-1:-1
405b8851fccSafresh1    inf:-1:-inf
406b8851fccSafresh1    NaN:-1:NaN
407b8851fccSafresh1
408b8851fccSafresh1    -inf:0:-inf
409b8851fccSafresh1    -1:0:-inf
410b8851fccSafresh1    -0:0:NaN
411b8851fccSafresh1    0:0:NaN
412b8851fccSafresh1    1:0:inf
413b8851fccSafresh1    inf:0:inf
414b8851fccSafresh1    NaN:0:NaN
415b8851fccSafresh1
416b8851fccSafresh1    -inf:1:-inf
417b8851fccSafresh1    -1:1:-1
418b8851fccSafresh1    -0:1:-0
419b8851fccSafresh1    0:1:0
420b8851fccSafresh1    1:1:1
421b8851fccSafresh1    inf:1:inf
422b8851fccSafresh1    NaN:1:NaN
423b8851fccSafresh1
424b8851fccSafresh1    -inf:inf:NaN
425b8851fccSafresh1    -1:inf:-0
426b8851fccSafresh1    -0:inf:-0
427b8851fccSafresh1    0:inf:0
428b8851fccSafresh1    1:inf:0
429b8851fccSafresh1    inf:inf:NaN
430b8851fccSafresh1    NaN:inf:NaN
431b8851fccSafresh1
432b8851fccSafresh1    -inf:NaN:NaN
433b8851fccSafresh1    -1:NaN:NaN
434b8851fccSafresh1    -0:NaN:NaN
435b8851fccSafresh1    0:NaN:NaN
436b8851fccSafresh1    1:NaN:NaN
437b8851fccSafresh1    inf:NaN:NaN
438b8851fccSafresh1    NaN:NaN:NaN
439b8851fccSafresh1
440b8851fccSafresh1    /)
441b8851fccSafresh1{
442b8851fccSafresh1    @args = split /:/, $_;
443b8851fccSafresh1    for my $class (@bfclasses) {
444*e0680481Safresh1        $args[2] = '0' if $args[2] eq '-0';     # Math::Big* has no -0
445b8851fccSafresh1        $x = $class->new($args[0]);
446b8851fccSafresh1        $y = $class->new($args[1]);
447*e0680481Safresh1        $z = $x->bdiv($y);
448b8851fccSafresh1
449*e0680481Safresh1        $test = qq|\$x = $class->new("$args[0]"); |
450*e0680481Safresh1              . qq|\$y = $class->new("$args[1]"); |
451*e0680481Safresh1              . qq|\$z = \$x->bdiv(\$y);|;
452b8851fccSafresh1
453*e0680481Safresh1        subtest $test => sub {
454*e0680481Safresh1            plan tests => 6;
455*e0680481Safresh1
456*e0680481Safresh1            is(ref($x), $class, "\$x is a $class");
457*e0680481Safresh1            is(ref($y), $class, "\$y is still a $class");
458*e0680481Safresh1            is(ref($z), $class, "\$z is a $class");
459*e0680481Safresh1            is($x->bstr(), $args[2], 'value of $x');
460*e0680481Safresh1            is($y->bstr(), $args[1], 'value of $y');
461*e0680481Safresh1            is($z->bstr(), $args[2], 'value of $z');
462*e0680481Safresh1        };
463b8851fccSafresh1    }
464b8851fccSafresh1}
465b8851fccSafresh1
466b8851fccSafresh1#############################################################################
467b8851fccSafresh1# overloaded comparisons
468b8851fccSafresh1
469b8851fccSafresh1foreach my $c (@biclasses, @bfclasses) {
470*e0680481Safresh1    $x = $c->bnan();
471*e0680481Safresh1    $y = $c->bnan();            # test with two different objects, too
472*e0680481Safresh1    $z = $c->bzero();
473b8851fccSafresh1
474b8851fccSafresh1    is($x == $y, '', 'NaN == NaN: ""');
475b8851fccSafresh1    is($x != $y, 1,  'NaN != NaN: 1');
476b8851fccSafresh1
477b8851fccSafresh1    is($x == $x, '', 'NaN == NaN: ""');
478b8851fccSafresh1    is($x != $x, 1,  'NaN != NaN: 1');
479b8851fccSafresh1
480b8851fccSafresh1    is($z != $x, 1,  '0 != NaN: 1');
481b8851fccSafresh1    is($z == $x, '', '0 == NaN: ""');
482b8851fccSafresh1
483b8851fccSafresh1    is($z < $x,  '', '0 < NaN: ""');
484b8851fccSafresh1    is($z <= $x, '', '0 <= NaN: ""');
485b8851fccSafresh1    is($z >= $x, '', '0 >= NaN: ""');
486b8851fccSafresh1    #is($z > $x,  '', '0 > NaN: ""');   # Bug! Todo: fix it!
487b8851fccSafresh1}
488b8851fccSafresh1
489b8851fccSafresh1# All done.
490