1#![allow(deprecated)]
2#[cfg(feature = "serde_serialize")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Copy, Clone, Eq, PartialEq, Debug)]
7#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
8pub struct PlaintextCount(pub usize);
9
10#[derive(Copy, Clone, Eq, PartialEq, Debug)]
12#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
13pub struct EncoderCount(pub usize);
14
15#[derive(Copy, Clone, Eq, PartialEq, Debug)]
17#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
18pub struct CleartextCount(pub usize);
19
20#[derive(Copy, Clone, Eq, PartialEq, Debug)]
22#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
23pub struct CiphertextCount(pub usize);
24
25#[derive(Copy, Clone, Eq, PartialEq, Debug)]
27#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
28pub struct LweCiphertextCount(pub usize);
29
30#[derive(Copy, Clone, Eq, PartialEq, Debug)]
32#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
33pub struct LweCiphertextIndex(pub usize);
34
35#[derive(Copy, Clone, Eq, PartialEq, Debug)]
37#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
38pub struct LweCiphertextRange(pub usize, pub usize);
39
40impl LweCiphertextRange {
41 pub fn is_ordered(&self) -> bool {
42 self.1 <= self.0
43 }
44}
45
46#[derive(Copy, Clone, Eq, PartialEq, Debug)]
48#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
49pub struct GlweCiphertextCount(pub usize);
50
51#[derive(Copy, Clone, Eq, PartialEq, Debug)]
53#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
54pub struct GswCiphertextCount(pub usize);
55
56#[derive(Copy, Clone, Eq, PartialEq, Debug)]
58#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
59pub struct GgswCiphertextCount(pub usize);
60
61#[derive(Debug, PartialEq, Eq, Copy, Clone)]
63#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
64pub struct LweSize(pub usize);
65
66impl LweSize {
67 pub fn to_lwe_dimension(&self) -> LweDimension {
69 LweDimension(self.0 - 1)
70 }
71}
72
73#[derive(Copy, Clone, Eq, PartialEq, Debug)]
75#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
76pub struct LweDimension(pub usize);
77
78impl LweDimension {
79 pub fn to_lwe_size(&self) -> LweSize {
81 LweSize(self.0 + 1)
82 }
83}
84
85#[derive(Debug, PartialEq, Eq, Ord, PartialOrd, Copy, Clone)]
88#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
89pub struct GlweSize(pub usize);
90
91impl GlweSize {
92 pub fn to_glwe_dimension(&self) -> GlweDimension {
94 GlweDimension(self.0 - 1)
95 }
96}
97
98#[derive(Copy, Clone, Eq, PartialEq, Debug)]
100#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
101pub struct GlweDimension(pub usize);
102
103impl GlweDimension {
104 pub fn to_glwe_size(&self) -> GlweSize {
106 GlweSize(self.0 + 1)
107 }
108}
109
110#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
114#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
115pub struct PolynomialSize(pub usize);
116
117impl PolynomialSize {
118 pub fn log2(&self) -> PolynomialSizeLog {
120 PolynomialSizeLog((self.0 as f64).log2().ceil() as usize)
121 }
122}
123
124#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
128#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
129pub struct PolynomialSizeLog(pub usize);
130
131impl PolynomialSizeLog {
132 pub fn to_polynomial_size(&self) -> PolynomialSize {
134 PolynomialSize(1 << self.0)
135 }
136}
137
138#[derive(Debug, Clone, Copy, PartialEq, Eq)]
142#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
143pub struct PolynomialCount(pub usize);
144
145#[derive(Debug, Clone, Copy, PartialEq, Eq)]
149#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
150#[deprecated(note = "MonomialDegree is not used anymore in the API. You should not use it.")]
151pub struct MonomialDegree(pub usize);
152
153#[derive(Debug, Clone, Copy, PartialEq, Eq)]
155#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
156pub struct MonomialIndex(pub usize);
157
158#[derive(Debug, PartialEq, Eq, Copy, Clone)]
162#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
163pub struct DecompositionBaseLog(pub usize);
164
165#[derive(Debug, PartialEq, Eq, Copy, Clone)]
170#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
171pub struct DecompositionLevelCount(pub usize);
172
173#[derive(Debug, PartialEq, Eq, Copy, Clone)]
175#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
176pub struct LutCountLog(pub usize);
177
178#[derive(Debug, PartialEq, Eq, Copy, Clone)]
183#[cfg_attr(feature = "serde_serialize", derive(Serialize, Deserialize))]
184pub struct ModulusSwitchOffset(pub usize);