get GGSW multibit

This commit is contained in:
Rasoul Akhavan Mahdavi
2025-11-19 09:38:53 -05:00
parent 9e007c988f
commit ad837c8fa8

View File

@@ -48,6 +48,7 @@ impl<D: DataRef, T: UnsignedInteger, BE: Backend> GetGGSWBit<BE> for FheUintPrep
pub trait GetGGSWBitMut<T: UnsignedInteger, BE: Backend> {
fn get_bit(&mut self, bit: usize) -> GGSWPrepared<&mut [u8], BE>;
fn get_bits(&mut self, start: usize, count: usize) -> Vec<GGSWPrepared<&mut [u8], BE>>;
}
impl<D: DataMut, T: UnsignedInteger, BE: Backend> GetGGSWBitMut<T, BE> for FheUintPrepared<D, T, BE> {
@@ -55,6 +56,13 @@ impl<D: DataMut, T: UnsignedInteger, BE: Backend> GetGGSWBitMut<T, BE> for FheUi
assert!(bit <= self.bits.len());
self.bits[bit].to_mut()
}
fn get_bits(&mut self, start: usize, count: usize) -> Vec<GGSWPrepared<&mut [u8], BE>> {
assert!(start + count <= self.bits.len());
self.bits[start..start + count]
.iter_mut()
.map(|bit| bit.to_mut())
.collect()
}
}
impl<D: Data, T: UnsignedInteger, BE: Backend> BitSize for FheUintPrepared<D, T, BE> {