Lean4
@[nolint docBlame]
unsafe def add (mode : RMode) : Float → Float → Float
| nan, _ => nan
| _, nan => nan
| inf Bool.true, inf Bool.false => nan
| inf Bool.false, inf Bool.true => nan
| inf s₁, _ => inf s₁
| _, inf s₂ => inf 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₂
ofRat mode (toRat f₁ rfl + toRat f₂ rfl)