When operands use different dtypes, type promotion semantics determine the dtype of the operation result. JAX differs from NumPy: it defaults to float32 rather than aggressively promoting floating-point operands to float64. section 3.3.2
Mixing 16-bit floating-point types
With xb16 as bfloat16 and x16 as float16, xb16 + x16 produces float32 values. Adding xb16 to itself preserves bfloat16, showing that promotion depends on the operand combination.
