\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\begin{array}{l}
\mathbf{if}\;\cos \left(y - \frac{z \cdot t}{3}\right) \le 0.9999929107336669:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{\frac{z \cdot t}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right) + \sin y \cdot \sin \left(\frac{z}{\frac{3}{t}}\right)\right) - \frac{\frac{a}{b}}{3}\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(1 - \frac{1}{2} \cdot {y}^{2}\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r880080 = 2.0;
double r880081 = x;
double r880082 = sqrt(r880081);
double r880083 = r880080 * r880082;
double r880084 = y;
double r880085 = z;
double r880086 = t;
double r880087 = r880085 * r880086;
double r880088 = 3.0;
double r880089 = r880087 / r880088;
double r880090 = r880084 - r880089;
double r880091 = cos(r880090);
double r880092 = r880083 * r880091;
double r880093 = a;
double r880094 = b;
double r880095 = r880094 * r880088;
double r880096 = r880093 / r880095;
double r880097 = r880092 - r880096;
return r880097;
}
double f(double x, double y, double z, double t, double a, double b) {
double r880098 = y;
double r880099 = z;
double r880100 = t;
double r880101 = r880099 * r880100;
double r880102 = 3.0;
double r880103 = r880101 / r880102;
double r880104 = r880098 - r880103;
double r880105 = cos(r880104);
double r880106 = 0.9999929107336669;
bool r880107 = r880105 <= r880106;
double r880108 = 2.0;
double r880109 = x;
double r880110 = sqrt(r880109);
double r880111 = r880108 * r880110;
double r880112 = cos(r880098);
double r880113 = cbrt(r880102);
double r880114 = r880113 * r880113;
double r880115 = r880101 / r880114;
double r880116 = r880115 / r880113;
double r880117 = cos(r880116);
double r880118 = r880112 * r880117;
double r880119 = sin(r880098);
double r880120 = r880102 / r880100;
double r880121 = r880099 / r880120;
double r880122 = sin(r880121);
double r880123 = r880119 * r880122;
double r880124 = r880118 + r880123;
double r880125 = r880111 * r880124;
double r880126 = a;
double r880127 = b;
double r880128 = r880126 / r880127;
double r880129 = r880128 / r880102;
double r880130 = r880125 - r880129;
double r880131 = 1.0;
double r880132 = 0.5;
double r880133 = 2.0;
double r880134 = pow(r880098, r880133);
double r880135 = r880132 * r880134;
double r880136 = r880131 - r880135;
double r880137 = r880111 * r880136;
double r880138 = r880127 * r880102;
double r880139 = r880126 / r880138;
double r880140 = r880137 - r880139;
double r880141 = r880107 ? r880130 : r880140;
return r880141;
}




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.9 |
|---|---|
| Target | 19.1 |
| Herbie | 18.4 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999929107336669Initial program 20.3
rmApplied cos-diff19.7
rmApplied associate-/l*19.7
rmApplied add-cube-cbrt19.7
Applied associate-/r*19.7
rmApplied associate-/r*19.7
if 0.9999929107336669 < (cos (- y (/ (* z t) 3.0))) Initial program 21.9
Taylor expanded around 0 16.2
Final simplification18.4
herbie shell --seed 2020036
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, K"
:precision binary64
:herbie-target
(if (< z -1.379333748723514e+129) (- (* (* 2 (sqrt x)) (cos (- (/ 1 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2) (cos (- y (* (/ t 3) z)))) (/ (/ a 3) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2 (sqrt x))) (/ (/ a b) 3))))
(- (* (* 2 (sqrt x)) (cos (- y (/ (* z t) 3)))) (/ a (* b 3))))