OpenShot Audio Library | OpenShotAudio 0.3.2
|
#include <juce_BigInteger.h>
An arbitrarily large integer class.
A BigInteger can be used in a similar way to a normal integer, but has no size limit (except for memory and performance constraints).
Negative values are possible, but the value isn't stored as 2s-complement, so be careful if you use negative values and look at the values of individual bits.
Definition at line 38 of file juce_BigInteger.h.
juce::BigInteger::BigInteger | ( | ) |
Creates an empty BigInteger
Definition at line 54 of file juce_BigInteger.cpp.
juce::BigInteger::BigInteger | ( | uint32 | value | ) |
Creates a BigInteger containing an integer value in its low bits. The low 32 bits of the number are initialised with this value.
Definition at line 74 of file juce_BigInteger.cpp.
juce::BigInteger::BigInteger | ( | int32 | value | ) |
Creates a BigInteger containing an integer value in its low bits. The low 32 bits of the number are initialised with the absolute value passed in, and its sign is set to reflect the sign of the number.
Definition at line 61 of file juce_BigInteger.cpp.
juce::BigInteger::BigInteger | ( | int64 | value | ) |
Creates a BigInteger containing an integer value in its low bits. The low 64 bits of the number are initialised with the absolute value passed in, and its sign is set to reflect the sign of the number.
Definition at line 86 of file juce_BigInteger.cpp.
juce::BigInteger::BigInteger | ( | const BigInteger & | other | ) |
Creates a copy of another BigInteger.
Definition at line 103 of file juce_BigInteger.cpp.
|
noexcept |
Move constructor
Definition at line 114 of file juce_BigInteger.cpp.
juce::BigInteger::~BigInteger | ( | ) |
Destructor.
Definition at line 133 of file juce_BigInteger.cpp.
|
noexcept |
Resets the value to 0.
Definition at line 281 of file juce_BigInteger.cpp.
Referenced by juce::Synthesiser::allNotesOff(), divideBy(), inverseModulo(), and parseString().
Clears a particular bit in the number.
Definition at line 314 of file juce_BigInteger.cpp.
Referenced by juce::Synthesiser::handleSustainPedal(), and setBit().
|
noexcept |
Does a signed comparison of two BigIntegers.
Return values are:
Definition at line 732 of file juce_BigInteger.cpp.
Referenced by montgomeryMultiplication().
|
noexcept |
Compares the magnitudes of two BigIntegers, ignoring their signs.
Return values are:
Definition at line 745 of file juce_BigInteger.cpp.
Referenced by exponentModulo(), and inverseModulo().
|
noexcept |
Returns the total number of set bits in the value.
Definition at line 369 of file juce_BigInteger.cpp.
Referenced by juce::AudioDeviceManager::setAudioDeviceSetup().
void juce::BigInteger::divideBy | ( | const BigInteger & | divisor, |
BigInteger & | remainder | ||
) |
Divides this value by another one and returns the remainder.
This number is divided by other, leaving the quotient in this number, with the remainder being copied to the other BigInteger passed in.
Definition at line 567 of file juce_BigInteger.cpp.
Referenced by divideBy(), and findGreatestCommonDivisor().
void juce::BigInteger::exponentModulo | ( | const BigInteger & | exponent, |
const BigInteger & | modulus | ||
) |
Performs a combined exponent and modulo operation. This BigInteger's value becomes (this ^ exponent) % modulus.
Definition at line 906 of file juce_BigInteger.cpp.
void juce::BigInteger::extendedEuclidean | ( | const BigInteger & | a, |
const BigInteger & | b, | ||
BigInteger & | xOut, | ||
BigInteger & | yOut | ||
) |
Performs the Extended Euclidean algorithm. This method will set the xOut and yOut arguments such that (a * xOut) - (b * yOut) = GCD (a, b). On return, this object is left containing the value of the GCD.
Definition at line 992 of file juce_BigInteger.cpp.
Referenced by exponentModulo().
BigInteger juce::BigInteger::findGreatestCommonDivisor | ( | BigInteger | other | ) | const |
Returns the largest value that will divide both this value and the argument.
Definition at line 887 of file juce_BigInteger.cpp.
Referenced by inverseModulo().
Looks for the index of the next clear bit after a given starting point.
This searches from startIndex (inclusive) upwards for the first clear bit, and returns its index.
Definition at line 402 of file juce_BigInteger.cpp.
Looks for the index of the next set bit after a given starting point.
This searches from startIndex (inclusive) upwards for the first set bit, and returns its index. If no set bits are found, it returns -1.
Definition at line 391 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::getBitRange | ( | int | startBit, |
int | numBits | ||
) | const |
Returns a range of bits as a new BigInteger.
e.g. getBitRangeAsInt (0, 64) would return the lowest 64 bits.
Definition at line 221 of file juce_BigInteger.cpp.
Returns a range of bits as an integer value.
e.g. getBitRangeAsInt (0, 32) would return the lowest 32 bits.
Asking for more than 32 bits isn't allowed (obviously) - for that, use getBitRange().
Definition at line 239 of file juce_BigInteger.cpp.
Referenced by getBitRange().
|
noexcept |
Returns the index of the highest set bit in the number. If the value is zero, this will return -1.
Definition at line 380 of file juce_BigInteger.cpp.
Referenced by BigInteger(), BigInteger(), BigInteger(), divideBy(), exponentModulo(), findGreatestCommonDivisor(), getBitRange(), isOne(), isZero(), loadFromMemoryBlock(), and toMemoryBlock().
Inserts a bit an a given position, shifting up any bits above it.
Definition at line 331 of file juce_BigInteger.cpp.
void juce::BigInteger::inverseModulo | ( | const BigInteger & | modulus | ) |
Performs an inverse modulo on the value. i.e. the result is (this ^ -1) mod (modulus).
Definition at line 1029 of file juce_BigInteger.cpp.
|
noexcept |
Returns true if the value is less than zero.
Definition at line 350 of file juce_BigInteger.cpp.
Referenced by divideBy(), inverseModulo(), montgomeryMultiplication(), and toString().
|
noexcept |
Returns true if the value is 1.
Definition at line 345 of file juce_BigInteger.cpp.
Referenced by exponentModulo(), and inverseModulo().
|
noexcept |
Returns true if no bits are set.
Definition at line 340 of file juce_BigInteger.cpp.
Referenced by findGreatestCommonDivisor(), isNegative(), negate(), and juce::AudioDeviceManager::setAudioDeviceSetup().
void juce::BigInteger::loadFromMemoryBlock | ( | const MemoryBlock & | data | ) |
Converts a block of raw data into a number.
The data is arranged as little-endian, so the first byte of data is the low 8 bits of the number, and so on.
Definition at line 1192 of file juce_BigInteger.cpp.
void juce::BigInteger::montgomeryMultiplication | ( | const BigInteger & | other, |
const BigInteger & | modulus, | ||
const BigInteger & | modulusp, | ||
int | k | ||
) |
Performs the Montgomery Multiplication with modulo. This object is left containing the result value: ((this * other) * R1) % modulus. To get this result, we need modulus, modulusp and k such as R = 2^k, with modulus * modulusp - R * R1 = GCD(modulus, R) = 1
Definition at line 972 of file juce_BigInteger.cpp.
|
noexcept |
Inverts the sign of the number.
Definition at line 360 of file juce_BigInteger.cpp.
|
noexcept |
Definition at line 764 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator% | ( | const BigInteger & | other | ) | const |
Definition at line 725 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator%= | ( | const BigInteger & | divisor | ) |
Definition at line 704 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator& | ( | const BigInteger & | other | ) | const |
Definition at line 723 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator&= | ( | const BigInteger & | other | ) |
Definition at line 648 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator* | ( | const BigInteger & | other | ) | const |
Definition at line 720 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator*= | ( | const BigInteger & | other | ) |
Definition at line 522 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator+ | ( | const BigInteger & | other | ) | const |
Definition at line 718 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator++ | ( | ) |
Definition at line 712 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator++ | ( | int | ) |
Definition at line 714 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator+= | ( | const BigInteger & | other | ) |
Definition at line 414 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator- | ( | ) | const |
Definition at line 717 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator- | ( | const BigInteger & | other | ) | const |
Definition at line 719 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator-- | ( | ) |
Definition at line 713 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator-- | ( | int | ) |
Definition at line 715 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator-= | ( | const BigInteger & | other | ) |
Definition at line 465 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator/ | ( | const BigInteger & | other | ) | const |
Definition at line 721 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator/= | ( | const BigInteger & | other | ) |
Definition at line 614 of file juce_BigInteger.cpp.
|
noexcept |
Definition at line 765 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator<< | ( | int | numBitsToShift | ) | const |
Definition at line 726 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator<<= | ( | int | numBitsToShift | ) |
Definition at line 728 of file juce_BigInteger.cpp.
|
noexcept |
Definition at line 766 of file juce_BigInteger.cpp.
|
noexcept |
Move assignment operator
Definition at line 123 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator= | ( | const BigInteger & | other | ) |
Copies another BigInteger onto this one.
Definition at line 148 of file juce_BigInteger.cpp.
|
noexcept |
Definition at line 763 of file juce_BigInteger.cpp.
|
noexcept |
Definition at line 767 of file juce_BigInteger.cpp.
|
noexcept |
Definition at line 768 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator>> | ( | int | numBitsToShift | ) | const |
Definition at line 727 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator>>= | ( | int | numBitsToShift | ) |
Definition at line 729 of file juce_BigInteger.cpp.
Returns the value of a specified bit in the number. If the index is out-of-range, the result will be false.
Definition at line 202 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator^ | ( | const BigInteger & | other | ) | const |
Definition at line 724 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator^= | ( | const BigInteger & | other | ) |
Definition at line 674 of file juce_BigInteger.cpp.
BigInteger juce::BigInteger::operator| | ( | const BigInteger & | other | ) | const |
Definition at line 722 of file juce_BigInteger.cpp.
BigInteger & juce::BigInteger::operator|= | ( | const BigInteger & | other | ) |
Definition at line 621 of file juce_BigInteger.cpp.
Reads the numeric value from a string.
Specify a base such as 2 (binary), 8 (octal), 10 (decimal), 16 (hex). Any invalid characters will be ignored.
Definition at line 1132 of file juce_BigInteger.cpp.
Sets a specified bit to 1.
Definition at line 292 of file juce_BigInteger.cpp.
Referenced by juce::MixerAudioSource::addInputSource(), divideBy(), juce::Synthesiser::handleSustainPedal(), insertBit(), setBit(), setBitRangeAsInt(), and setRange().
Sets or clears a specified bit.
Definition at line 306 of file juce_BigInteger.cpp.
Sets a range of bits to an integer value.
Copies the given integer onto a range of bits, starting at startBit, and using up to numBits of the available bits.
Definition at line 265 of file juce_BigInteger.cpp.
Referenced by loadFromMemoryBlock().
Changes the sign of the number to be positive or negative.
Definition at line 355 of file juce_BigInteger.cpp.
Referenced by divideBy(), and parseString().
Sets a range of bits to be either on or off.
startBit | the first bit to change |
numBits | the number of bits to change |
shouldBeSet | whether to turn these bits on or off |
Definition at line 325 of file juce_BigInteger.cpp.
Referenced by juce::AudioChannelSet::ambisonic(), juce::AudioChannelSet::discreteChannels(), and montgomeryMultiplication().
Shifts a section of bits left or right.
howManyBitsLeft | how far to move the bits (+ve numbers shift it left, -ve numbers shift it right). |
startBit | the first bit to affect - if this is > 0, only bits above that index will be affected. |
Definition at line 862 of file juce_BigInteger.cpp.
Referenced by insertBit(), and juce::MixerAudioSource::removeInputSource().
|
noexcept |
Swaps the internal contents of this with another object.
Definition at line 137 of file juce_BigInteger.cpp.
Referenced by divideBy(), exponentModulo(), extendedEuclidean(), findGreatestCommonDivisor(), and inverseModulo().
|
noexcept |
Attempts to get the lowest 64 bits of the value as an integer. If the value is bigger than the integer limits, this will return only the lower bits.
Definition at line 214 of file juce_BigInteger.cpp.
|
noexcept |
Attempts to get the lowest 32 bits of the value as an integer. If the value is bigger than the integer limits, this will return only the lower bits.
Definition at line 208 of file juce_BigInteger.cpp.
MemoryBlock juce::BigInteger::toMemoryBlock | ( | ) | const |
Turns the number into a block of binary data.
The data is arranged as little-endian, so the first byte of data is the low 8 bits of the number, and so on.
Definition at line 1180 of file juce_BigInteger.cpp.
Converts the number to a string.
Specify a base such as 2 (binary), 8 (octal), 10 (decimal), 16 (hex). If minimumNumCharacters is greater than 0, the returned string will be padded with leading zeros to reach at least that length.
Definition at line 1085 of file juce_BigInteger.cpp.