\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.999999999603707223627679923083633184433:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{t}{\sqrt[3]{3}}\right) - \frac{a}{b} \cdot \frac{1}{3}\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \mathsf{fma}\left(\frac{-1}{2}, {y}^{2}, 1\right) - a \cdot \frac{\frac{1}{b}}{3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r507214 = 2.0;
double r507215 = x;
double r507216 = sqrt(r507215);
double r507217 = r507214 * r507216;
double r507218 = y;
double r507219 = z;
double r507220 = t;
double r507221 = r507219 * r507220;
double r507222 = 3.0;
double r507223 = r507221 / r507222;
double r507224 = r507218 - r507223;
double r507225 = cos(r507224);
double r507226 = r507217 * r507225;
double r507227 = a;
double r507228 = b;
double r507229 = r507228 * r507222;
double r507230 = r507227 / r507229;
double r507231 = r507226 - r507230;
return r507231;
}
double f(double x, double y, double z, double t, double a, double b) {
double r507232 = y;
double r507233 = z;
double r507234 = t;
double r507235 = r507233 * r507234;
double r507236 = 3.0;
double r507237 = r507235 / r507236;
double r507238 = r507232 - r507237;
double r507239 = cos(r507238);
double r507240 = 0.9999999996037072;
bool r507241 = r507239 <= r507240;
double r507242 = 2.0;
double r507243 = x;
double r507244 = sqrt(r507243);
double r507245 = r507242 * r507244;
double r507246 = cbrt(r507236);
double r507247 = r507246 * r507246;
double r507248 = r507233 / r507247;
double r507249 = r507234 / r507246;
double r507250 = r507248 * r507249;
double r507251 = r507232 - r507250;
double r507252 = cos(r507251);
double r507253 = r507245 * r507252;
double r507254 = a;
double r507255 = b;
double r507256 = r507254 / r507255;
double r507257 = 1.0;
double r507258 = r507257 / r507236;
double r507259 = r507256 * r507258;
double r507260 = r507253 - r507259;
double r507261 = -0.5;
double r507262 = 2.0;
double r507263 = pow(r507232, r507262);
double r507264 = fma(r507261, r507263, r507257);
double r507265 = r507245 * r507264;
double r507266 = r507257 / r507255;
double r507267 = r507266 / r507236;
double r507268 = r507254 * r507267;
double r507269 = r507265 - r507268;
double r507270 = r507241 ? r507260 : r507269;
return r507270;
}




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.7 |
|---|---|
| Target | 18.6 |
| Herbie | 18.3 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999999996037072Initial program 19.9
rmApplied add-cube-cbrt19.9
Applied times-frac19.8
rmApplied associate-/r*19.9
rmApplied div-inv19.9
if 0.9999999996037072 < (cos (- y (/ (* z t) 3.0))) Initial program 22.1
rmApplied add-cube-cbrt22.1
Applied times-frac22.1
rmApplied associate-/r*22.1
rmApplied *-un-lft-identity22.1
Applied div-inv22.1
Applied times-frac22.1
Simplified22.1
Taylor expanded around 0 15.6
Simplified15.6
Final simplification18.3
herbie shell --seed 2019322 +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))))