\frac{x \cdot 2}{y \cdot z - t \cdot z}\frac{\frac{x}{\frac{y - t}{2}}}{z}double f(double x, double y, double z, double t) {
double r422324 = x;
double r422325 = 2.0;
double r422326 = r422324 * r422325;
double r422327 = y;
double r422328 = z;
double r422329 = r422327 * r422328;
double r422330 = t;
double r422331 = r422330 * r422328;
double r422332 = r422329 - r422331;
double r422333 = r422326 / r422332;
return r422333;
}
double f(double x, double y, double z, double t) {
double r422334 = x;
double r422335 = y;
double r422336 = t;
double r422337 = r422335 - r422336;
double r422338 = 2.0;
double r422339 = r422337 / r422338;
double r422340 = r422334 / r422339;
double r422341 = z;
double r422342 = r422340 / r422341;
return r422342;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.9 |
|---|---|
| Target | 2.2 |
| Herbie | 5.7 |
if x < -1.0086536878019123e+59 or 6.8034908568658585e+65 < x Initial program 12.8
Simplified12.2
rmApplied *-un-lft-identity12.2
Applied times-frac12.1
Applied *-un-lft-identity12.1
Applied times-frac3.8
Simplified3.8
rmApplied *-un-lft-identity3.8
Applied *-un-lft-identity3.8
Applied times-frac3.8
Applied associate-*l*3.8
Simplified3.7
if -1.0086536878019123e+59 < x < 6.8034908568658585e+65Initial program 3.6
Simplified2.2
Final simplification5.7
herbie shell --seed 2019308
(FPCore (x y z t)
:name "Linear.Projection:infinitePerspective from linear-1.19.1.3, A"
:precision binary64
:herbie-target
(if (< (/ (* x 2) (- (* y z) (* t z))) -2.559141628295061e-13) (* (/ x (* (- y t) z)) 2) (if (< (/ (* x 2) (- (* y z) (* t z))) 1.045027827330126e-269) (/ (* (/ x z) 2) (- y t)) (* (/ x (* (- y t) z)) 2)))
(/ (* x 2) (- (* y z) (* t z))))