anchor.diff:    case Index of
       0: Exit(BigInteger.Zero);
       1: Exit(Radicand);
  -    2: Exit(Sqrt(Radicand));
  +    2: Exit(BaseCaseSqrt(Radicand));
     end;
     if Index < 0 then
       Error(ecNegativeExponent, ['NthRoot']);
  
positive.code:   until False;
  end;
  
  class procedure BigInteger.SqrtRemainder(const Radicand: BigInteger; var Root, Remainder: BigInteger);
  begin
    Root := Sqrt(Radicand);
    Remainder := Radicand - Sqr(Root);
  end;
  
  class procedure BigInteger.DivThreeHalvesByTwo(
  
negative.code: { Language:   Delphi version XE2 or later                                    }
  { Author:     Rudy Velthuis                                                  }
  { Copyright:  (c) 2015,2016,2017 Rudy Velthuis                               }
  {----------------------------------------------------------------------------}
  {             Schönhage-Strasssen algorithm:                                 }
  {             Copyright (c) 2011, Tim Buktu                                  }
  {             All rights reserved.                                           }
  {             https://github.com/tbuktu/ntru/blob/master/src/main/java/      }
  {               net/sf/ntru/arith/Sch%C3%B6nhageStrassen.java                }
  {             License as below                                               }
  {----------------------------------------------------------------------------}
  { Notes:      See http://praxis-velthuis.de/rdc/programs/bigintegers.html    }
  {                                                                            }
  {             For tests, see BigIntegerDevelopmentTests.dproj. The data      }
  