\frac{x \cdot 2}{y \cdot z - t \cdot z}\frac{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{z}}}{\sqrt[3]{\frac{y - t}{\frac{2}{\sqrt[3]{z}}}} \cdot \sqrt[3]{\frac{y - t}{\frac{2}{\sqrt[3]{z}}}}} \cdot \frac{\frac{\sqrt[3]{x}}{\sqrt[3]{z}}}{\sqrt[3]{\frac{y - t}{\frac{2}{\sqrt[3]{z}}}}}double f(double x, double y, double z, double t) {
double r377373 = x;
double r377374 = 2.0;
double r377375 = r377373 * r377374;
double r377376 = y;
double r377377 = z;
double r377378 = r377376 * r377377;
double r377379 = t;
double r377380 = r377379 * r377377;
double r377381 = r377378 - r377380;
double r377382 = r377375 / r377381;
return r377382;
}
double f(double x, double y, double z, double t) {
double r377383 = x;
double r377384 = cbrt(r377383);
double r377385 = r377384 * r377384;
double r377386 = z;
double r377387 = cbrt(r377386);
double r377388 = r377385 / r377387;
double r377389 = y;
double r377390 = t;
double r377391 = r377389 - r377390;
double r377392 = 2.0;
double r377393 = r377392 / r377387;
double r377394 = r377391 / r377393;
double r377395 = cbrt(r377394);
double r377396 = r377395 * r377395;
double r377397 = r377388 / r377396;
double r377398 = r377384 / r377387;
double r377399 = r377398 / r377395;
double r377400 = r377397 * r377399;
return r377400;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.0 |
|---|---|
| Target | 2.2 |
| Herbie | 2.6 |
Initial program 7.0
Simplified5.8
rmApplied associate-/r*6.0
rmApplied add-cube-cbrt6.7
Applied times-frac6.7
Applied associate-/l*5.4
rmApplied add-cube-cbrt5.6
Applied add-cube-cbrt5.7
Applied times-frac5.7
Applied times-frac2.6
Final simplification2.6
herbie shell --seed 2019303 +o rules:numerics
(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))))