\frac{x \cdot y - z \cdot t}{a}\begin{array}{l}
\mathbf{if}\;x \cdot y - z \cdot t = -\infty:\\
\;\;\;\;\frac{\frac{x}{{a}^{\frac{2}{3}}} \cdot y - \frac{z \cdot t}{{a}^{\frac{2}{3}}}}{\sqrt[3]{a}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y - z \cdot t}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r694675 = x;
double r694676 = y;
double r694677 = r694675 * r694676;
double r694678 = z;
double r694679 = t;
double r694680 = r694678 * r694679;
double r694681 = r694677 - r694680;
double r694682 = a;
double r694683 = r694681 / r694682;
return r694683;
}
double f(double x, double y, double z, double t, double a) {
double r694684 = x;
double r694685 = y;
double r694686 = r694684 * r694685;
double r694687 = z;
double r694688 = t;
double r694689 = r694687 * r694688;
double r694690 = r694686 - r694689;
double r694691 = -inf.0;
bool r694692 = r694690 <= r694691;
double r694693 = a;
double r694694 = 0.6666666666666666;
double r694695 = pow(r694693, r694694);
double r694696 = r694684 / r694695;
double r694697 = r694696 * r694685;
double r694698 = r694689 / r694695;
double r694699 = r694697 - r694698;
double r694700 = cbrt(r694693);
double r694701 = r694699 / r694700;
double r694702 = r694690 / r694693;
double r694703 = r694692 ? r694701 : r694702;
return r694703;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.7 |
|---|---|
| Target | 6.5 |
| Herbie | 7.1 |
if (- (* x y) (* z t)) < -inf.0Initial program 64.0
rmApplied add-cube-cbrt64.0
Applied associate-/r*64.0
rmApplied div-sub64.0
Simplified53.1
Simplified53.1
if -inf.0 < (- (* x y) (* z t)) Initial program 4.4
Final simplification7.1
herbie shell --seed 2019305
(FPCore (x y z t a)
:name "Data.Colour.Matrix:inverse from colour-2.3.3, B"
:precision binary64
:herbie-target
(if (< z -2.46868496869954822e170) (- (* (/ y a) x) (* (/ t a) z)) (if (< z 6.30983112197837121e-71) (/ (- (* x y) (* z t)) a) (- (* (/ y a) x) (* (/ t a) z))))
(/ (- (* x y) (* z t)) a))