Struct twenty_first::shared_math::b_field_element::BFieldElement
source · pub struct BFieldElement(_);
Implementations§
source§impl BFieldElement
impl BFieldElement
pub const BYTES: usize = 8usize
pub const P: u64 = 18_446_744_069_414_584_321u64
pub const MAX: u64 = 18_446_744_069_414_584_320u64
pub const fn new(value: u64) -> Self
pub const fn value(&self) -> u64
sourcepub const fn power_accumulator<const N: usize, const M: usize>(
base: [Self; N],
tail: [Self; N]
) -> [Self; N]
pub const fn power_accumulator<const N: usize, const M: usize>( base: [Self; N], tail: [Self; N] ) -> [Self; N]
Square the base M times and multiply the result by the tail value
pub const fn lift(&self) -> XFieldElement
pub fn increment(&mut self)
pub fn decrement(&mut self)
pub const fn mod_pow(&self, exp: u64) -> Self
sourcepub fn from_ne_bytes(bytes: &[u8]) -> BFieldElement
pub fn from_ne_bytes(bytes: &[u8]) -> BFieldElement
Convert a BFieldElement
from a byte slice in native endianness.
sourcepub const fn raw_bytes(&self) -> [u8; 8]
pub const fn raw_bytes(&self) -> [u8; 8]
Return the raw bytes or 8-bit chunks of the Montgomery representation, in little-endian byte order
sourcepub const fn from_raw_bytes(bytes: &[u8; 8]) -> Self
pub const fn from_raw_bytes(bytes: &[u8; 8]) -> Self
Take a slice of 8 bytes and interpret it as an integer in little-endian byte order, and cast it to a BFieldElement in Montgomery representation
sourcepub const fn raw_u16s(&self) -> [u16; 4]
pub const fn raw_u16s(&self) -> [u16; 4]
Return the raw 16-bit chunks of the Montgomery representation, in little-endian chunk order
sourcepub const fn from_raw_u16s(chunks: &[u16; 4]) -> Self
pub const fn from_raw_u16s(chunks: &[u16; 4]) -> Self
Take a slice of 4 16-bit chunks and interpret it as an integer in little-endian chunk order, and cast it to a BFieldElement in Montgomery representation
pub fn raw_u128(&self) -> u128
pub const fn from_raw_u64(e: u64) -> BFieldElement
pub fn raw_u64(&self) -> u64
Trait Implementations§
source§impl Add<BFieldElement> for BFieldElement
impl Add<BFieldElement> for BFieldElement
source§impl Add<BFieldElement> for XFieldElement
impl Add<BFieldElement> for XFieldElement
§type Output = XFieldElement
type Output = XFieldElement
+
operator.source§fn add(self, other: BFieldElement) -> Self
fn add(self, other: BFieldElement) -> Self
+
operation. Read moresource§impl Add<XFieldElement> for BFieldElement
impl Add<XFieldElement> for BFieldElement
The bfe + xfe -> xfe
instance belongs to BFieldElement.
§type Output = XFieldElement
type Output = XFieldElement
+
operator.source§fn add(self, other: XFieldElement) -> XFieldElement
fn add(self, other: XFieldElement) -> XFieldElement
+
operation. Read moresource§impl AddAssign<BFieldElement> for BFieldElement
impl AddAssign<BFieldElement> for BFieldElement
source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+=
operation. Read moresource§impl AddAssign<BFieldElement> for XFieldElement
impl AddAssign<BFieldElement> for XFieldElement
source§fn add_assign(&mut self, rhs: BFieldElement)
fn add_assign(&mut self, rhs: BFieldElement)
+=
operation. Read moresource§impl BFieldCodec for BFieldElement
impl BFieldCodec for BFieldElement
source§impl Clone for BFieldElement
impl Clone for BFieldElement
source§fn clone(&self) -> BFieldElement
fn clone(&self) -> BFieldElement
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl CyclicGroupGenerator for BFieldElement
impl CyclicGroupGenerator for BFieldElement
source§impl Debug for BFieldElement
impl Debug for BFieldElement
source§impl Default for BFieldElement
impl Default for BFieldElement
source§fn default() -> BFieldElement
fn default() -> BFieldElement
source§impl<'de> Deserialize<'de> for BFieldElement
impl<'de> Deserialize<'de> for BFieldElement
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl Display for BFieldElement
impl Display for BFieldElement
source§impl Distribution<BFieldElement> for Standard
impl Distribution<BFieldElement> for Standard
source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> BFieldElement
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> BFieldElement
T
, using rng
as the source of randomness.source§impl Div<BFieldElement> for BFieldElement
impl Div<BFieldElement> for BFieldElement
source§impl FiniteField for BFieldElement
impl FiniteField for BFieldElement
source§impl From<&BFieldElement> for u64
impl From<&BFieldElement> for u64
source§fn from(elem: &BFieldElement) -> Self
fn from(elem: &BFieldElement) -> Self
source§impl From<BFieldElement> for [u8; 8]
impl From<BFieldElement> for [u8; 8]
Convert a B-field element to a byte array. The client uses this for its database.
source§fn from(bfe: BFieldElement) -> Self
fn from(bfe: BFieldElement) -> Self
source§impl From<BFieldElement> for XFieldElement
impl From<BFieldElement> for XFieldElement
source§fn from(bfe: BFieldElement) -> Self
fn from(bfe: BFieldElement) -> Self
source§impl From<BFieldElement> for u64
impl From<BFieldElement> for u64
source§fn from(elem: BFieldElement) -> Self
fn from(elem: BFieldElement) -> Self
source§impl From<u32> for BFieldElement
impl From<u32> for BFieldElement
source§impl From<u64> for BFieldElement
impl From<u64> for BFieldElement
source§impl FromVecu8 for BFieldElement
impl FromVecu8 for BFieldElement
fn from_vecu8(bytes: Vec<u8>) -> Self
source§impl GetSize for BFieldElement
impl GetSize for BFieldElement
source§fn get_stack_size() -> usize
fn get_stack_size() -> usize
source§fn get_heap_size(&self) -> usize
fn get_heap_size(&self) -> usize
source§impl Hash for BFieldElement
impl Hash for BFieldElement
source§impl Inverse for BFieldElement
impl Inverse for BFieldElement
source§impl ModPowU32 for BFieldElement
impl ModPowU32 for BFieldElement
fn mod_pow_u32(&self, exp: u32) -> Self
source§impl ModPowU64 for BFieldElement
impl ModPowU64 for BFieldElement
fn mod_pow_u64(&self, pow: u64) -> Self
source§impl Mul<BFieldElement> for BFieldElement
impl Mul<BFieldElement> for BFieldElement
source§impl Mul<BFieldElement> for XFieldElement
impl Mul<BFieldElement> for XFieldElement
XField * BField means scalar multiplication of the BFieldElement onto each coefficient of the XField.
§type Output = XFieldElement
type Output = XFieldElement
*
operator.source§fn mul(self, other: BFieldElement) -> Self
fn mul(self, other: BFieldElement) -> Self
*
operation. Read moresource§impl Mul<XFieldElement> for BFieldElement
impl Mul<XFieldElement> for BFieldElement
§type Output = XFieldElement
type Output = XFieldElement
*
operator.source§fn mul(self, other: XFieldElement) -> XFieldElement
fn mul(self, other: XFieldElement) -> XFieldElement
*
operation. Read moresource§impl MulAssign<BFieldElement> for BFieldElement
impl MulAssign<BFieldElement> for BFieldElement
source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*=
operation. Read moresource§impl MulAssign<BFieldElement> for XFieldElement
impl MulAssign<BFieldElement> for XFieldElement
source§fn mul_assign(&mut self, rhs: BFieldElement)
fn mul_assign(&mut self, rhs: BFieldElement)
*=
operation. Read moresource§impl Neg for BFieldElement
impl Neg for BFieldElement
source§impl New for BFieldElement
impl New for BFieldElement
fn new_from_usize(&self, value: usize) -> Self
source§impl One for BFieldElement
impl One for BFieldElement
source§impl PartialEq<BFieldElement> for BFieldElement
impl PartialEq<BFieldElement> for BFieldElement
source§fn eq(&self, other: &BFieldElement) -> bool
fn eq(&self, other: &BFieldElement) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PrimitiveRootOfUnity for BFieldElement
impl PrimitiveRootOfUnity for BFieldElement
fn primitive_root_of_unity(n: u64) -> Option<BFieldElement>
source§impl Serialize for BFieldElement
impl Serialize for BFieldElement
source§impl Sub<BFieldElement> for BFieldElement
impl Sub<BFieldElement> for BFieldElement
source§impl Sub<BFieldElement> for XFieldElement
impl Sub<BFieldElement> for XFieldElement
Subtracting a BFieldElement from an XFieldElement
self - other = self + (-other)
This overloads to Add and Neg
§type Output = XFieldElement
type Output = XFieldElement
-
operator.source§fn sub(self, other: BFieldElement) -> Self
fn sub(self, other: BFieldElement) -> Self
-
operation. Read moresource§impl Sub<XFieldElement> for BFieldElement
impl Sub<XFieldElement> for BFieldElement
§type Output = XFieldElement
type Output = XFieldElement
-
operator.source§fn sub(self, other: XFieldElement) -> XFieldElement
fn sub(self, other: XFieldElement) -> XFieldElement
-
operation. Read moresource§impl SubAssign<BFieldElement> for BFieldElement
impl SubAssign<BFieldElement> for BFieldElement
source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-=
operation. Read moresource§impl SubAssign<BFieldElement> for XFieldElement
impl SubAssign<BFieldElement> for XFieldElement
source§fn sub_assign(&mut self, rhs: BFieldElement)
fn sub_assign(&mut self, rhs: BFieldElement)
-=
operation. Read more