\frac{x \cdot 2}{y \cdot z - t \cdot z}-\frac{2}{\left(\left(y - t\right) \cdot \left(\frac{\sqrt[3]{z}}{\sqrt[3]{x}} \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{x}}\right)\right) \cdot \left(-\frac{\sqrt[3]{z}}{\sqrt[3]{x}}\right)}double f(double x, double y, double z, double t) {
double r26167389 = x;
double r26167390 = 2.0;
double r26167391 = r26167389 * r26167390;
double r26167392 = y;
double r26167393 = z;
double r26167394 = r26167392 * r26167393;
double r26167395 = t;
double r26167396 = r26167395 * r26167393;
double r26167397 = r26167394 - r26167396;
double r26167398 = r26167391 / r26167397;
return r26167398;
}
double f(double x, double y, double z, double t) {
double r26167399 = 2.0;
double r26167400 = y;
double r26167401 = t;
double r26167402 = r26167400 - r26167401;
double r26167403 = z;
double r26167404 = cbrt(r26167403);
double r26167405 = x;
double r26167406 = cbrt(r26167405);
double r26167407 = r26167404 / r26167406;
double r26167408 = r26167407 * r26167407;
double r26167409 = r26167402 * r26167408;
double r26167410 = -r26167407;
double r26167411 = r26167409 * r26167410;
double r26167412 = r26167399 / r26167411;
double r26167413 = -r26167412;
return r26167413;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 2.2 |
| Herbie | 2.4 |
Initial program 6.7
Simplified5.9
rmApplied add-cube-cbrt6.6
Applied add-cube-cbrt6.8
Applied times-frac6.8
Applied associate-*l*2.4
rmApplied frac-2neg2.4
Simplified2.4
Final simplification2.4
herbie shell --seed 2019192 +o rules:numerics
(FPCore (x y z t)
:name "Linear.Projection:infinitePerspective from linear-1.19.1.3, A"
:herbie-target
(if (< (/ (* x 2.0) (- (* y z) (* t z))) -2.559141628295061e-13) (* (/ x (* (- y t) z)) 2.0) (if (< (/ (* x 2.0) (- (* y z) (* t z))) 1.045027827330126e-269) (/ (* (/ x z) 2.0) (- y t)) (* (/ x (* (- y t) z)) 2.0)))
(/ (* x 2.0) (- (* y z) (* t z))))