pub struct DarySegmentTreeMinI64 {
levels: Vec<Vec<Block<i64, 8>>>,
len: usize,
backend: SimdBackend,
}Expand description
A cache-line-oriented d-ary point-update segment tree for range minima over i64.
Fields§
§levels: Vec<Vec<Block<i64, 8>>>§len: usize§backend: SimdBackendImplementations§
Source§impl DarySegmentTreeMinI64
impl DarySegmentTreeMinI64
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 DarySegmentTreeMinI64
impl Clone for DarySegmentTreeMinI64
Auto Trait Implementations§
impl Freeze for DarySegmentTreeMinI64
impl RefUnwindSafe for DarySegmentTreeMinI64
impl Send for DarySegmentTreeMinI64
impl Sync for DarySegmentTreeMinI64
impl Unpin for DarySegmentTreeMinI64
impl UnsafeUnpin for DarySegmentTreeMinI64
impl UnwindSafe for DarySegmentTreeMinI64
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