#! perl -slw use Config; package F128; use Inline C => Config => BUILD_NOISY => 1; use Inline C => <<'END_C', NAME => 'F128', CLEAN_AFTER_BUILD =>0, TYPEMAPS => './F128.typemap'; #include "../C/mytypes.h" typedef union { struct { unsigned sign : 1; unsigned exponent :11; U64 mantissa :52; }; double d; U64 u; } DFields; void test( double d ) { U32 i; DFields *df = (DFields*)&d; for( i = 0; i < 64; ++i ) printf( "%u", ( df->u & ( 1ull<> i ); printf( "\n" ); printf( "%.16f mantissa:%I64u exponent:%d sign:%u\n", df->d, df->mantissa, df->exponent -1023, df->sign ); return; } END_C package main; F128::test( 0.45e-10 );