Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-ops/src/series/ops/negate.rs
8458 views
1
use polars_core::prelude::*;
2
3
pub fn negate(s: &Series) -> PolarsResult<Series> {
4
use DataType::*;
5
let out = match s.dtype() {
6
#[cfg(feature = "dtype-i8")]
7
Int8 => s.i8().unwrap().wrapping_neg().into_series(),
8
#[cfg(feature = "dtype-i16")]
9
Int16 => s.i16().unwrap().wrapping_neg().into_series(),
10
Int32 => s.i32().unwrap().wrapping_neg().into_series(),
11
Int64 => s.i64().unwrap().wrapping_neg().into_series(),
12
#[cfg(feature = "dtype-f16")]
13
Float16 => s.f16().unwrap().wrapping_neg().into_series(),
14
Float32 => s.f32().unwrap().wrapping_neg().into_series(),
15
Float64 => s.f64().unwrap().wrapping_neg().into_series(),
16
#[cfg(feature = "dtype-decimal")]
17
Decimal(_, _) => {
18
let ca = s.decimal().unwrap();
19
let precision = ca.precision();
20
let scale = ca.scale();
21
22
let out = ca.physical().wrapping_neg();
23
out.into_decimal_unchecked(precision, scale).into_series()
24
},
25
#[cfg(feature = "dtype-duration")]
26
Duration(_) => {
27
let physical = s.to_physical_repr();
28
let ca = physical.i64().unwrap();
29
let out = ca.wrapping_neg().into_series();
30
out.cast(s.dtype())?
31
},
32
dt => polars_bail!(opq = neg, dt),
33
};
34
Ok(out)
35
}
36
37