| 
																	
																	
																		
																	
																	
																 | 
																@@ -311,37 +311,24 @@ void BigInteger::negate() noexcept | 
															
														
														
													
														
															
																 | 
																 | 
																 #pragma intrinsic (_BitScanReverse)
 | 
																 | 
																 | 
																 #pragma intrinsic (_BitScanReverse)
 | 
															
														
														
													
														
															
																 | 
																 | 
																#endif
 | 
																 | 
																 | 
																#endif
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																namespace BitFunctions
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																{
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    inline int countBitsInInt32 (uint32 n) noexcept
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n -= ((n >> 1) & 0x55555555);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n =  (((n >> 2) & 0x33333333) + (n & 0x33333333));
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n =  (((n >> 4) + n) & 0x0f0f0f0f);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n += (n >> 8);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n += (n >> 16);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        return (int) (n & 0x3f);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    inline int highestBitInInt (uint32 n) noexcept
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        jassert (n != 0); // (the built-in functions may not work for n = 0)
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																      #if JUCE_GCC
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        return 31 - __builtin_clz (n);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																      #elif JUCE_USE_INTRINSICS
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        unsigned long highest;
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        _BitScanReverse (&highest, n);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        return (int) highest;
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																      #else
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n |= (n >> 1);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n |= (n >> 2);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n |= (n >> 4);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n |= (n >> 8);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        n |= (n >> 16);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        return countBitsInInt32 (n >> 1);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																      #endif
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																inline static int highestBitInInt (uint32 n) noexcept
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																{
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    jassert (n != 0); // (the built-in functions may not work for n = 0)
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  #if JUCE_GCC
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    return 31 - __builtin_clz (n);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  #elif JUCE_USE_INTRINSICS
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    unsigned long highest;
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    _BitScanReverse (&highest, n);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    return (int) highest;
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  #else
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    n |= (n >> 1);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    n |= (n >> 2);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    n |= (n >> 4);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    n |= (n >> 8);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    n |= (n >> 16);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    return countBitsInInt32 (n >> 1);
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  #endif
 | 
															
														
														
													
														
															
																 | 
																 | 
																}
 | 
																 | 
																 | 
																}
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																int BigInteger::countNumberOfSetBits() const noexcept
 | 
																 | 
																 | 
																int BigInteger::countNumberOfSetBits() const noexcept
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -349,7 +336,7 @@ int BigInteger::countNumberOfSetBits() const noexcept | 
															
														
														
													
														
															
																 | 
																 | 
																    int total = 0;
 | 
																 | 
																 | 
																    int total = 0;
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																    for (int i = (int) bitToIndex (highestBit) + 1; --i >= 0;)
 | 
																 | 
																 | 
																    for (int i = (int) bitToIndex (highestBit) + 1; --i >= 0;)
 | 
															
														
														
													
														
															
																 | 
																 | 
																        total += BitFunctions::countBitsInInt32 (values[i]);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        total += countNumberOfBits (values[i]);
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																    return total;
 | 
																 | 
																 | 
																    return total;
 | 
															
														
														
													
														
															
																 | 
																 | 
																}
 | 
																 | 
																 | 
																}
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -361,7 +348,7 @@ int BigInteger::getHighestBit() const noexcept | 
															
														
														
													
														
															
																 | 
																 | 
																        const uint32 n = values[i];
 | 
																 | 
																 | 
																        const uint32 n = values[i];
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (n != 0)
 | 
																 | 
																 | 
																        if (n != 0)
 | 
															
														
														
													
														
															
																 | 
																 | 
																            return BitFunctions::highestBitInInt (n) + (i << 5);
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            return highestBitInInt (n) + (i << 5);
 | 
															
														
														
													
														
															
																 | 
																 | 
																    }
 | 
																 | 
																 | 
																    }
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																    return -1;
 | 
																 | 
																 | 
																    return -1;
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |