## 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 `"winternl.h"`. https://source.winehq.org/source/include/winternl.h

Implemented in `"dlls/ntdll/large_int.c"`. https://source.winehq.org/source/dlls/ntdll/large_int.c

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