diff --git a/backend-simulators/pim/pim-simulator/src/lib/memory_manager/type_traits.rs b/backend-simulators/pim/pim-simulator/src/lib/memory_manager/type_traits.rs index 6778dfa..b79d51d 100644 --- a/backend-simulators/pim/pim-simulator/src/lib/memory_manager/type_traits.rs +++ b/backend-simulators/pim/pim-simulator/src/lib/memory_manager/type_traits.rs @@ -55,15 +55,23 @@ pub trait HasSigm { impl HasSigm for f32 { fn sigm(self) -> Self { - let ex = self.exp(); - ex / (1.0 + ex) + if self >= 0.0 { + 1.0 / (1.0 + (-self).exp()) + } else { + let ex = self.exp(); + ex / (1.0 + ex) + } } } impl HasSigm for f64 { fn sigm(self) -> Self { - let ex = self.exp(); - ex / (1.0 + ex) + if self >= 0.0 { + 1.0 / (1.0 + (-self).exp()) + } else { + let ex = self.exp(); + ex / (1.0 + ex) + } } }