def join(self, xt, yt): xz, yz = type(xt) is Zero, type(yt) is Zero if xz == yz: return xt, yt elif yz and not xz: return xt, zeros_like_jaxval(xt) elif xz and not yz: return zeros_like_jaxval(yt), yt else: raise TypeError((xt, yt))
def zeros_like_batched(batched_args, batch_dims): val, = batched_args bdim, = batch_dims return zeros_like_jaxval(val), bdim
def replace_float0s(primal, tangent): if dtype(tangent) is float0: return zeros_like_jaxval(primal) else: return tangent