\frac{x \cdot y - z \cdot t}{a}\begin{array}{l}
\mathbf{if}\;a \le -3.15371004913535115448520191961472535508 \cdot 10^{201} \lor \neg \left(a \le 2.040075352769508416644879369622871361138 \cdot 10^{-47}\right):\\
\;\;\;\;\frac{x}{\frac{a}{y}} - \frac{t}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{z}{\sqrt[3]{a}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{a} \cdot \left(x \cdot y - t \cdot z\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r760067 = x;
double r760068 = y;
double r760069 = r760067 * r760068;
double r760070 = z;
double r760071 = t;
double r760072 = r760070 * r760071;
double r760073 = r760069 - r760072;
double r760074 = a;
double r760075 = r760073 / r760074;
return r760075;
}
double f(double x, double y, double z, double t, double a) {
double r760076 = a;
double r760077 = -3.153710049135351e+201;
bool r760078 = r760076 <= r760077;
double r760079 = 2.0400753527695084e-47;
bool r760080 = r760076 <= r760079;
double r760081 = !r760080;
bool r760082 = r760078 || r760081;
double r760083 = x;
double r760084 = y;
double r760085 = r760076 / r760084;
double r760086 = r760083 / r760085;
double r760087 = t;
double r760088 = cbrt(r760076);
double r760089 = r760088 * r760088;
double r760090 = r760087 / r760089;
double r760091 = z;
double r760092 = r760091 / r760088;
double r760093 = r760090 * r760092;
double r760094 = r760086 - r760093;
double r760095 = 1.0;
double r760096 = r760095 / r760076;
double r760097 = r760083 * r760084;
double r760098 = r760087 * r760091;
double r760099 = r760097 - r760098;
double r760100 = r760096 * r760099;
double r760101 = r760082 ? r760094 : r760100;
return r760101;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.6 |
|---|---|
| Target | 6.0 |
| Herbie | 4.8 |
if a < -3.153710049135351e+201 or 2.0400753527695084e-47 < a Initial program 11.3
rmApplied div-sub11.3
Simplified11.3
rmApplied associate-/l*8.9
rmApplied add-cube-cbrt9.3
Applied times-frac5.4
if -3.153710049135351e+201 < a < 2.0400753527695084e-47Initial program 4.1
rmApplied div-sub4.1
Simplified4.1
rmApplied div-inv4.2
Applied div-inv4.2
Applied distribute-rgt-out--4.2
Final simplification4.8
herbie shell --seed 2019322
(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))