\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{t \cdot z}{3}\right) \le 0.9997361592973614818902206025086343288422:\\
\;\;\;\;\left(\left(\sqrt{x} \cdot 2\right) \cdot \left(\left(\sqrt[3]{\cos \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right)} \cdot \left(\sqrt[3]{\cos \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right)} \cdot \sqrt[3]{\cos \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right)}\right)\right) \cdot \cos y\right) + \left(\sqrt{x} \cdot 2\right) \cdot \left(\sin \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right) \cdot \sin y\right)\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \frac{1}{2} \cdot \left(y \cdot y\right)\right) \cdot \left(\sqrt{x} \cdot 2\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r37072189 = 2.0;
double r37072190 = x;
double r37072191 = sqrt(r37072190);
double r37072192 = r37072189 * r37072191;
double r37072193 = y;
double r37072194 = z;
double r37072195 = t;
double r37072196 = r37072194 * r37072195;
double r37072197 = 3.0;
double r37072198 = r37072196 / r37072197;
double r37072199 = r37072193 - r37072198;
double r37072200 = cos(r37072199);
double r37072201 = r37072192 * r37072200;
double r37072202 = a;
double r37072203 = b;
double r37072204 = r37072203 * r37072197;
double r37072205 = r37072202 / r37072204;
double r37072206 = r37072201 - r37072205;
return r37072206;
}
double f(double x, double y, double z, double t, double a, double b) {
double r37072207 = y;
double r37072208 = t;
double r37072209 = z;
double r37072210 = r37072208 * r37072209;
double r37072211 = 3.0;
double r37072212 = r37072210 / r37072211;
double r37072213 = r37072207 - r37072212;
double r37072214 = cos(r37072213);
double r37072215 = 0.9997361592973615;
bool r37072216 = r37072214 <= r37072215;
double r37072217 = x;
double r37072218 = sqrt(r37072217);
double r37072219 = 2.0;
double r37072220 = r37072218 * r37072219;
double r37072221 = 0.3333333333333333;
double r37072222 = r37072221 * r37072210;
double r37072223 = cos(r37072222);
double r37072224 = cbrt(r37072223);
double r37072225 = r37072224 * r37072224;
double r37072226 = r37072224 * r37072225;
double r37072227 = cos(r37072207);
double r37072228 = r37072226 * r37072227;
double r37072229 = r37072220 * r37072228;
double r37072230 = sin(r37072222);
double r37072231 = sin(r37072207);
double r37072232 = r37072230 * r37072231;
double r37072233 = r37072220 * r37072232;
double r37072234 = r37072229 + r37072233;
double r37072235 = a;
double r37072236 = b;
double r37072237 = r37072236 * r37072211;
double r37072238 = r37072235 / r37072237;
double r37072239 = r37072234 - r37072238;
double r37072240 = 1.0;
double r37072241 = 0.5;
double r37072242 = r37072207 * r37072207;
double r37072243 = r37072241 * r37072242;
double r37072244 = r37072240 - r37072243;
double r37072245 = r37072244 * r37072220;
double r37072246 = r37072245 - r37072238;
double r37072247 = r37072216 ? r37072239 : r37072246;
return r37072247;
}




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 | 21.0 |
|---|---|
| Target | 18.9 |
| Herbie | 18.5 |
if (cos (- y (/ (* z t) 3.0))) < 0.9997361592973615Initial program 20.6
rmApplied cos-diff20.0
Applied distribute-lft-in20.0
Taylor expanded around inf 20.0
Simplified20.0
rmApplied add-cube-cbrt20.0
Taylor expanded around inf 20.0
Simplified20.0
if 0.9997361592973615 < (cos (- y (/ (* z t) 3.0))) Initial program 21.8
Taylor expanded around 0 16.1
Simplified16.1
Final simplification18.5
herbie shell --seed 2019179
(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))))