2 \cdot \left(\left(x \cdot y + z \cdot t\right) - \left(\left(a + b \cdot c\right) \cdot c\right) \cdot i\right)
\mathsf{fma}\left(2, \mathsf{fma}\left(t, z, x \cdot y\right), \sqrt{2} \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\sqrt[3]{\sqrt{2}} \cdot \left(\left(-\mathsf{fma}\left(c, b, a\right)\right) \cdot \left(c \cdot i\right)\right)\right)\right)\right)double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r651610 = 2.0;
double r651611 = x;
double r651612 = y;
double r651613 = r651611 * r651612;
double r651614 = z;
double r651615 = t;
double r651616 = r651614 * r651615;
double r651617 = r651613 + r651616;
double r651618 = a;
double r651619 = b;
double r651620 = c;
double r651621 = r651619 * r651620;
double r651622 = r651618 + r651621;
double r651623 = r651622 * r651620;
double r651624 = i;
double r651625 = r651623 * r651624;
double r651626 = r651617 - r651625;
double r651627 = r651610 * r651626;
return r651627;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
double r651628 = 2.0;
double r651629 = t;
double r651630 = z;
double r651631 = x;
double r651632 = y;
double r651633 = r651631 * r651632;
double r651634 = fma(r651629, r651630, r651633);
double r651635 = sqrt(r651628);
double r651636 = cbrt(r651635);
double r651637 = r651636 * r651636;
double r651638 = c;
double r651639 = b;
double r651640 = a;
double r651641 = fma(r651638, r651639, r651640);
double r651642 = -r651641;
double r651643 = i;
double r651644 = r651638 * r651643;
double r651645 = r651642 * r651644;
double r651646 = r651636 * r651645;
double r651647 = r651637 * r651646;
double r651648 = r651635 * r651647;
double r651649 = fma(r651628, r651634, r651648);
return r651649;
}




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
| Original | 6.2 |
|---|---|
| Target | 1.9 |
| Herbie | 2.1 |
Initial program 6.2
Simplified1.9
Taylor expanded around inf 1.9
Simplified1.9
rmApplied add-sqr-sqrt2.2
Applied associate-*l*2.1
rmApplied add-cube-cbrt2.1
Applied associate-*l*2.1
Final simplification2.1
herbie shell --seed 2020033 +o rules:numerics
(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))))