2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)
\begin{array}{l}
\mathbf{if}\;\left(a + b \cdot c\right) \cdot c \le -3.366177053613654395798675960966992222011 \cdot 10^{198} \lor \neg \left(\left(a + b \cdot c\right) \cdot c \le 4.788215598584803852236065219824838534122 \cdot 10^{299}\right):\\
\;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot i\right) \cdot c\right)\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r404615 = 2.0;
double r404616 = x;
double r404617 = y;
double r404618 = r404616 * r404617;
double r404619 = z;
double r404620 = t;
double r404621 = r404619 * r404620;
double r404622 = r404618 + r404621;
double r404623 = a;
double r404624 = b;
double r404625 = c;
double r404626 = r404624 * r404625;
double r404627 = r404623 + r404626;
double r404628 = r404627 * r404625;
double r404629 = i;
double r404630 = r404628 * r404629;
double r404631 = r404622 - r404630;
double r404632 = r404615 * r404631;
return r404632;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r404633 = a;
double r404634 = b;
double r404635 = c;
double r404636 = r404634 * r404635;
double r404637 = r404633 + r404636;
double r404638 = r404637 * r404635;
double r404639 = -3.3661770536136544e+198;
bool r404640 = r404638 <= r404639;
double r404641 = 4.788215598584804e+299;
bool r404642 = r404638 <= r404641;
double r404643 = !r404642;
bool r404644 = r404640 || r404643;
double r404645 = 2.0;
double r404646 = x;
double r404647 = y;
double r404648 = r404646 * r404647;
double r404649 = z;
double r404650 = t;
double r404651 = r404649 * r404650;
double r404652 = r404648 + r404651;
double r404653 = i;
double r404654 = r404637 * r404653;
double r404655 = r404654 * r404635;
double r404656 = r404652 - r404655;
double r404657 = r404645 * r404656;
double r404658 = r404638 * r404653;
double r404659 = r404652 - r404658;
double r404660 = r404645 * r404659;
double r404661 = r404644 ? r404657 : r404660;
return r404661;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i
Results
| Original | 6.3 |
|---|---|
| Target | 1.7 |
| Herbie | 1.2 |
if (* (+ a (* b c)) c) < -3.3661770536136544e+198 or 4.788215598584804e+299 < (* (+ a (* b c)) c) Initial program 41.2
rmApplied associate-*l*6.2
Simplified6.2
rmApplied associate-*r*6.3
if -3.3661770536136544e+198 < (* (+ a (* b c)) c) < 4.788215598584804e+299Initial program 0.3
Final simplification1.2
herbie shell --seed 2019326
(FPCore (x y z t a b c i)
:name "Diagrams.ThreeD.Shapes:frustum from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(* 2 (- (+ (* x y) (* z t)) (* (+ a (* b c)) (* c i))))
(* 2 (- (+ (* x y) (* z t)) (* (* (+ a (* b c)) c) i))))