Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-compute/src/comparisons/scalar.rs
6939 views
1
use arrow::array::PrimitiveArray;
2
use arrow::bitmap::Bitmap;
3
use polars_utils::total_ord::TotalOrd;
4
5
use super::{TotalEqKernel, TotalOrdKernel};
6
use crate::NotSimdPrimitive;
7
8
impl<T: NotSimdPrimitive + TotalOrd> TotalEqKernel for PrimitiveArray<T> {
9
type Scalar = T;
10
11
fn tot_eq_kernel(&self, other: &Self) -> Bitmap {
12
assert!(self.len() == other.len());
13
self.values()
14
.iter()
15
.zip(other.values().iter())
16
.map(|(l, r)| l.tot_eq(r))
17
.collect()
18
}
19
20
fn tot_ne_kernel(&self, other: &Self) -> Bitmap {
21
assert!(self.len() == other.len());
22
self.values()
23
.iter()
24
.zip(other.values().iter())
25
.map(|(l, r)| l.tot_ne(r))
26
.collect()
27
}
28
29
fn tot_eq_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {
30
self.values().iter().map(|l| l.tot_eq(other)).collect()
31
}
32
33
fn tot_ne_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {
34
self.values().iter().map(|l| l.tot_ne(other)).collect()
35
}
36
}
37
38
impl<T: NotSimdPrimitive + TotalOrd> TotalOrdKernel for PrimitiveArray<T> {
39
type Scalar = T;
40
41
fn tot_lt_kernel(&self, other: &Self) -> Bitmap {
42
assert!(self.len() == other.len());
43
self.values()
44
.iter()
45
.zip(other.values().iter())
46
.map(|(l, r)| l.tot_lt(r))
47
.collect()
48
}
49
50
fn tot_le_kernel(&self, other: &Self) -> Bitmap {
51
assert!(self.len() == other.len());
52
self.values()
53
.iter()
54
.zip(other.values().iter())
55
.map(|(l, r)| l.tot_le(r))
56
.collect()
57
}
58
59
fn tot_lt_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {
60
self.values().iter().map(|l| l.tot_lt(other)).collect()
61
}
62
63
fn tot_le_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {
64
self.values().iter().map(|l| l.tot_le(other)).collect()
65
}
66
67
fn tot_gt_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {
68
self.values().iter().map(|l| l.tot_gt(other)).collect()
69
}
70
71
fn tot_ge_kernel_broadcast(&self, other: &Self::Scalar) -> Bitmap {
72
self.values().iter().map(|l| l.tot_ge(other)).collect()
73
}
74
}
75
76