Skip to content

Commit 8bb49cd

Browse files
committed
wip
1 parent b22d2af commit 8bb49cd

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

numpy/core/src/umath/loops_binary_fp.dispatch.c.src

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,33 @@
1515
NPY_FINLINE npyv_f32
1616
simd_heaviside_f32(npyv_f32 x, npyv_f32 h)
1717
{
18-
// TODO: your implmentation
18+
npyv_f32 zeros = npyv_setall_f32(0.0);
19+
npyv_f32 ones = npyv_setall_f32(1.0);
20+
npyv_f32 lt_zero = npyv_cmplt_f32(x, zeros);
21+
npyv_f32 gt_zero = npyv_cmpgt_f32(x, zeros);
22+
npyv_f32 eq_zero = npyv_cmpeq_f32(x, zeros);
23+
npyv_f32 lt_zero_res = npyv_and_f32(lt_zero, zeros);
24+
npyv_f32 gt_zero_res = npyv_and_f32(gt_zero, ones);
25+
npyv_f32 eq_zero_res = npyv_and_f32(eq_zero, h);
26+
27+
return npyv_or_f32(lt_zero_res, npyv_or_f32(gt_zero_res, eq_zero_res));
1928
}
2029
#endif
2130

2231
#if NPY_SIMD_F64
2332
NPY_FINLINE npyv_f64
2433
simd_heaviside_f64(npyv_f64 x, npyv_f64 h)
2534
{
26-
// TODO: your implmentation
35+
npyv_f64 zeros = npyv_setall_f64(0.0);
36+
npyv_f64 ones = npyv_setall_f64(1.0);
37+
npyv_f64 lt_zero = npyv_cmplt_f64(x, zeros);
38+
npyv_f64 gt_zero = npyv_cmpgt_f64(x, zeros);
39+
npyv_f64 eq_zero = npyv_cmpeq_f64(x, zeros);
40+
npyv_f64 lt_zero_res = npyv_and_f64(lt_zero, zeros);
41+
npyv_f64 gt_zero_res = npyv_and_f64(gt_zero, ones);
42+
npyv_f64 eq_zero_res = npyv_and_f64(eq_zero, h);
43+
44+
return npyv_or_f64(lt_zero_res, npyv_or_f64(gt_zero_res, eq_zero_res));
2745
}
2846
#endif
2947

0 commit comments

Comments
 (0)