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