NAME

RtlExtendedMagicDivide  (NTDLL.@)

SYNOPSIS

 #define  RtlExtendedMagicDivide
 (
A )

DESCRIPTION

Allows replacing a division by a longlong constant with a multiplication by the inverse constant.

RETURNS

(dividend * inverse_divisor) >> (64 + shift).

NOTES

If the divisor of a division is constant, the constants inverse_divisor and shift must be chosen such that inverse_divisor = 2^(64 + shift) / divisor. Then we have RtlExtendedMagicDivide(dividend,inverse_divisor,shift) == dividend * inverse_divisor / 2^(64 + shift) == dividend / divisor.

The Parameter inverse_divisor although defined as LONGLONG is used as ULONGLONG.

IMPLEMENTATION

Declared in "include/winternl.h". gitlab.winehq.org/wine/wine/blob/master/include/winternl.h

Implemented in "dlls/ntdll/large_int.c". gitlab.winehq.org/wine/wine/blob/master/dlls/ntdll/large_int.c


Copyright © 2024 The Wine Project. All trademarks are the property of their respective owners. Visit WineHQ for license details. Generated Dec 2024.