\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.9999999429473585:\\
\;\;\;\;\left(\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \log \left(e^{\cos \left(\frac{z \cdot t}{3}\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 r800341 = 2.0;
double r800342 = x;
double r800343 = sqrt(r800342);
double r800344 = r800341 * r800343;
double r800345 = y;
double r800346 = z;
double r800347 = t;
double r800348 = r800346 * r800347;
double r800349 = 3.0;
double r800350 = r800348 / r800349;
double r800351 = r800345 - r800350;
double r800352 = cos(r800351);
double r800353 = r800344 * r800352;
double r800354 = a;
double r800355 = b;
double r800356 = r800355 * r800349;
double r800357 = r800354 / r800356;
double r800358 = r800353 - r800357;
return r800358;
}
double f(double x, double y, double z, double t, double a, double b) {
double r800359 = y;
double r800360 = z;
double r800361 = t;
double r800362 = r800360 * r800361;
double r800363 = 3.0;
double r800364 = r800362 / r800363;
double r800365 = r800359 - r800364;
double r800366 = cos(r800365);
double r800367 = 0.9999999429473585;
bool r800368 = r800366 <= r800367;
double r800369 = 2.0;
double r800370 = x;
double r800371 = sqrt(r800370);
double r800372 = r800369 * r800371;
double r800373 = cos(r800359);
double r800374 = cos(r800364);
double r800375 = exp(r800374);
double r800376 = log(r800375);
double r800377 = r800373 * r800376;
double r800378 = r800372 * r800377;
double r800379 = sin(r800359);
double r800380 = 0.3333333333333333;
double r800381 = r800361 * r800360;
double r800382 = r800380 * r800381;
double r800383 = sin(r800382);
double r800384 = cbrt(r800383);
double r800385 = r800384 * r800384;
double r800386 = r800385 * r800384;
double r800387 = r800379 * r800386;
double r800388 = r800372 * r800387;
double r800389 = r800378 + r800388;
double r800390 = a;
double r800391 = b;
double r800392 = r800391 * r800363;
double r800393 = r800390 / r800392;
double r800394 = r800389 - r800393;
double r800395 = 1.0;
double r800396 = 0.5;
double r800397 = 2.0;
double r800398 = pow(r800359, r800397);
double r800399 = r800396 * r800398;
double r800400 = r800395 - r800399;
double r800401 = r800372 * r800400;
double r800402 = r800401 - r800393;
double r800403 = r800368 ? r800394 : r800402;
return r800403;
}




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.6 |
|---|---|
| Target | 18.7 |
| Herbie | 17.8 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999429473585Initial program 19.9
rmApplied cos-diff19.2
Applied distribute-lft-in19.2
Taylor expanded around inf 19.2
rmApplied add-cube-cbrt19.2
rmApplied add-log-exp19.2
if 0.9999999429473585 < (cos (- y (/ (* z t) 3.0))) Initial program 21.8
Taylor expanded around 0 15.5
Final simplification17.8
herbie shell --seed 2020060 +o rules:numerics
(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))))