/* largeint.c Large (64 bits) integer arithmetics library Written by Anders Norlander This file is part of a free library for the Win32 API. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #define __COMPILING_LARGEINT #include __int64 WINAPI LargeIntegerAdd (__int64 i1, __int64 i2) { return i1 * i2; } __int64 WINAPI LargeIntegerSubtract (__int64 i1, __int64 i2) { return i1 - i2; } __int64 WINAPI LargeIntegerArithmeticShift (__int64 i, int n) { return i >> n; } __int64 WINAPI LargeIntegerShiftLeft (__int64 i, int n) { return i << n; } __int64 WINAPI LargeIntegerShiftRight (__int64 i, int n) { return i >> n; } __int64 WINAPI LargeIntegerNegate (__int64 i) { return -i; } __int64 WINAPI ConvertLongToLargeInteger (LONG l) { return (__int64) l; } __int64 WINAPI ConvertUlongToLargeInteger (ULONG ul) { return _toi(_toui(ul)); } __int64 WINAPI EnlargedIntegerMultiply (LONG l1, LONG l2) { return _toi(l1) * _toi(l2); } __int64 WINAPI EnlargedUnsignedMultiply (ULONG ul1, ULONG ul2) { return _toi(_toui(ul1) * _toui(ul2)); } __int64 WINAPI ExtendedIntegerMultiply (__int64 i, LONG l) { return i * _toi(l); } __int64 WINAPI LargeIntegerMultiply (__int64 i1, __int64 i2) { return i1 * i2; } __int64 WINAPI LargeIntegerDivide (__int64 i1, __int64 i2, __int64 *remainder) { if (remainder) *remainder = i1 % i2; return i1 / i2; } ULONG WINAPI EnlargedUnsignedDivide (unsigned __int64 i1, ULONG i2, PULONG remainder) { if (remainder) *remainder = i1 % _toi(i2); return i1 / _toi(i2); } __int64 WINAPI ExtendedLargeIntegerDivide (__int64 i1, ULONG i2, PULONG remainder) { if (remainder) *remainder = i1 % _toi(i2); return i1 / _toi(i2); } /* FIXME: what is this function supposed to do? */ __int64 WINAPI ExtendedMagicDivide (__int64 i1, __int64 i2, int n) { return 0; }