anchor.diff:      ///   1 if it is lesser.</summary>
       class function Compare(const Left, Right: BigInteger): Integer; static;
   
  +    /// <summary>Returns N!, i.e. N * (N - 1) * (N - 2) * ... * 2 as BigInteger.
  +    class function Factorial(N: Integer): BigInteger; static;
  +
       /// <summary>Returns the (positive) greatest common divisor of the specified BigInteger values.</summary>
       class function GreatestCommonDivisor(const Left, Right: BigInteger): BigInteger; static;
   
  
positive.code:   Result := Compare(left, Right) >= 0;
  end;
  
  // http://en.wikipedia.org/wiki/Binary_GCD_algorithm
  class function BigInteger.GreatestCommonDivisor(const Left, Right: BigInteger): BigInteger;
  var
  
negative.code:     class procedure NthRootRemainder(const Radicand: BigInteger; Nth: Integer;
        var Root, Remainder: BigInteger); static;
  
      /// <summary>Returns the square root R of Radicand, such that R^2 < Radicand < (R+1)^2</summary>
      class function Sqrt(const Radicand: BigInteger): BigInteger; static;
  
      /// <summary>If R is the square root of Radicand, returns Radicand - R^2.</summary>
      class procedure SqrtRemainder(const Radicand: BigInteger; var Root, Remainder: BigInteger); static;
  
      /// <summary>Returns the square of Value, i.e. Value*Value</summary>
      class function Sqr(const Value: BigInteger): BigInteger; static;
  
  
  
      // -- Utility functions --
  