\frac{x \cdot 2}{y \cdot z - t \cdot z}\frac{\sqrt[3]{x}}{\sqrt[3]{z}} \cdot \frac{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot 2}{y - t}double f(double x, double y, double z, double t) {
double r458754 = x;
double r458755 = 2.0;
double r458756 = r458754 * r458755;
double r458757 = y;
double r458758 = z;
double r458759 = r458757 * r458758;
double r458760 = t;
double r458761 = r458760 * r458758;
double r458762 = r458759 - r458761;
double r458763 = r458756 / r458762;
return r458763;
}
double f(double x, double y, double z, double t) {
double r458764 = x;
double r458765 = cbrt(r458764);
double r458766 = z;
double r458767 = cbrt(r458766);
double r458768 = r458765 / r458767;
double r458769 = r458765 * r458765;
double r458770 = r458767 * r458767;
double r458771 = r458769 / r458770;
double r458772 = 2.0;
double r458773 = r458771 * r458772;
double r458774 = y;
double r458775 = t;
double r458776 = r458774 - r458775;
double r458777 = r458773 / r458776;
double r458778 = r458768 * r458777;
return r458778;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 2.2 |
| Herbie | 1.9 |
Initial program 6.7
Simplified6.0
rmApplied add-cube-cbrt6.6
Applied add-cube-cbrt6.8
Applied times-frac6.8
Applied associate-*r*1.9
Simplified1.9
Final simplification1.9
herbie shell --seed 2019179
(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))))