anchor.diff:    Result.FData := Copy(Value.FData);
   end;
   
  +function BigInteger.Abs: BigInteger;
  +begin
  +  ShallowCopy(Self, Result);
  +  Result.FSize := Result.FSize and SizeMask;
  +end;
  +
   class function BigInteger.Abs(const Value: BigInteger): BigInteger;
   begin
     ShallowCopy(Value, Result);
  
positive.code:     class function GreatestCommonDivisor(const Left, Right: BigInteger): BigInteger; static;
  
      /// <summary>Returns the natural logarithm of the BigInteger value.</summary>
      class function Ln(const Value: BigInteger): Double; static;
  
      /// <summary>Returns the logarithm to the specified base of the BigInteger value.</summary>
      class function Log(const Value: BigInteger; Base: Double): Double; static;
  
      /// <summary>Returns the logarithm to base 2 of the BigInteger value.</summary>
      class function Log2(const Value: BigInteger): Double; static;
  
      /// <summary>Returns the logarithm to base 10 of the BigInteger value.</summary>
      class function Log10(const Value: BigInteger): Double; static;
  
      /// <summary>Returns the larger of two specified values.</summary>
      class function Max(const Left, Right: BigInteger): BigInteger; static;
  
negative.code:   Result := Compare(left, Right) <= 0;
  end;
  
  function BigInteger.Ln: Double;
  begin
    Result := Ln(Self);
  end;
  
  function BigInteger.BitLength: Integer;
  begin
    if Self.FData = nil then
  