pub struct DarySegmentTreeAddI32 {
levels: Vec<Vec<Block<i32, 16>>>,
len: usize,
backend: SimdBackend,
}Expand description
A cache-line-oriented d-ary point-update segment tree for wrapping range sums over i32.
Fields§
§levels: Vec<Vec<Block<i32, 16>>>§len: usize§backend: SimdBackendImplementations§
Source§impl DarySegmentTreeAddI32
impl DarySegmentTreeAddI32
pub fn new(len: usize) -> Self
pub fn from_vec(values: Vec<i32>) -> Self
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn set(&mut self, index: usize, value: i32)
pub fn clear(&mut self, index: usize)
pub fn update(&mut self, index: usize, value: i32)
pub fn get(&self, index: usize) -> i32
pub fn fold<R>(&self, range: R) -> i32where
R: RangeBounds<usize>,
pub fn fold_all(&self) -> i32
fn build(values: Vec<i32>, backend: SimdBackend) -> Self
fn set_value(&mut self, index: usize, value: i32)
fn reduce_scalar(values: &[i32; 16]) -> i32
fn reduce_range_scalar(values: &[i32; 16], start: usize, end: usize) -> i32
fn set_by<F>(&mut self, index: usize, value: i32, reduce: F)
fn fold_by<F>(&self, left: usize, right: usize, reduce: F) -> i32
unsafe fn set_avx2(&mut self, index: usize, value: i32)
unsafe fn fold_avx2(&self, left: usize, right: usize) -> i32
unsafe fn set_avx512(&mut self, index: usize, value: i32)
unsafe fn fold_avx512(&self, left: usize, right: usize) -> i32
Trait Implementations§
Source§impl Clone for DarySegmentTreeAddI32
impl Clone for DarySegmentTreeAddI32
Auto Trait Implementations§
impl Freeze for DarySegmentTreeAddI32
impl RefUnwindSafe for DarySegmentTreeAddI32
impl Send for DarySegmentTreeAddI32
impl Sync for DarySegmentTreeAddI32
impl Unpin for DarySegmentTreeAddI32
impl UnsafeUnpin for DarySegmentTreeAddI32
impl UnwindSafe for DarySegmentTreeAddI32
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