From 5ccdfb9f81e0a2a89d438dbc97ff800374a1ffc7 Mon Sep 17 00:00:00 2001 From: PaddiM8 Date: Fri, 24 Sep 2021 14:03:47 +0200 Subject: [PATCH] NaN for comparisons with imaginary numbers --- kalk/src/kalk_num/mod.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/kalk/src/kalk_num/mod.rs b/kalk/src/kalk_num/mod.rs index 8b394e8..ded8505 100644 --- a/kalk/src/kalk_num/mod.rs +++ b/kalk/src/kalk_num/mod.rs @@ -418,24 +418,41 @@ impl KalkNum { } pub(crate) fn eq_without_unit(&self, rhs: &KalkNum) -> KalkNum { + if self.has_imaginary() || rhs.has_imaginary() { + return KalkNum::from(f64::NAN); + } + KalkNum::from_bool( (self.value.clone() - rhs.value.clone()).abs() < ACCEPTABLE_COMPARISON_MARGIN, ) } pub(crate) fn not_eq_without_unit(&self, rhs: &KalkNum) -> KalkNum { + if self.has_imaginary() || rhs.has_imaginary() { + return KalkNum::from(f64::NAN); + } + KalkNum::from_bool( (self.value.clone() - rhs.value.clone()).abs() > ACCEPTABLE_COMPARISON_MARGIN, ) } pub(crate) fn greater_than_without_unit(&self, rhs: &KalkNum) -> KalkNum { + if self.has_imaginary() || rhs.has_imaginary() { + return KalkNum::from(f64::NAN); + } + KalkNum::from_bool(self.value.clone() - rhs.value.clone() > ACCEPTABLE_COMPARISON_MARGIN) } pub(crate) fn less_than_without_unit(&self, rhs: &KalkNum) -> KalkNum { + if self.has_imaginary() || rhs.has_imaginary() { + return KalkNum::from(f64::NAN); + } + KalkNum::from_bool(self.value.clone() - rhs.value.clone() < -ACCEPTABLE_COMPARISON_MARGIN) } + pub fn get_conjugate(&self) -> KalkNum { KalkNum::new_with_imaginary( self.value.clone(),