Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

__mul128

 

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.

__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.

The low 64 bits of the product.

IntrinsicArchitecture
__mul128x64

Header file <intrin.h>

// 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  

Compiler Intrinsics

Show:
© 2017 Microsoft