Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at __mul128.
Microsoft Specific**
Multiplies two 64-bit integers passed in as the first two arguments and puts the high 64 bits of the product in the 64-bit integer pointed to by HighProduct and returns the low 64 bits of the product.
Syntax
__int64 _mul128(
__int64 Multiplier,
__int64 Multiplicand,
__int64 *HighProduct
);
Parameters
[in] Multiplier
The first 64-bit integer to multiply.
[in] Multiplicand
The second 64-bit integer to multiply.
[out] HighProduct
The high 64 bits of the product.
Return Value
The low 64 bits of the product.
Requirements
| Intrinsic | Architecture |
|---|---|
__mul128 |
x64 |
Header file <intrin.h>
Example
// mul128.c
// processor: x64
#include <stdio.h>
#include <intrin.h>
#pragma intrinsic(_mul128)
int main()
{
__int64 a = 0x0fffffffffffffffI64;
__int64 b = 0xf0000000I64;
__int64 c, d;
d = _mul128(a, b, &c);
printf_s("%#I64x * %#I64x = %#I64x%I64x\n", a, b, c, d);
}
0xfffffffffffffff * 0xf0000000 = 0xeffffffffffffff10000000