xref: /openbsd/gnu/usr.bin/perl/cpan/bignum/t/bigexp.t (revision eac174f2)
1*eac174f2Safresh1# -*- mode: perl; -*-
2b8851fccSafresh1
3b8851fccSafresh1###############################################################################
4*eac174f2Safresh1# test for bug #18025: bigfloat/bigrat can lead to a number that is both 1 and 0
5b8851fccSafresh1
6b8851fccSafresh1use strict;
7b8851fccSafresh1use warnings;
8b8851fccSafresh1
9b8851fccSafresh1use Test::More tests => 4;
10b8851fccSafresh1
11*eac174f2Safresh1use bigfloat;
12b8851fccSafresh1
13b8851fccSafresh1my $ln_ev = -7 / (10 ** 17);
14b8851fccSafresh1my $ev    = exp($ln_ev);
15b8851fccSafresh1is(sprintf('%0.5f', $ev),       '1.00000', '($ev) is approx. 1');
16b8851fccSafresh1is(sprintf('%0.5f', 1 - $ev),   '0.00000', '(1-$ev) is approx. 0');
17b8851fccSafresh1is(sprintf('%0.5f', 1 - "$ev"), '0.00000', '(1-"$ev") is approx. 0');
18b8851fccSafresh1
19b8851fccSafresh1cmp_ok($ev, '!=', 0, '$ev should not equal 0');
20