\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}\;y \le -519168038.226261794567108154296875:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\sin y \cdot \sin \left(\frac{t}{\sqrt{3}} \cdot \frac{z}{\sqrt{3}}\right) + \cos y \cdot \cos \left(\frac{t \cdot z}{3}\right)\right) - \frac{\frac{a}{b}}{3}\\
\mathbf{elif}\;y \le 1.150533933743229244197856592153169093091 \cdot 10^{-20}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos \left(\mathsf{fma}\left(-\frac{t}{3}, z, \frac{t}{3} \cdot z\right)\right) \cdot \cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \left(-z\right) \cdot \frac{t}{3}\right)\right) - \sin \left(\mathsf{fma}\left(-\frac{t}{3}, z, \frac{t}{3} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \left(-z\right) \cdot \frac{t}{3}\right)\right)\right) - \frac{a}{3 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(\cos y \cdot \cos \left(\frac{t \cdot z}{3}\right)\right) \cdot \left(\cos y \cdot \cos \left(\frac{t \cdot z}{3}\right)\right) - \left(\sin \left(\frac{t \cdot z}{3}\right) \cdot \sin y\right) \cdot \left(\sin \left(\frac{t \cdot z}{3}\right) \cdot \sin y\right)\right) \cdot \left(2 \cdot \sqrt{x}\right)}{\cos y \cdot \cos \left(\frac{t \cdot z}{3}\right) - \sin \left(\frac{t \cdot z}{3}\right) \cdot \sin y} - \frac{\frac{a}{b}}{3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r26811257 = 2.0;
double r26811258 = x;
double r26811259 = sqrt(r26811258);
double r26811260 = r26811257 * r26811259;
double r26811261 = y;
double r26811262 = z;
double r26811263 = t;
double r26811264 = r26811262 * r26811263;
double r26811265 = 3.0;
double r26811266 = r26811264 / r26811265;
double r26811267 = r26811261 - r26811266;
double r26811268 = cos(r26811267);
double r26811269 = r26811260 * r26811268;
double r26811270 = a;
double r26811271 = b;
double r26811272 = r26811271 * r26811265;
double r26811273 = r26811270 / r26811272;
double r26811274 = r26811269 - r26811273;
return r26811274;
}
double f(double x, double y, double z, double t, double a, double b) {
double r26811275 = y;
double r26811276 = -519168038.2262618;
bool r26811277 = r26811275 <= r26811276;
double r26811278 = 2.0;
double r26811279 = x;
double r26811280 = sqrt(r26811279);
double r26811281 = r26811278 * r26811280;
double r26811282 = sin(r26811275);
double r26811283 = t;
double r26811284 = 3.0;
double r26811285 = sqrt(r26811284);
double r26811286 = r26811283 / r26811285;
double r26811287 = z;
double r26811288 = r26811287 / r26811285;
double r26811289 = r26811286 * r26811288;
double r26811290 = sin(r26811289);
double r26811291 = r26811282 * r26811290;
double r26811292 = cos(r26811275);
double r26811293 = r26811283 * r26811287;
double r26811294 = r26811293 / r26811284;
double r26811295 = cos(r26811294);
double r26811296 = r26811292 * r26811295;
double r26811297 = r26811291 + r26811296;
double r26811298 = r26811281 * r26811297;
double r26811299 = a;
double r26811300 = b;
double r26811301 = r26811299 / r26811300;
double r26811302 = r26811301 / r26811284;
double r26811303 = r26811298 - r26811302;
double r26811304 = 1.1505339337432292e-20;
bool r26811305 = r26811275 <= r26811304;
double r26811306 = r26811283 / r26811284;
double r26811307 = -r26811306;
double r26811308 = r26811306 * r26811287;
double r26811309 = fma(r26811307, r26811287, r26811308);
double r26811310 = cos(r26811309);
double r26811311 = cbrt(r26811275);
double r26811312 = r26811311 * r26811311;
double r26811313 = -r26811287;
double r26811314 = r26811313 * r26811306;
double r26811315 = fma(r26811312, r26811311, r26811314);
double r26811316 = cos(r26811315);
double r26811317 = r26811310 * r26811316;
double r26811318 = sin(r26811309);
double r26811319 = sin(r26811315);
double r26811320 = r26811318 * r26811319;
double r26811321 = r26811317 - r26811320;
double r26811322 = r26811281 * r26811321;
double r26811323 = r26811284 * r26811300;
double r26811324 = r26811299 / r26811323;
double r26811325 = r26811322 - r26811324;
double r26811326 = r26811296 * r26811296;
double r26811327 = sin(r26811294);
double r26811328 = r26811327 * r26811282;
double r26811329 = r26811328 * r26811328;
double r26811330 = r26811326 - r26811329;
double r26811331 = r26811330 * r26811281;
double r26811332 = r26811296 - r26811328;
double r26811333 = r26811331 / r26811332;
double r26811334 = r26811333 - r26811302;
double r26811335 = r26811305 ? r26811325 : r26811334;
double r26811336 = r26811277 ? r26811303 : r26811335;
return r26811336;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 20.6 |
|---|---|
| Target | 18.3 |
| Herbie | 18.4 |
if y < -519168038.2262618Initial program 21.8
rmApplied cos-diff20.8
rmApplied associate-/r*20.8
rmApplied add-sqr-sqrt20.8
Applied times-frac20.8
if -519168038.2262618 < y < 1.1505339337432292e-20Initial program 19.7
rmApplied *-un-lft-identity19.7
Applied times-frac19.7
Applied add-cube-cbrt19.8
Applied prod-diff19.8
Applied cos-sum16.2
if 1.1505339337432292e-20 < y Initial program 20.9
rmApplied cos-diff20.2
rmApplied associate-/r*20.3
rmApplied flip-+20.3
Applied associate-*r/20.3
Final simplification18.4
herbie shell --seed 2019172 +o rules:numerics
(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))))