---
name: "RtlExtendedMagicDivide"
section: "3w"
platform: "linux"
package: "libwine-dev"
version: "1.4.1-4"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/RtlExtendedMagicDivide"
---

# RtlExtendedMagicDivide(3w)

## 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"**.

Implemented in **"dlls/ntdll/large\_int.c"**.
