anchor.diff:      {$ENDIF CPU64BITS}
     {$ELSE !PUREPASCAL}
       {$IFDEF CPU64BITS}                                          // 64A  = 64 bit, Assembler
  -      KaratsubaThreshold             =   96;    // Checked
  -      ToomCook3Threshold             =  256;    // Checked
  +      KaratsubaThreshold             =  128;    // Checked
  +      ToomCook3Threshold             = 1024;    // Checked
         BurnikelZieglerThreshold       =  160;    // Checked
         BurnikelZieglerOffsetThreshold =   80;    // Unchecked
         KaratsubaSqrThreshold          =  256;    // Unchecked
       {$ELSE CPU32BITS}                                           // 32A  = 32 bit, Assembler
  -      KaratsubaThreshold             =   96;    // Checked
  +      KaratsubaThreshold             =   64;    // Checked
         ToomCook3Threshold             =  256;    // Checked
         BurnikelZieglerThreshold       =   80;    // Checked
         BurnikelZieglerOffsetThreshold =   40;    // Unchecked
  
positive.code: unit Velthuis.BigIntegers;
  
  { TODO:
    ==========================================================================
    Revisit InternalMultiply16 and make it InternalMultiplyBaseAndAddDigit.
    ADigit must be < ABase. Then, there can be no carry for the addition!
    See comments on InternalMultiply16.
    ==========================================================================
  }
  
  { TODO:
    - Remove local BigIntegers where possible. Removing Res from class function BigInteger.Add sped
      it up by 15%. Instead of a local BigInteger, Add now uses ResData and ResSize local variables.
  }
  { TODO: modular arithmetic. Modular division and multiplication. Barrett, Montgomery, etc. }
  { TODO: Better parsing. Recursive parsing (more or less the reverse of recursive routine for ToString) for normal
          bases, shifting for bases 2, 4 and 16. This means that normal bases are parsed BaseInfo.MaxDigits at a time. }
  { TODO: InternalMultiply (basecase): use MMX instead of plain registers? Also remove trailing loop, make 4
          completely separate loop+trail parts. }
  { TODO: InternalMultiply: consider algorithm by Malenkov et al. In short, this adds columns first, instead of rows. }
  
  
negative.code: 
  // Setting PUREPASCAL forces the use of plain Object Pascal for all routines, i.e. no assembler is used.
  
    {$DEFINE PUREPASCAL}
  
  
  // Setting RESETSIZE forces the Compact routine to shrink the dynamic array when that makes sense.
  