Microsoft.Scripting.Math.BigInteger.IsOdd C# (CSharp) Method

IsOdd() private method

private IsOdd ( ) : bool
return bool
    private bool IsOdd() {
      // must have the lowest-order bit set to 1
      return (data != null && data.Length > 0 && ((data[0] & 1) != 0));
    }

Usage Example

    public BigInteger ModPow(BigInteger power, BigInteger mod) {
      if (object.ReferenceEquals(power, null)) {
        throw new ArgumentNullException("power");
      }
      if (object.ReferenceEquals(mod, null)) {
        throw new ArgumentNullException("mod");
      }

      if (power < 0) {
        throw new ArgumentOutOfRangeException(MathResources.NonNegativePower);
      }

      BigInteger factor = this;
      BigInteger result = One % mod;
      while (power != Zero) {
        if (power.IsOdd()) {
          result = result * factor;
          result = result % mod;
        }
        if (power == One) break;  // avoid costly factor.Square()
        factor = factor.Square();
        factor = factor % mod;
        power >>= 1;
      }
      return result;
    }