pub struct EXP_SQRT_FP { /* private fields */ }
Expand description
Exponent for the square root in Fp
Methods from Deref<Target = Uint<256, 4>>§
Sourcepub fn to_base_le(&self, base: u64) -> impl Iterator<Item = u64>
pub fn to_base_le(&self, base: u64) -> impl Iterator<Item = u64>
Returns an iterator over the base base
digits of the number in
little-endian order.
Pro tip: instead of setting base = 10
, set it to the highest
power of 10
that still fits u64
. This way much fewer iterations
are required to extract all the digits.
§Panics
Panics if the base is less than 2.
Sourcepub fn to_base_be(&self, base: u64) -> impl Iterator<Item = u64>
pub fn to_base_be(&self, base: u64) -> impl Iterator<Item = u64>
Returns an iterator over the base base
digits of the number in
big-endian order.
Pro tip: instead of setting base = 10
, set it to the highest
power of 10
that still fits u64
. This way much fewer iterations
are required to extract all the digits.
§Panics
Panics if the base is less than 2.
Sourcepub fn bit(&self, index: usize) -> bool
pub fn bit(&self, index: usize) -> bool
Returns whether a specific bit is set.
Returns false
if index
exceeds the bit width of the number.
Sourcepub fn byte(&self, index: usize) -> u8
pub fn byte(&self, index: usize) -> u8
Returns a specific byte. The byte at index 0
is the least significant
byte (little endian).
§Panics
Panics if index
is greater than or equal to the byte width of the
number.
§Examples
let x = uint!(0x1234567890_U64);
let bytes = [
x.byte(0), // 0x90
x.byte(1), // 0x78
x.byte(2), // 0x56
x.byte(3), // 0x34
x.byte(4), // 0x12
x.byte(5), // 0x00
x.byte(6), // 0x00
x.byte(7), // 0x00
];
assert_eq!(bytes, x.to_le_bytes());
Panics if out of range.
let x = uint!(0x1234567890_U64);
let _ = x.byte(8);
Sourcepub fn checked_byte(&self, index: usize) -> Option<u8>
pub fn checked_byte(&self, index: usize) -> Option<u8>
Returns a specific byte, or None
if index
is out of range. The byte
at index 0
is the least significant byte (little endian).
§Examples
let x = uint!(0x1234567890_U64);
assert_eq!(x.checked_byte(0), Some(0x90));
assert_eq!(x.checked_byte(7), Some(0x00));
// Out of range
assert_eq!(x.checked_byte(8), None);
Sourcepub fn leading_zeros(&self) -> usize
pub fn leading_zeros(&self) -> usize
Returns the number of leading zeros in the binary representation of
self
.
Sourcepub fn leading_ones(&self) -> usize
pub fn leading_ones(&self) -> usize
Returns the number of leading ones in the binary representation of
self
.
Sourcepub fn trailing_zeros(&self) -> usize
pub fn trailing_zeros(&self) -> usize
Returns the number of trailing zeros in the binary representation of
self
.
Sourcepub fn trailing_ones(&self) -> usize
pub fn trailing_ones(&self) -> usize
Returns the number of trailing ones in the binary representation of
self
.
Sourcepub fn count_ones(&self) -> usize
pub fn count_ones(&self) -> usize
Returns the number of ones in the binary representation of self
.
Sourcepub fn count_zeros(&self) -> usize
pub fn count_zeros(&self) -> usize
Returns the number of zeros in the binary representation of self
.
Sourcepub fn bit_len(&self) -> usize
pub fn bit_len(&self) -> usize
Returns the dynamic length of this number in bits, ignoring leading zeros.
For the maximum length of the type, use Uint::BITS
.
Sourcepub fn byte_len(&self) -> usize
pub fn byte_len(&self) -> usize
Returns the dynamic length of this number in bytes, ignoring leading zeros.
For the maximum length of the type, use Uint::BYTES
.
Sourcepub fn most_significant_bits(&self) -> (u64, usize)
pub fn most_significant_bits(&self) -> (u64, usize)
Returns the most significant 64 bits of the number and the exponent.
Given return value $(\mathtt{bits}, \mathtt{exponent})$, the self
can
be approximated as
$$ \mathtt{self} ≈ \mathtt{bits} ⋅ 2^\mathtt{exponent} $$
If self
is $<≥> 2^{63}$, then exponent
will be zero and bits
will
have leading zeros.
pub const BYTES: usize
Sourcepub fn as_le_slice(&self) -> &[u8] ⓘ
pub fn as_le_slice(&self) -> &[u8] ⓘ
Access the underlying store as a little-endian slice of bytes.
Only available on little-endian targets.
If BITS
does not evenly divide 8, it is padded with zero bits in the
most significant position.
Sourcepub fn as_le_bytes(&self) -> Cow<'_, [u8]>
pub fn as_le_bytes(&self) -> Cow<'_, [u8]>
Access the underlying store as a little-endian bytes.
Uses an optimized implementation on little-endian targets.
Sourcepub fn as_le_bytes_trimmed(&self) -> Cow<'_, [u8]>
pub fn as_le_bytes_trimmed(&self) -> Cow<'_, [u8]>
Access the underlying store as a little-endian bytes with trailing zeros removed.
Uses an optimized implementation on little-endian targets.
Sourcepub fn to_le_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
pub fn to_le_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
Converts the Uint
to a little-endian byte array of size exactly
Self::BYTES
.
§Panics
Panics if the generic parameter BYTES
is not exactly Self::BYTES
.
Ideally this would be a compile time error, but this is blocked by
Rust issue #60551.
Sourcepub fn to_le_bytes_vec(&self) -> Vec<u8> ⓘ
pub fn to_le_bytes_vec(&self) -> Vec<u8> ⓘ
Converts the Uint
to a little-endian byte vector of size exactly
Self::BYTES
.
This method is useful when Self::to_le_bytes
can not be used because
byte size is not known compile time.
Sourcepub fn to_le_bytes_trimmed_vec(&self) -> Vec<u8> ⓘ
pub fn to_le_bytes_trimmed_vec(&self) -> Vec<u8> ⓘ
Converts the Uint
to a little-endian byte vector with trailing zeros
bytes removed.
Sourcepub fn to_be_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
pub fn to_be_bytes<const BYTES: usize>(&self) -> [u8; BYTES]
Converts the Uint
to a big-endian byte array of size exactly
Self::BYTES
.
§Panics
Panics if the generic parameter BYTES
is not exactly Self::BYTES
.
Ideally this would be a compile time error, but this is blocked by
Rust issue #60551.
Sourcepub fn to_be_bytes_vec(&self) -> Vec<u8> ⓘ
pub fn to_be_bytes_vec(&self) -> Vec<u8> ⓘ
Converts the Uint
to a big-endian byte vector of size exactly
Self::BYTES
.
This method is useful when Self::to_be_bytes
can not be used because
byte size is not known compile time.
Sourcepub fn to_be_bytes_trimmed_vec(&self) -> Vec<u8> ⓘ
pub fn to_be_bytes_trimmed_vec(&self) -> Vec<u8> ⓘ
Converts the Uint
to a big-endian byte vector with leading zeros
bytes removed.
Sourcepub fn copy_le_bytes_to(&self, buf: &mut [u8]) -> usize
pub fn copy_le_bytes_to(&self, buf: &mut [u8]) -> usize
Writes the little-endian representation of the Uint
to the given
buffer. The buffer must be large enough to hold Self::BYTES
bytes.
§Panics
Panics if the buffer is not large enough to hold Self::BYTES
bytes.
§Returns
The number of bytes written to the buffer (always equal to
Self::BYTES
, but often useful to make explicit for encoders).
Sourcepub fn checked_copy_le_bytes_to(&self, buf: &mut [u8]) -> Option<usize>
pub fn checked_copy_le_bytes_to(&self, buf: &mut [u8]) -> Option<usize>
Writes the little-endian representation of the Uint
to the given
buffer. The buffer must be large enough to hold Self::BYTES
bytes.
§Returns
None
, if the buffer is not large enough to hold Self::BYTES
bytes, and does not modify the buffer.
Some
with the number of bytes written to the buffer (always
equal to Self::BYTES
, but often useful to make explicit for
encoders).
Sourcepub fn copy_be_bytes_to(&self, buf: &mut [u8]) -> usize
pub fn copy_be_bytes_to(&self, buf: &mut [u8]) -> usize
Writes the big-endian representation of the Uint
to the given
buffer. The buffer must be large enough to hold Self::BYTES
bytes.
§Panics
Panics if the buffer is not large enough to hold Self::BYTES
bytes.
§Returns
The number of bytes written to the buffer (always equal to
Self::BYTES
, but often useful to make explicit for encoders).
Sourcepub fn checked_copy_be_bytes_to(&self, buf: &mut [u8]) -> Option<usize>
pub fn checked_copy_be_bytes_to(&self, buf: &mut [u8]) -> Option<usize>
Writes the big-endian representation of the Uint
to the given
buffer. The buffer must be large enough to hold Self::BYTES
bytes.
§Returns
None
, if the buffer is not large enough to hold Self::BYTES
bytes, and does not modify the buffer.
Some
with the number of bytes written to the buffer (always
equal to Self::BYTES
, but often useful to make explicit for
encoders).
Sourcepub fn const_is_zero(&self) -> bool
pub fn const_is_zero(&self) -> bool
Returns true
if the value is zero.
Note that this currently might perform worse than
is_zero
.
Sourcepub fn const_eq(&self, other: &Uint<BITS, LIMBS>) -> bool
pub fn const_eq(&self, other: &Uint<BITS, LIMBS>) -> bool
Returns true
if self
equals other
.
Note that this currently might perform worse than the derived
PartialEq
(==
operator).
Sourcepub fn wrapping_to<T>(&self) -> T
pub fn wrapping_to<T>(&self) -> T
§Examples
assert_eq!(300_U12.wrapping_to::<i8>(), 44_i8);
assert_eq!(255_U32.wrapping_to::<i8>(), -1_i8);
assert_eq!(0x1337cafec0d3_U256.wrapping_to::<U32>(), 0xcafec0d3_U32);
Sourcepub fn saturating_to<T>(&self) -> T
pub fn saturating_to<T>(&self) -> T
§Examples
assert_eq!(300_U12.saturating_to::<i16>(), 300_i16);
assert_eq!(255_U32.saturating_to::<i8>(), 127);
assert_eq!(0x1337cafec0d3_U256.saturating_to::<U32>(), U32::MAX);
pub const LIMBS: usize
pub const MASK: u64
pub const BITS: usize = BITS
pub const ZERO: Uint<BITS, LIMBS>
pub const ONE: Uint<BITS, LIMBS>
pub const MIN: Uint<BITS, LIMBS> = Self::ZERO
pub const MAX: Uint<BITS, LIMBS>
Trait Implementations§
Source§impl Deref for EXP_SQRT_FP
impl Deref for EXP_SQRT_FP
impl LazyStatic for EXP_SQRT_FP
Auto Trait Implementations§
impl Freeze for EXP_SQRT_FP
impl RefUnwindSafe for EXP_SQRT_FP
impl Send for EXP_SQRT_FP
impl Sync for EXP_SQRT_FP
impl Unpin for EXP_SQRT_FP
impl UnwindSafe for EXP_SQRT_FP
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more