pub struct GLWETensorKey<D: Data, W: ZnxWord>(/* private fields */);Expand description
GLWE tensor key used for relinearisation after a tensor product.
Wraps a GGLWE whose rank_in equals the number of unique
pairs max(1, rank*(rank+1)/2) produced by the tensor product.
D: Data is the backing storage type (e.g. Vec<u8>, &[u8],
&mut [u8]).
Implementations§
Source§impl<W: ZnxWord> GLWETensorKey<Vec<u8>, W>
impl<W: ZnxWord> GLWETensorKey<Vec<u8>, W>
Sourcepub fn bytes_of_from_infos<A>(infos: &A) -> usizewhere
A: GGLWEInfos,
pub fn bytes_of_from_infos<A>(infos: &A) -> usizewhere
A: GGLWEInfos,
Returns the byte count required for a GLWETensorKey with the given parameters.
Sourcepub fn bytes_of(
n: Degree,
base2k: Base2K,
dnum: Dnum,
dsize: Dsize,
k_aux: TorusPrecision,
rank: Rank,
) -> usize
pub fn bytes_of( n: Degree, base2k: Base2K, dnum: Dnum, dsize: Dsize, k_aux: TorusPrecision, rank: Rank, ) -> usize
Returns the byte count required for a GLWETensorKey with the given parameters.
Trait Implementations§
Source§impl<D: Clone + Data, W: Clone + ZnxWord> Clone for GLWETensorKey<D, W>
impl<D: Clone + Data, W: Clone + ZnxWord> Clone for GLWETensorKey<D, W>
Source§fn clone(&self) -> GLWETensorKey<D, W>
fn clone(&self) -> GLWETensorKey<D, W>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<D: HostDataRef, W: ZnxWord> Debug for GLWETensorKey<D, W>
impl<D: HostDataRef, W: ZnxWord> Debug for GLWETensorKey<D, W>
Source§impl<D: HostDataRef, W: ZnxWord> Display for GLWETensorKey<D, W>
impl<D: HostDataRef, W: ZnxWord> Display for GLWETensorKey<D, W>
impl<D: Eq + Data, W: Eq + ZnxWord> Eq for GLWETensorKey<D, W>
Source§impl<D: HostDataMut, W: ZnxWord> FillUniform for GLWETensorKey<D, W>
impl<D: HostDataMut, W: ZnxWord> FillUniform for GLWETensorKey<D, W>
Source§impl<BE: Backend> GGLWEAtBackendMut<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
impl<BE: Backend> GGLWEAtBackendMut<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
Source§impl<BE: Backend> GGLWEAtBackendRef<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
impl<BE: Backend> GGLWEAtBackendRef<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
Source§impl<BE: Backend> GGLWEAtViewMut<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
impl<BE: Backend> GGLWEAtViewMut<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
fn at_view_mut(&mut self, row: usize, col: usize) -> GLWEViewMut<'_, BE>
Source§impl<BE: Backend> GGLWEAtViewRef<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
impl<BE: Backend> GGLWEAtViewRef<BE> for GLWETensorKey<BE::OwnedBuf, BE::ZnxWord>
Source§impl<D: Data, W: ZnxWord> GGLWEInfos for GLWETensorKey<D, W>
impl<D: Data, W: ZnxWord> GGLWEInfos for GLWETensorKey<D, W>
Source§fn k_aux(&self) -> TorusPrecision
fn k_aux(&self) -> TorusPrecision
Auxiliary guard precision (in bits) stored below the gadget region and
used for noise management during key operations. Free value, need not be
a multiple of
base2k. In practice dsize*base2k + logN.fn rank_in(&self) -> Rank
fn rank_out(&self) -> Rank
fn dsize(&self) -> Dsize
Source§fn stride(&self) -> usize
fn stride(&self) -> usize
Row stride into the stored matrix: digit
i is stored row
(i + 1) * stride - 1. A key used as stored has stride 1; a
GGLWEView coarsening it to dsize reports
dsize / stored dsize.fn gglwe_layout(&self) -> GGLWELayout
Source§impl<BE: Backend, D: Data> GGLWEToBackendMut<BE> for GLWETensorKey<D, BE::ZnxWord>
impl<BE: Backend, D: Data> GGLWEToBackendMut<BE> for GLWETensorKey<D, BE::ZnxWord>
fn to_backend_mut(&mut self) -> GGLWEBackendMut<'_, BE>
Source§impl<BE: Backend, D: Data> GGLWEToBackendRef<BE> for GLWETensorKey<D, BE::ZnxWord>
impl<BE: Backend, D: Data> GGLWEToBackendRef<BE> for GLWETensorKey<D, BE::ZnxWord>
fn to_backend_ref(&self) -> GGLWEBackendRef<'_, BE>
Source§impl<D: Data, W: ZnxWord> GLWEInfos for GLWETensorKey<D, W>
impl<D: Data, W: ZnxWord> GLWEInfos for GLWETensorKey<D, W>
Source§fn glwe_layout(&self) -> GLWELayout
fn glwe_layout(&self) -> GLWELayout
Returns a plain-data
GLWELayout snapshot of the current parameters.Source§impl<D: Data, W: ZnxWord> LWEInfos for GLWETensorKey<D, W>
impl<D: Data, W: ZnxWord> LWEInfos for GLWETensorKey<D, W>
Source§fn n(&self) -> Degree
fn n(&self) -> Degree
Returns the LWE dimension, i.e. the number of mask elements (= GLWE ring degree N).
Source§fn base2k(&self) -> Base2K
fn base2k(&self) -> Base2K
Returns the base-2-log of the limb width used for the RNS/CRT representation.
Source§fn max_size(&self) -> usize
fn max_size(&self) -> usize
Returns the allocated limb capacity of the backing container: the
physical width operations may compute at (
size() <= max_size()).
Together with k() this fully describes an object: k is the claimed
precision and max_size the allocation. Layout/spec types without a
buffer report their metadata-derived width.Source§fn k(&self) -> TorusPrecision
fn k(&self) -> TorusPrecision
Returns the Torus precision used by the object.
Source§fn max_k(&self) -> TorusPrecision
fn max_k(&self) -> TorusPrecision
Returns the Torus precision the allocation can hold
(
Self::max_size * base2k).Source§fn lwe_layout(&self) -> LWELayout
fn lwe_layout(&self) -> LWELayout
Returns a plain-data
LWELayout snapshot of the current parameters.Source§impl<D: HostDataMut, W: ZnxWord> ReaderFrom for GLWETensorKey<D, W>
impl<D: HostDataMut, W: ZnxWord> ReaderFrom for GLWETensorKey<D, W>
impl<D: PartialEq + Data, W: PartialEq + ZnxWord> StructuralPartialEq for GLWETensorKey<D, W>
Source§impl<D1, D2, W> TransferInto<GLWETensorKey<D2, W>> for GLWETensorKey<D1, W>
impl<D1, D2, W> TransferInto<GLWETensorKey<D2, W>> for GLWETensorKey<D1, W>
Source§fn transfer_into(&self, dst: &mut GLWETensorKey<D2, W>)
fn transfer_into(&self, dst: &mut GLWETensorKey<D2, W>)
Panics Read more
Auto Trait Implementations§
impl<D, W> Freeze for GLWETensorKey<D, W>
impl<D, W> RefUnwindSafe for GLWETensorKey<D, W>where
GGLWE<D, W>: RefUnwindSafe,
impl<D, W> Send for GLWETensorKey<D, W>
impl<D, W> Sync for GLWETensorKey<D, W>
impl<D, W> Unpin for GLWETensorKey<D, W>
impl<D, W> UnsafeUnpin for GLWETensorKey<D, W>where
GGLWE<D, W>: UnsafeUnpin,
impl<D, W> UnwindSafe for GLWETensorKey<D, W>where
GGLWE<D, W>: UnwindSafe,
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> ⓘ
Converts
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> ⓘ
Converts
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 more