(module embabi1_2_leaky_integrator

  ; Leaky integrator over Float samples, one sample per host call:
  ;   new = state * 0.5 + sample
  ; This is the Float-scalar counterpart of the Int EMA fold —
  ; same (State, Sample) -> State host-driven accumulator shape,
  ; exercising the other M1 scalar type across the C boundary.
  (fn leaky_step
    (export "leaky_step")
    (type
      (fn-type
        (params (own (con Float)) (own (con Float)))
        (ret (own (con Float)))))
    (params state sample)
    (body
      (app + (app * state 0.5) sample))))
