(FPCore (x y z t) :precision binary64 (* (- (* x y) (* z y)) t))
↓
(FPCore (x y z t)
:precision binary64
(let* ((t_1 (* (- (* x y) (* y z)) t)))
(if (<= t_1 -5e+296)
(* (- x z) (* y t))
(if (<= t_1 2e+283)
(fma (* y (- x z)) t (* t (fma y (- z) (* y z))))
(* y (* t (- x z)))))))
(*.f64 (-.f64 x z) (*.f64 y t)): 0 points increase in error, 0 points decrease in error
(*.f64 (-.f64 x z) (Rewrite<= *-commutative_binary64 (*.f64 t y))): 0 points increase in error, 0 points decrease in error
(Rewrite<= *-commutative_binary64 (*.f64 (*.f64 t y) (-.f64 x z))): 0 points increase in error, 0 points decrease in error
(*.f64 (*.f64 t y) (Rewrite=> sub-neg_binary64 (+.f64 x (neg.f64 z)))): 0 points increase in error, 0 points decrease in error
(Rewrite<= distribute-lft-out_binary64 (+.f64 (*.f64 (*.f64 t y) x) (*.f64 (*.f64 t y) (neg.f64 z)))): 2 points increase in error, 0 points decrease in error
(+.f64 (*.f64 (Rewrite=> *-commutative_binary64 (*.f64 y t)) x) (*.f64 (*.f64 t y) (neg.f64 z))): 0 points increase in error, 0 points decrease in error
(+.f64 (Rewrite<= associate-*r*_binary64 (*.f64 y (*.f64 t x))) (*.f64 (*.f64 t y) (neg.f64 z))): 37 points increase in error, 35 points decrease in error
(+.f64 (*.f64 y (*.f64 t x)) (Rewrite=> distribute-rgt-neg-out_binary64 (neg.f64 (*.f64 (*.f64 t y) z)))): 0 points increase in error, 0 points decrease in error
(+.f64 (*.f64 y (*.f64 t x)) (neg.f64 (*.f64 (Rewrite=> *-commutative_binary64 (*.f64 y t)) z))): 0 points increase in error, 0 points decrease in error
(+.f64 (*.f64 y (*.f64 t x)) (neg.f64 (Rewrite<= associate-*r*_binary64 (*.f64 y (*.f64 t z))))): 28 points increase in error, 33 points decrease in error
(+.f64 (*.f64 y (*.f64 t x)) (Rewrite<= mul-1-neg_binary64 (*.f64 -1 (*.f64 y (*.f64 t z))))): 0 points increase in error, 0 points decrease in error
if -5.0000000000000001e296 < (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) < 1.99999999999999991e283
herbie shell --seed 2022325
(FPCore (x y z t)
:name "Linear.Projection:inverseInfinitePerspective from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< t -9.231879582886777e-80) (* (* y t) (- x z)) (if (< t 2.543067051564877e+83) (* y (* t (- x z))) (* (* y (- x z)) t)))
(* (- (* x y) (* z y)) t))