Function polars::export::arrow::compute::arithmetics::decimal::saturating_mul
source · [−]pub fn saturating_mul(
lhs: &PrimitiveArray<i128>,
rhs: &PrimitiveArray<i128>
) -> PrimitiveArray<i128>
This is supported on crate feature
compute_arithmetics
only.Expand description
Saturated multiplication of two decimal primitive arrays with the same precision and scale. If the precision and scale is different, then an InvalidArgumentError is returned. If the result from the multiplication is larger than the possible number with the selected precision then the resulted number in the arrow array is the maximum number for the selected precision.
Examples
use arrow2::compute::arithmetics::decimal::saturating_mul;
use arrow2::array::PrimitiveArray;
use arrow2::datatypes::DataType;
let a = PrimitiveArray::from([Some(999_99i128), Some(1_00i128), None, Some(2_00i128)]).to(DataType::Decimal(5, 2));
let b = PrimitiveArray::from([Some(10_00i128), Some(2_00i128), None, Some(2_00i128)]).to(DataType::Decimal(5, 2));
let result = saturating_mul(&a, &b);
let expected = PrimitiveArray::from([Some(999_99i128), Some(2_00i128), None, Some(4_00i128)]).to(DataType::Decimal(5, 2));
assert_eq!(result, expected);