pub struct CompressedModulusSwitchedRadixCiphertext(/* private fields */);
Available on crate feature
integer
only.Expand description
An object to store a ciphertext using less memory. Decompressing it requires a PBS
§Example
use tfhe::integer::gen_keys_radix;
use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
use tfhe::shortint::PBSParameters;
// We have 4 * 2 = 8 bits of message
let size = 4;
let (cks, sks) =
gen_keys_radix::<PBSParameters>(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128.into(), size);
let clear = 3u8;
let ctxt = cks.encrypt(clear);
let compressed_ct = sks.switch_modulus_and_compress_parallelized(&ctxt);
let decompressed_ct = sks.decompress_parallelized(&compressed_ct);
let dec = cks.decrypt(&decompressed_ct);
assert_eq!(clear, dec);
Trait Implementations§
Source§impl Clone for CompressedModulusSwitchedRadixCiphertext
impl Clone for CompressedModulusSwitchedRadixCiphertext
Source§fn clone(&self) -> CompressedModulusSwitchedRadixCiphertext
fn clone(&self) -> CompressedModulusSwitchedRadixCiphertext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<'de> Deserialize<'de> for CompressedModulusSwitchedRadixCiphertext
impl<'de> Deserialize<'de> for CompressedModulusSwitchedRadixCiphertext
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl ParameterSetConformant for CompressedModulusSwitchedRadixCiphertext
impl ParameterSetConformant for CompressedModulusSwitchedRadixCiphertext
type ParameterSet = RadixCiphertextConformanceParams
fn is_conformant(&self, params: &RadixCiphertextConformanceParams) -> bool
Source§impl Unversionize for CompressedModulusSwitchedRadixCiphertext
impl Unversionize for CompressedModulusSwitchedRadixCiphertext
Source§fn unversionize(
versioned: Self::VersionedOwned,
) -> Result<Self, UnversionizeError>
fn unversionize( versioned: Self::VersionedOwned, ) -> Result<Self, UnversionizeError>
Creates an object from a versioned enum, and eventually upgrades from previous
variants.
Source§impl UnversionizeVec for CompressedModulusSwitchedRadixCiphertext
impl UnversionizeVec for CompressedModulusSwitchedRadixCiphertext
fn unversionize_vec( versioned: Self::VersionedVec, ) -> Result<Vec<Self>, UnversionizeError>
Source§impl Versionize for CompressedModulusSwitchedRadixCiphertext
impl Versionize for CompressedModulusSwitchedRadixCiphertext
Source§type Versioned<'vers> = <CompressedModulusSwitchedRadixCiphertextVersions as VersionsDispatch<CompressedModulusSwitchedRadixCiphertext>>::Ref<'vers>
type Versioned<'vers> = <CompressedModulusSwitchedRadixCiphertextVersions as VersionsDispatch<CompressedModulusSwitchedRadixCiphertext>>::Ref<'vers>
The equivalent versioned type. It should have a variant for each version.
It may own the underlying data or only hold a read-only reference to it.
Source§fn versionize(&self) -> Self::Versioned<'_>
fn versionize(&self) -> Self::Versioned<'_>
Wraps the object into a versioned enum with a variant for each version. This will
use references on the underlying types if possible.
Source§impl VersionizeOwned for CompressedModulusSwitchedRadixCiphertext
impl VersionizeOwned for CompressedModulusSwitchedRadixCiphertext
type VersionedOwned = <CompressedModulusSwitchedRadixCiphertextVersions as VersionsDispatch<CompressedModulusSwitchedRadixCiphertext>>::Owned
Source§fn versionize_owned(self) -> Self::VersionedOwned
fn versionize_owned(self) -> Self::VersionedOwned
Wraps the object into a versioned enum with a variant for each version. This will
clone the underlying types.
Source§impl VersionizeSlice for CompressedModulusSwitchedRadixCiphertext
impl VersionizeSlice for CompressedModulusSwitchedRadixCiphertext
type VersionedSlice<'vers> = Vec<<CompressedModulusSwitchedRadixCiphertext as Versionize>::Versioned<'vers>>
fn versionize_slice(slice: &[Self]) -> Self::VersionedSlice<'_>
Source§impl VersionizeVec for CompressedModulusSwitchedRadixCiphertext
impl VersionizeVec for CompressedModulusSwitchedRadixCiphertext
type VersionedVec = Vec<<CompressedModulusSwitchedRadixCiphertext as VersionizeOwned>::VersionedOwned>
fn versionize_vec(vec: Vec<Self>) -> Self::VersionedVec
Auto Trait Implementations§
impl Freeze for CompressedModulusSwitchedRadixCiphertext
impl RefUnwindSafe for CompressedModulusSwitchedRadixCiphertext
impl Send for CompressedModulusSwitchedRadixCiphertext
impl Sync for CompressedModulusSwitchedRadixCiphertext
impl Unpin for CompressedModulusSwitchedRadixCiphertext
impl UnwindSafe for CompressedModulusSwitchedRadixCiphertext
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> 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>
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