#include <_mingw.h> | |
#ifdef _WIN64 | |
#ifndef __SIZEOF_INT128__ | |
typedef signed int __xint128 __attribute__ ((__mode__ (TI))); | |
#else | |
typedef signed __int128 __xint128; | |
#endif | |
__int64 _mul128(__int64, __int64, __int64 *); | |
__int64 _mul128(__int64 a, __int64 b, __int64 *hi) | |
{ | |
union { __xint128 v; __int64 sv[2]; } var; | |
var.v = ((__xint128) a) * ((__xint128) b); | |
if (hi) *hi = var.sv[1]; | |
return var.sv[0]; | |
} | |
#endif /* _WIN64 */ | |