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