#! perl -slw use strict; no warnings 'portable'; use constant { POS_ZERO => 0b0_00000000000_0000_00000000_00000000_00000000_00000000_00000000_00000000, POS_DENORM_1ST => 0b0_00000000000_0000_00000000_00000000_00000000_00000000_00000000_00000001, POS_DENORM_LST => 0b0_00000000000_1111_11111111_11111111_11111111_11111111_11111111_11111111, POS_NORM_1ST => 0b0_00000000001_0000_00000000_00000000_00000000_00000000_00000000_00000000, POS_NORM_LST => 0b0_11111111110_1111_11111111_11111111_11111111_11111111_11111111_11111111, POS_INF => 0b0_11111111111_0000_00000000_00000000_00000000_00000000_00000000_00000000, POS_SNAN_1ST => 0b0_11111111111_0000_00000000_00000000_00000000_00000000_00000000_00000001, POS_SNAN_LST => 0b0_11111111111_0111_11111111_11111111_11111111_11111111_11111111_11111111, POS_QNAN_1ST => 0b0_11111111111_1000_00000000_00000000_00000000_00000000_00000000_00000000, POS_QNAN_LST => 0b0_11111111111_1111_11111111_11111111_11111111_11111111_11111111_11111111, NEG_ZERO => 0b1_00000000000_0000_00000000_00000000_00000000_00000000_00000000_00000000, NEG_DENORM_1ST => 0b1_00000000000_0000_00000000_00000000_00000000_00000000_00000000_00000001, NEG_DENORM_LST => 0b1_00000000000_1111_11111111_11111111_11111111_11111111_11111111_11111111, NEG_NORM_1ST => 0b1_00000000001_0000_00000000_00000000_00000000_00000000_00000000_00000000, NEG_NORM_LST => 0b1_11111111110_1111_11111111_11111111_11111111_11111111_11111111_11111111, NEG_INF => 0b1_11111111111_0000_00000000_00000000_00000000_00000000_00000000_00000000, NEG_SNAN_1ST => 0b1_11111111111_0000_00000000_00000000_00000000_00000000_00000000_00000001, NEG_SNAN_LST => 0b1_11111111111_0111_11111111_11111111_11111111_11111111_11111111_11111111, NEG_IND => 0b1_11111111111_1000_00000000_00000000_00000000_00000000_00000000_00000000, NEG_QNAN_1ST => 0b1_11111111111_1000_00000000_00000000_00000000_00000000_00000000_00000001, NEG_QNAN_LST => 0b1_11111111111_1111_11111111_11111111_11111111_11111111_11111111_11111111, }; printf "%23.16g : %016x\n", unpack( 'd', pack 'Q', $_ ), $_ for POS_ZERO, POS_DENORM_1ST, POS_DENORM_LST, POS_NORM_1ST, POS_NORM_LST, POS_INF, POS_SNAN_1ST, POS_SNAN_LST, POS_QNAN_1ST, POS_QNAN_LST, NEG_ZERO, NEG_DENORM_1ST, NEG_DENORM_LST, NEG_NORM_1ST, NEG_NORM_LST, NEG_INF, NEG_SNAN_1ST, NEG_SNAN_LST, NEG_IND, NEG_QNAN_1ST, NEG_QNAN_LST;