use strict; use warnings; use Math::BigInt; my $x = Math::BigInt->new('0x1fffffffffffff'); $x->blsft(1023 - 52); print '0x1fffffffffffff: ' . $x->bstr() . "\n\n"; my $y = Math::BigInt->new('0x1ffffffffffffe'); $y->blsft(1023 - 52); print '0x1ffffffffffffe: ' . $y->bstr() . "\n\n"; my $z = $x - $y; print 'difference : ' . $z->bstr() . "\n\n"; my $n = Math::BigInt->new(2); $n->bpow(971); print '2**971 : ' . $n->bstr() . "\n\n"; print "length of largest double precision value in base 10 : " . length($x->bstr()) . " digits\n"; print "length of 2**971 (least significant bit of mantissa) in base 10 : " . length($n->bstr()) . " digits\n"; __END__ 0x1fffffffffffff: 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368 0x1ffffffffffffe: 179769313486231550856124328384506240234343437157459335924404872448581845754556114388470639943126220321960804027157371570809852884964511743044087662767600909594331927728237078876188760579532563768698654064825262115771015791463983014857704008123419459386245141723703148097529108423358883457665451722744025579520 difference : 19958403095347198116563727130368385660674512604354575415025472424372118918689640657849579654926357010893424468441924952439724379883935936607391717982848314203200056729510856765175377214443629871826533567445439239933308104551208703888888552684480441575071209068757560416423584952303440099278848 2**971 : 19958403095347198116563727130368385660674512604354575415025472424372118918689640657849579654926357010893424468441924952439724379883935936607391717982848314203200056729510856765175377214443629871826533567445439239933308104551208703888888552684480441575071209068757560416423584952303440099278848 length of largest double precision value in base 10 : 309 digits length of 2**971 (least significant bit of mantissa) in base 10 : 293 digits