\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\cos y \cdot \left(2 \cdot \sqrt{x}\right) - \frac{\frac{a}{b}}{3}double f(double x, double y, double z, double t, double a, double b) {
double r45767678 = 2.0;
double r45767679 = x;
double r45767680 = sqrt(r45767679);
double r45767681 = r45767678 * r45767680;
double r45767682 = y;
double r45767683 = z;
double r45767684 = t;
double r45767685 = r45767683 * r45767684;
double r45767686 = 3.0;
double r45767687 = r45767685 / r45767686;
double r45767688 = r45767682 - r45767687;
double r45767689 = cos(r45767688);
double r45767690 = r45767681 * r45767689;
double r45767691 = a;
double r45767692 = b;
double r45767693 = r45767692 * r45767686;
double r45767694 = r45767691 / r45767693;
double r45767695 = r45767690 - r45767694;
return r45767695;
}
double f(double x, double y, double __attribute__((unused)) z, double __attribute__((unused)) t, double a, double b) {
double r45767696 = y;
double r45767697 = cos(r45767696);
double r45767698 = 2.0;
double r45767699 = x;
double r45767700 = sqrt(r45767699);
double r45767701 = r45767698 * r45767700;
double r45767702 = r45767697 * r45767701;
double r45767703 = a;
double r45767704 = b;
double r45767705 = r45767703 / r45767704;
double r45767706 = 3.0;
double r45767707 = r45767705 / r45767706;
double r45767708 = r45767702 - r45767707;
return r45767708;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 20.8 |
|---|---|
| Target | 18.7 |
| Herbie | 17.2 |
Initial program 20.8
rmApplied associate-/r*20.8
rmApplied cos-diff20.5
Applied distribute-rgt-in20.5
Taylor expanded around 0 21.0
Taylor expanded around 0 17.2
Final simplification17.2
herbie shell --seed 2019174
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, K"
:herbie-target
(if (< z -1.3793337487235141e+129) (- (* (* 2.0 (sqrt x)) (cos (- (/ 1.0 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3.0) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2.0) (cos (- y (* (/ t 3.0) z)))) (/ (/ a 3.0) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2.0 (sqrt x))) (/ (/ a b) 3.0))))
(- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* b 3.0))))