\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\left(\sin y \cdot \sqrt[3]{{\left(\sin \left(\left(t \cdot 0.3333333333333333148296162562473909929395\right) \cdot z\right)\right)}^{3}} + \cos y \cdot \cos \left(\left(t \cdot 0.3333333333333333148296162562473909929395\right) \cdot z\right)\right) \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 r477960 = 2.0;
double r477961 = x;
double r477962 = sqrt(r477961);
double r477963 = r477960 * r477962;
double r477964 = y;
double r477965 = z;
double r477966 = t;
double r477967 = r477965 * r477966;
double r477968 = 3.0;
double r477969 = r477967 / r477968;
double r477970 = r477964 - r477969;
double r477971 = cos(r477970);
double r477972 = r477963 * r477971;
double r477973 = a;
double r477974 = b;
double r477975 = r477974 * r477968;
double r477976 = r477973 / r477975;
double r477977 = r477972 - r477976;
return r477977;
}
double f(double x, double y, double z, double t, double a, double b) {
double r477978 = y;
double r477979 = sin(r477978);
double r477980 = t;
double r477981 = 0.3333333333333333;
double r477982 = r477980 * r477981;
double r477983 = z;
double r477984 = r477982 * r477983;
double r477985 = sin(r477984);
double r477986 = 3.0;
double r477987 = pow(r477985, r477986);
double r477988 = cbrt(r477987);
double r477989 = r477979 * r477988;
double r477990 = cos(r477978);
double r477991 = cos(r477984);
double r477992 = r477990 * r477991;
double r477993 = r477989 + r477992;
double r477994 = 2.0;
double r477995 = x;
double r477996 = sqrt(r477995);
double r477997 = r477994 * r477996;
double r477998 = r477993 * r477997;
double r477999 = a;
double r478000 = b;
double r478001 = r477999 / r478000;
double r478002 = 3.0;
double r478003 = r478001 / r478002;
double r478004 = r477998 - r478003;
return r478004;
}




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.4 |
|---|---|
| Target | 18.4 |
| Herbie | 20.0 |
Initial program 20.4
Simplified20.4
rmApplied cos-diff20.0
Simplified20.0
Taylor expanded around inf 20.0
Simplified20.0
Taylor expanded around inf 20.0
Simplified20.0
rmApplied add-cbrt-cube20.0
Simplified20.0
Final simplification20.0
herbie shell --seed 2019196
(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))))