[docs]@Float.register(["clamp_min"])defclamp_min(s:"Stream[float]",c_min:float)->"Stream[float]":"""Clamps the minimum value of a stream. Parameters ---------- s : `Stream[float]` A float stream. c_min : float The mimimum value to clamp by. Returns ------- `Stream[float]` The minimum clamped stream of `s`. """returnBinOp(np.maximum)(s,Stream.constant(c_min)).astype("float")
[docs]@Float.register(["clamp_max"])defclamp_max(s:"Stream[float]",c_max:float)->"Stream[float]":"""Clamps the maximum value of a stream. Parameters ---------- s : `Stream[float]` A float stream. c_max : float The maximum value to clamp by. Returns ------- `Stream[float]` The maximum clamped stream of `s`. """returnBinOp(np.minimum)(s,Stream.constant(c_max)).astype("float")
[docs]@Float.register(["clamp"])defclamp(s:"Stream[float]",c_min:float,c_max:float)->"Stream[float]":"""Clamps the minimum and maximum value of a stream. Parameters ---------- s : `Stream[float]` A float stream. c_min : float The mimimum value to clamp by. c_max : float The maximum value to clamp by. Returns ------- `Stream[float]` The clamped stream of `s`. """stream=s.clamp_min(c_min).astype("float")stream=stream.clamp_max(c_max).astype("float")returnstream
[docs]@Float.register(["min"])defmin(s1:"Stream[float]",s2:"Stream[float]")->"Stream[float]":"""Computes the minimum of two streams. Parameters ---------- s1 : `Stream[float]` The first float stream. s2 : `Stream[float]` The second float stream. Returns ------- `Stream[float]` The minimum stream of `s1` and `s2`. """returnBinOp(np.minimum)(s1,s2).astype("float")
[docs]@Float.register(["max"])defmax(s1:"Stream[float]",s2:"Stream[float]")->"Stream[float]":"""Computes the maximum of two streams. Parameters ---------- s1 : `Stream[float]` The first float stream. s2 : `Stream[float]` The second float stream. Returns ------- `Stream[float]` The maximum stream of `s1` and `s2`. """returnBinOp(np.maximum)(s1,s2).astype("float")