Lean4
@[nolint docBlame]
unsafe def div (mode : RMode) : Float → Float → Float
| nan, _ => nan
| _, nan => nan
| inf _, inf _ => nan
| inf s₁, f₂ => inf (xor s₁ f₂.sign)
| f₁, inf s₂ => zero (xor f₁.sign s₂)
| finite s₁ e₁ m₁ v₁, finite s₂ e₂ m₂ v₂ =>
let f₁ := finite s₁ e₁ m₁ v₁
let f₂ := finite s₂ e₂ m₂ v₂
if f₂.isZero then inf (xor s₁ s₂) else ofRat mode (toRat f₁ rfl / toRat f₂ rfl)