TInteger

Arbitrary precision integer

Source

Integer.pas (44)

Description

All operations, including bitwise operations, behave as though executed on a 2's complement integer. Internally the value is stored by sign and magnitude with the first byte being the most significant and the last byte the least significant (Big endian). The most significant byte can never be zero, that is, the magnitude is always stored in the shortest possible way, without leading zeros.

Fields

ScopeVisibilityTypeNameDescription
InstanceprivateTSignFSign
InstanceprivateTArray<TByte>FMagnitude
TypepublicTIntegerZero
TypepublicTIntegerOne

Methods

ScopeVisibilityResultNameDescription
InstanceprivateTArray<TByte>AddMagnitude(Left: TArray<TByte>; Right: TArray<TByte>)
InstanceprivateTIntegerSubtractMagnitude(Left: TArray<TByte>; Right: TArray<TByte>)
InstanceprivateTArray<TByte>MultiplyMagnitude(Left: TArray<TByte>; Right: TArray<TByte>)
InstanceprivateTArray<TByte>DivideMagnitude(Dividend: TArray<TByte>; Divisor: TArray<TByte>)
InstanceprivateDivideAndRemainderMagnitude(Dividend: TArray<TByte>; Divisor: TArray<TByte>; Quotient: TArray<TByte>; Remainder: TArray<TByte>)
InstanceprivateTArray<TByte>RemainderMagnitude(Dividend: TArray<TByte>; Divisor: TArray<TByte>)
InstanceprivateTArray<TByte>ModularExponentMagnitude(Base: TArray<TByte>; Exponent: TArray<TByte>; Modulus: TArray<TByte>)
InstanceprivateTArray<TByte>ModularInverseMagnitude(Value: TArray<TByte>; Modulus: TArray<TByte>)
InstanceprivateTArray<TByte>SquareMagnitude(Value: TArray<TByte>)
InstanceprivateTArray<TByte>GreatestCommonDivisorMagnitude(Left: TArray<TByte>; Right: TArray<TByte>)
InstanceprivateTSignCompareMagnitude(Left: TArray<TByte>; Right: TArray<TByte>)
InstanceprivateSetZeroMagnitude()
InstanceprivateSetPositive64Magnitude(Value: TPositiveInteger64; SignificantByteCount: TPositiveInteger32)
InstanceprivateSetValue64(Value: TInteger64; SignificantByteCount: TPositiveInteger32)
InstanceprivateSetValuePositive64(Value: TPositiveInteger64; SignificantByteCount: TPositiveInteger32)
InstanceprivateTInteger64ToBoundedInteger(ByteCount: TInteger32)
InstanceprivateTPositiveInteger64ToBoundedPositiveInteger(ByteCount: TInteger32)
GlobalprivateInitializeConstants()
GlobalprivateTArray<TByte>StripLeadingZeroBytes(Magnitude: TArray<TByte>)
GlobalprivateTArray<TByte>MakePositive(TwosComplement: TArray<TByte>)
GlobalpublicTIntegerNew(Sign: TSign; Magnitude: TArray<TByte>)
GlobalpublicTIntegerNewFromTwosComplement(TwosComplement: TArray<TByte>)Constructs a TInteger from a big endian 2's complement representation
InstancepublicTTextToText()
InstancepublicTPositiveInteger32HashCode()
InstancepublicTIntegerMultiply(Value: TInteger)
InstancepublicTIntegerAdd(Value: TInteger)
InstancepublicTIntegerSubtract(Value: TInteger)
InstancepublicTIntegerDivide(Divisor: TInteger)
InstancepublicDivideAndRemainder(Divisor: TInteger; Quotient: TInteger; Remainder: TInteger)
InstancepublicTIntegerModulo(Divisor: TInteger)
InstancepublicTIntegerModulo2(Divisor: TInteger32)
InstancepublicTIntegerRemainder(Divisor: TInteger)
InstancepublicTIntegerModularExponent(Exponent: TInteger; Modulus: TInteger)
InstancepublicTIntegerModularExponent2(Exponent: TInteger; ModulusExponent: TInteger32)
InstancepublicTIntegerModularInverse(Modulus: TInteger)
InstancepublicTIntegerGreatestCommonDivisor(Value: TInteger)
InstancepublicTIntegerMultiplyWithPowerOfTen(Exponent: TInteger32)
InstancepublicTSignCompareTo(Value: TInteger)
InstancepublicTBooleanTestBit(Index: TInteger32)
InstancepublicTInteger32GetLowestSetBit()
InstancepublicTInteger32BitLength()Returns the minimum number of bits needed to store the 2's complement representation excluding the sign bit
InstancepublicTInteger32OctetLength()
InstancepublicTInteger32GetByteCount()Returns the minimum number of bytes needed to store the 2's complement representation including the sign bit
InstancepublicTBooleanIsZero()
InstancepublicTBooleanIsPositive()
InstancepublicTBooleanIsNegative()
InstancepublicTBooleanIsOne()
InstancepublicTIntegerAbsoluteValue()
InstancepublicTByteSignByte()
InstancepublicTByteGetByte(Index: TInteger32)
InstancepublicTInteger32GetFirstNonZeroByteIndex()Returns the index of the first non-zero byte working from least significant to most significant
InstancepublicTIntegerRoundUpToPrecision(Precision: TInteger)
InstancepublicTInteger8ToInteger8()
InstancepublicTInteger16ToInteger16()
InstancepublicTInteger32ToInteger32()
InstancepublicTInteger64ToInteger64()
InstancepublicTPositiveInteger8ToPositiveInteger8()
InstancepublicTPositiveInteger64ToPositiveInteger16()
InstancepublicTPositiveInteger32ToPositiveInteger32()
InstancepublicTPositiveInteger64ToPositiveInteger64()
InstancepublicTFloatingPoint32ToFloatingPoint32()
InstancepublicTFloatingPoint64ToFloatingPoint64()
InstancepublicTArray<TByte>ToTwosComplementBigEndian(ByteCount: TInteger32)
InstancepublicTArray<TByte>ToTwosComplementLittleEndian(ByteCount: TInteger32)
InstancepublicTIntegerCoerce(SignType: TSignType; ByteCount: TInteger32)Coerces a value to the specified byte count and sign type
GlobalpublicTIntegerImplicit(Value: TInteger8)
GlobalpublicTIntegerImplicit(Value: TPositiveInteger8)
GlobalpublicTIntegerImplicit(Value: TInteger16)
GlobalpublicTIntegerImplicit(Value: TPositiveInteger16)
GlobalpublicTIntegerImplicit(Value: TInteger32)
GlobalpublicTIntegerImplicit(Value: TPositiveInteger32)
GlobalpublicTIntegerImplicit(Value: TInteger64)
GlobalpublicTIntegerImplicit(Value: TPositiveInteger64)
GlobalpublicTPositiveInteger8Implicit(Value: TInteger)
GlobalpublicTPositiveInteger16Implicit(Value: TInteger)
GlobalpublicTPositiveInteger32Implicit(Value: TInteger)
GlobalpublicTPositiveInteger64Implicit(Value: TInteger)
GlobalpublicTInteger8Implicit(Value: TInteger)
GlobalpublicTInteger16Implicit(Value: TInteger)
GlobalpublicTInteger32Implicit(Value: TInteger)
GlobalpublicTInteger64Implicit(Value: TInteger)
GlobalpublicTFloatingPoint32Implicit(Value: TInteger)
GlobalpublicTFloatingPoint64Implicit(Value: TInteger)
GlobalpublicTIntegerAdd(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerSubtract(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerMultiply(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerIntDivide(Left: TInteger; Right: TInteger)
GlobalpublicTFloatingPoint64Divide(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerModulus(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerLeftShift(Operand: TInteger; Count: TInteger32)
GlobalpublicTIntegerRightShift(Operand: TInteger; Count: TInteger32)
GlobalpublicTBooleanEqual(Left: TInteger; Right: TInteger)
GlobalpublicTBooleanNotEqual(Left: TInteger; Right: TInteger)
GlobalpublicTBooleanGreaterThan(Left: TInteger; Right: TInteger)
GlobalpublicTBooleanGreaterThanOrEqual(Left: TInteger; Right: TInteger)
GlobalpublicTBooleanLessThan(Left: TInteger; Right: TInteger)
GlobalpublicTBooleanLessThanOrEqual(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerPositive(Value: TInteger)
GlobalpublicTIntegerNegative(Value: TInteger)
GlobalpublicCreate()
GlobalpublicDestroy()
GlobalpublicTIntegerMinimum(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerMaximum(Left: TInteger; Right: TInteger)
GlobalpublicTSignCompare(Left: TInteger; Right: TInteger)
GlobalpublicTIntegerReadLittleEndian(Stream: TInputStream; ByteCount: TInteger32; Signed: TBoolean)
GlobalpublicWriteLittleEndian(Stream: TOutputStream; ByteCount: TInteger32; Signed: TBoolean; Value: TInteger)
GlobalpublicTIntegerReadBigEndian(Stream: TInputStream; ByteCount: TInteger32; Signed: TBoolean)
GlobalpublicWriteBigEndian(Stream: TOutputStream; ByteCount: TInteger32; Signed: TBoolean; Value: TInteger)