From cff929a08301e4d791de55fd3a9f86e38dbf56ad Mon Sep 17 00:00:00 2001 From: NiccoloN Date: Thu, 23 Apr 2026 10:34:29 +0200 Subject: [PATCH] fix sigmoid implementation stability in pim-simulator --- .../src/lib/memory_manager/type_traits.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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) + } } }