The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use warnings;

use Test::More tests => 7;

use Math::BigInt ':constant';

is(2 ** 255,
   '578960446186580977117854925043439539266'
   . '34992332820282019728792003956564819968',
   '2 ** 255');

{
    no warnings 'portable';     # protect against "non-portable" warnings

    # hexadecimal constants
    is(0x123456789012345678901234567890,
       Math::BigInt->new('0x123456789012345678901234567890'),
       'hexadecimal constant 0x123456789012345678901234567890');

    # binary constants
    is(0b01010100011001010110110001110011010010010110000101101101,
       Math::BigInt->new('0b0101010001100101011011000111'
                         . '0011010010010110000101101101'),
       'binary constant 0b0101010001100101011011000111'
       . '0011010010010110000101101101');
}

use Math::BigFloat ':constant';
is(1.0 / 3.0, '0.3333333333333333333333333333333333333333',
   '1.0 / 3.0 = 0.3333333333333333333333333333333333333333');

# stress-test Math::BigFloat->import()

Math::BigFloat->import(qw/:constant/);
pass('Math::BigFloat->import(qw/:constant/);');

Math::BigFloat->import(qw/:constant upgrade Math::BigRat/);
pass('Math::BigFloat->import(qw/:constant upgrade Math::BigRat/);');

Math::BigFloat->import(qw/upgrade Math::BigRat :constant/);
pass('Math::BigFloat->import(qw/upgrade Math::BigRat :constant/);');

# all tests done