tract_linalg/generic/
leaky_relu.rs1#![allow(clippy::excessive_precision)]
2use tract_data::internal::*;
3use tract_num_traits::Zero;
4
5routine_ew_rust!(generic;
6 f32,
7 generic_leaky_relu_f32_4n,
8 4,
9 4,
10 fn run(x: &mut [f32], alpha: f32) {
11 debug_assert!(x.len() % Self::nr() == 0);
12 debug_assert!(x.as_ptr() as usize % Self::alignment_bytes() == 0);
13 x.iter_mut().for_each(|px| *px = if *px < 0. { *px * alpha } else { *px });
14 },
15 func(LeakyRelu),
16 param
17);
18
19routine_ew_rust!(generic;
20 f16,
21 generic_leaky_relu_f16_8n,
22 8,
23 8,
24 fn run(x: &mut [f16], alpha: f16) {
25 debug_assert!(x.len() % Self::nr() == 0);
26 debug_assert!(x.as_ptr() as usize % Self::alignment_bytes() == 0);
27 x.iter_mut().for_each(|px| *px = if *px < f16::zero() { *px * alpha } else { *px })
28 },
29 func(LeakyRelu),
30 param
31);