//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // https://perlmonks.org/?node_id=1189780 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include void _dump64(char* varname, _Decimal64 d64) { int i; void* ptr = (void*)(&d64); printf("%s = 0x", varname); for(i=0; i < sizeof(d64); i++) { printf("%02X ", 0xFF & *(char*)(ptr+i)); } printf("\n"); } #define dump64(v) _dump64(#v, v) int foo(void) { _Decimal64 pz64 = 0.DD, nz64 = 0.DD, no64 = -1.DD; nz64 = pz64 * no64; dump64(pz64); dump64(nz64); dump64(no64); if(nz64 != 0.DD) printf("!= +0\n"); else printf("== +0\n"); if(nz64 != -0.DD) printf("!= -0\n"); else printf("== -0\n"); return 0; } int main(int argc, char* argv) { foo(); } ----------------------------------------- pz64 = 0x00 00 00 00 00 00 C0 31 nz64 = 0x00 00 00 00 00 00 C0 B1 no64 = 0x01 00 00 00 00 00 C0 B1 == +0 == -0 #### pz64 = 0x00 00 00 00 00 00 C0 31 nz64 = 0x00 00 00 00 00 00 C0 B1 no64 = 0x01 00 00 00 00 00 C0 B1 != +0 == -0 #### Starting "make" Stage Running Mkbootstrap for pm1189780_pl_3d28 () "C:\usr\local\apps\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "pm1189780_pl_3d28.bs" "C:\usr\local\apps\strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- pm1189780_pl_3d28.bs blib\arch\auto\pm1189780_pl_3d28\pm1189780_pl_3d28.bs 644 "C:\usr\local\apps\strawberry\perl\bin\perl.exe" "C:\usr\local\apps\strawberry\perl\lib\ExtUtils\xsubpp" -typemap "C:\usr\local\apps\strawberry\perl\lib\ExtUtils\typemap" pm1189780_pl_3d28.xs > pm1189780_pl_3d28.xsc "C:\usr\local\apps\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- pm1189780_pl_3d28.xsc pm1189780_pl_3d28.c gcc -c -I"C:/usr/local/share/passthru/perl/perlmonks" -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" "-IC:\usr\local\apps\strawberry\perl\lib\CORE" pm1189780_pl_3d28.c "C:\usr\local\apps\strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"pm1189780_pl_3d28\", 'DLBASE' => 'pm1189780_pl_3d28', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" g++.exe pm1189780_pl_3d28.def -o blib\arch\auto\pm1189780_pl_3d28\pm1189780_pl_3d28.xs.dll -mdll -s -L"C:\usr\local\apps\strawberry\perl\lib\CORE" -L"C:\usr\local\apps\strawberry\c\lib" pm1189780_pl_3d28.o "C:\usr\local\apps\strawberry\perl\lib\CORE\libperl524.a" -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -Wl,--enable-auto-image-base "C:\usr\local\apps\strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 755 blib\arch\auto\pm1189780_pl_3d28\pm1189780_pl_3d28.xs.dll Finished "make" Stage Starting "make install" Stage "C:\usr\local\apps\strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- pm1189780_pl_3d28.bs blib\arch\auto\pm1189780_pl_3d28\pm1189780_pl_3d28.bs 644 Files found in blib\arch: installing files in blib\lib into architecture dependent library tree Installing C:\usr\local\share\passthru\perl\perlmonks\_Inline\lib\auto\pm1189780_pl_3d28\pm1189780_pl_3d28.xs.dll Finished "make install" Stage