Skip to main content

AffineSignature

Struct AffineSignature 

Source
pub struct AffineSignature {
    pub num_vars: usize,
    pub walsh_abs_distribution: Vec<(u64, usize)>,
    pub is_plateaued: bool,
    pub amplitude: Option<u64>,
    pub is_bent: bool,
}
Expand description

The AGL(n,2)-invariant signature of a Boolean function: its Walsh amplitude distribution and the plateaued/bent classification that distribution induces.

Fields§

§num_vars: usize§walsh_abs_distribution: Vec<(u64, usize)>

The multiset |Ŵ(w)| → count, sorted by amplitude — invariant under any affine change of variables.

§is_plateaued: bool

Exactly one nonzero amplitude ⇒ PLATEAUED (maximal nonlinearity for its linear-space dimension).

§amplitude: Option<u64>

The plateau amplitude 2^{(n+k)/2} when plateaued, else None.

§is_bent: bool

Plateaued with amplitude 2^{n/2} ⇒ BENT: perfectly nonlinear, trivial linear space (k = 0).

Implementations§

Source§

impl AffineSignature

Source

pub fn implied_linear_dim(&self) -> Option<usize>

The linear-space dimension k implied by the plateau amplitude 2^{(n+k)/2} (so k = 2·log₂amp − n), matching linear_structures.dim(). None when not plateaued.

Trait Implementations§

Source§

impl Clone for AffineSignature

Source§

fn clone(&self) -> AffineSignature

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AffineSignature

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for AffineSignature

Source§

fn eq(&self, other: &AffineSignature) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for AffineSignature

Source§

impl StructuralPartialEq for AffineSignature

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.