pub struct TWO { /* private fields */ }
Methods from Deref<Target = BigUint>§
pub const ZERO: BigUint
Sourcepub fn to_bytes_be(&self) -> Vec<u8> ⓘ
pub fn to_bytes_be(&self) -> Vec<u8> ⓘ
Sourcepub fn to_bytes_le(&self) -> Vec<u8> ⓘ
pub fn to_bytes_le(&self) -> Vec<u8> ⓘ
Sourcepub fn to_u32_digits(&self) -> Vec<u32>
pub fn to_u32_digits(&self) -> Vec<u32>
Returns the u32
digits representation of the BigUint
ordered least significant digit
first.
§Examples
use num_bigint::BigUint;
assert_eq!(BigUint::from(1125u32).to_u32_digits(), vec![1125]);
assert_eq!(BigUint::from(4294967295u32).to_u32_digits(), vec![4294967295]);
assert_eq!(BigUint::from(4294967296u64).to_u32_digits(), vec![0, 1]);
assert_eq!(BigUint::from(112500000000u64).to_u32_digits(), vec![830850304, 26]);
Sourcepub fn to_u64_digits(&self) -> Vec<u64>
pub fn to_u64_digits(&self) -> Vec<u64>
Returns the u64
digits representation of the BigUint
ordered least significant digit
first.
§Examples
use num_bigint::BigUint;
assert_eq!(BigUint::from(1125u32).to_u64_digits(), vec![1125]);
assert_eq!(BigUint::from(4294967295u32).to_u64_digits(), vec![4294967295]);
assert_eq!(BigUint::from(4294967296u64).to_u64_digits(), vec![4294967296]);
assert_eq!(BigUint::from(112500000000u64).to_u64_digits(), vec![112500000000]);
assert_eq!(BigUint::from(1u128 << 64).to_u64_digits(), vec![0, 1]);
Sourcepub fn iter_u32_digits(&self) -> U32Digits<'_>
pub fn iter_u32_digits(&self) -> U32Digits<'_>
Returns an iterator of u32
digits representation of the BigUint
ordered least
significant digit first.
§Examples
use num_bigint::BigUint;
assert_eq!(BigUint::from(1125u32).iter_u32_digits().collect::<Vec<u32>>(), vec![1125]);
assert_eq!(BigUint::from(4294967295u32).iter_u32_digits().collect::<Vec<u32>>(), vec![4294967295]);
assert_eq!(BigUint::from(4294967296u64).iter_u32_digits().collect::<Vec<u32>>(), vec![0, 1]);
assert_eq!(BigUint::from(112500000000u64).iter_u32_digits().collect::<Vec<u32>>(), vec![830850304, 26]);
Sourcepub fn iter_u64_digits(&self) -> U64Digits<'_>
pub fn iter_u64_digits(&self) -> U64Digits<'_>
Returns an iterator of u64
digits representation of the BigUint
ordered least
significant digit first.
§Examples
use num_bigint::BigUint;
assert_eq!(BigUint::from(1125u32).iter_u64_digits().collect::<Vec<u64>>(), vec![1125]);
assert_eq!(BigUint::from(4294967295u32).iter_u64_digits().collect::<Vec<u64>>(), vec![4294967295]);
assert_eq!(BigUint::from(4294967296u64).iter_u64_digits().collect::<Vec<u64>>(), vec![4294967296]);
assert_eq!(BigUint::from(112500000000u64).iter_u64_digits().collect::<Vec<u64>>(), vec![112500000000]);
assert_eq!(BigUint::from(1u128 << 64).iter_u64_digits().collect::<Vec<u64>>(), vec![0, 1]);
Sourcepub fn to_str_radix(&self, radix: u32) -> String
pub fn to_str_radix(&self, radix: u32) -> String
Returns the integer formatted as a string in the given radix.
radix
must be in the range 2...36
.
§Examples
use num_bigint::BigUint;
let i = BigUint::parse_bytes(b"ff", 16).unwrap();
assert_eq!(i.to_str_radix(16), "ff");
Sourcepub fn to_radix_be(&self, radix: u32) -> Vec<u8> ⓘ
pub fn to_radix_be(&self, radix: u32) -> Vec<u8> ⓘ
Returns the integer in the requested base in big-endian digit order.
The output is not given in a human readable alphabet but as a zero
based u8
number.
radix
must be in the range 2...256
.
§Examples
use num_bigint::BigUint;
assert_eq!(BigUint::from(0xFFFFu64).to_radix_be(159),
vec![2, 94, 27]);
// 0xFFFF = 65535 = 2*(159^2) + 94*159 + 27
Sourcepub fn to_radix_le(&self, radix: u32) -> Vec<u8> ⓘ
pub fn to_radix_le(&self, radix: u32) -> Vec<u8> ⓘ
Returns the integer in the requested base in little-endian digit order.
The output is not given in a human readable alphabet but as a zero
based u8 number.
radix
must be in the range 2...256
.
§Examples
use num_bigint::BigUint;
assert_eq!(BigUint::from(0xFFFFu64).to_radix_le(159),
vec![27, 94, 2]);
// 0xFFFF = 65535 = 27 + 94*159 + 2*(159^2)
Sourcepub fn modpow(&self, exponent: &BigUint, modulus: &BigUint) -> BigUint
pub fn modpow(&self, exponent: &BigUint, modulus: &BigUint) -> BigUint
Returns (self ^ exponent) % modulus
.
Panics if the modulus is zero.
Sourcepub fn modinv(&self, modulus: &BigUint) -> Option<BigUint>
pub fn modinv(&self, modulus: &BigUint) -> Option<BigUint>
Returns the modular multiplicative inverse if it exists, otherwise None
.
This solves for x
in the interval [0, modulus)
such that self * x ≡ 1 (mod modulus)
.
The solution exists if and only if gcd(self, modulus) == 1
.
use num_bigint::BigUint;
use num_traits::{One, Zero};
let m = BigUint::from(383_u32);
// Trivial cases
assert_eq!(BigUint::zero().modinv(&m), None);
assert_eq!(BigUint::one().modinv(&m), Some(BigUint::one()));
let neg1 = &m - 1u32;
assert_eq!(neg1.modinv(&m), Some(neg1));
let a = BigUint::from(271_u32);
let x = a.modinv(&m).unwrap();
assert_eq!(x, BigUint::from(106_u32));
assert_eq!(x.modinv(&m).unwrap(), a);
assert!((a * x % m).is_one());
Sourcepub fn sqrt(&self) -> BigUint
pub fn sqrt(&self) -> BigUint
Returns the truncated principal square root of self
–
see Roots::sqrt
Sourcepub fn cbrt(&self) -> BigUint
pub fn cbrt(&self) -> BigUint
Returns the truncated principal cube root of self
–
see Roots::cbrt.
Sourcepub fn nth_root(&self, n: u32) -> BigUint
pub fn nth_root(&self, n: u32) -> BigUint
Returns the truncated principal n
th root of self
–
see Roots::nth_root.
Sourcepub fn trailing_zeros(&self) -> Option<u64>
pub fn trailing_zeros(&self) -> Option<u64>
Returns the number of least-significant bits that are zero,
or None
if the entire number is zero.
Sourcepub fn trailing_ones(&self) -> u64
pub fn trailing_ones(&self) -> u64
Returns the number of least-significant bits that are ones.
Sourcepub fn count_ones(&self) -> u64
pub fn count_ones(&self) -> u64
Returns the number of one bits.