\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.999999999999942379:\\
\;\;\;\;\left(\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)\right) + \left(2 \cdot \sqrt{x}\right) \cdot \left(\sin y \cdot \left(\left(\sqrt[3]{\sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)} \cdot \sqrt[3]{\sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)}\right) \cdot \sqrt[3]{\sin \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)}\right)\right)\right) - \frac{a}{b \cdot 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 r746189 = 2.0;
double r746190 = x;
double r746191 = sqrt(r746190);
double r746192 = r746189 * r746191;
double r746193 = y;
double r746194 = z;
double r746195 = t;
double r746196 = r746194 * r746195;
double r746197 = 3.0;
double r746198 = r746196 / r746197;
double r746199 = r746193 - r746198;
double r746200 = cos(r746199);
double r746201 = r746192 * r746200;
double r746202 = a;
double r746203 = b;
double r746204 = r746203 * r746197;
double r746205 = r746202 / r746204;
double r746206 = r746201 - r746205;
return r746206;
}
double f(double x, double y, double z, double t, double a, double b) {
double r746207 = y;
double r746208 = z;
double r746209 = t;
double r746210 = r746208 * r746209;
double r746211 = 3.0;
double r746212 = r746210 / r746211;
double r746213 = r746207 - r746212;
double r746214 = cos(r746213);
double r746215 = 0.9999999999999424;
bool r746216 = r746214 <= r746215;
double r746217 = 2.0;
double r746218 = x;
double r746219 = sqrt(r746218);
double r746220 = r746217 * r746219;
double r746221 = cos(r746207);
double r746222 = 0.3333333333333333;
double r746223 = r746209 * r746208;
double r746224 = r746222 * r746223;
double r746225 = cos(r746224);
double r746226 = r746221 * r746225;
double r746227 = r746220 * r746226;
double r746228 = sin(r746207);
double r746229 = sin(r746224);
double r746230 = cbrt(r746229);
double r746231 = r746230 * r746230;
double r746232 = r746231 * r746230;
double r746233 = r746228 * r746232;
double r746234 = r746220 * r746233;
double r746235 = r746227 + r746234;
double r746236 = a;
double r746237 = b;
double r746238 = r746237 * r746211;
double r746239 = r746236 / r746238;
double r746240 = r746235 - r746239;
double r746241 = 1.0;
double r746242 = 0.5;
double r746243 = 2.0;
double r746244 = pow(r746207, r746243);
double r746245 = r746242 * r746244;
double r746246 = r746241 - r746245;
double r746247 = r746220 * r746246;
double r746248 = r746247 - r746239;
double r746249 = r746216 ? r746240 : r746248;
return r746249;
}




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.8 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999999999424Initial program 19.6
rmApplied cos-diff18.8
Applied distribute-lft-in18.8
Taylor expanded around inf 18.8
Taylor expanded around inf 18.8
rmApplied add-cube-cbrt18.8
if 0.9999999999999424 < (cos (- y (/ (* z t) 3.0))) Initial program 22.8
Taylor expanded around 0 16.0
Final simplification17.8
herbie shell --seed 2020064
(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))))