\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.999991553212150719:\\
\;\;\;\;\left(\left(2 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(0.333333333333333315 \cdot \left(t \cdot z\right)\right)\right) + 0\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 r726093 = 2.0;
double r726094 = x;
double r726095 = sqrt(r726094);
double r726096 = r726093 * r726095;
double r726097 = y;
double r726098 = z;
double r726099 = t;
double r726100 = r726098 * r726099;
double r726101 = 3.0;
double r726102 = r726100 / r726101;
double r726103 = r726097 - r726102;
double r726104 = cos(r726103);
double r726105 = r726096 * r726104;
double r726106 = a;
double r726107 = b;
double r726108 = r726107 * r726101;
double r726109 = r726106 / r726108;
double r726110 = r726105 - r726109;
return r726110;
}
double f(double x, double y, double z, double t, double a, double b) {
double r726111 = y;
double r726112 = z;
double r726113 = t;
double r726114 = r726112 * r726113;
double r726115 = 3.0;
double r726116 = r726114 / r726115;
double r726117 = r726111 - r726116;
double r726118 = cos(r726117);
double r726119 = 0.9999915532121507;
bool r726120 = r726118 <= r726119;
double r726121 = 2.0;
double r726122 = x;
double r726123 = sqrt(r726122);
double r726124 = r726121 * r726123;
double r726125 = cos(r726111);
double r726126 = 0.3333333333333333;
double r726127 = r726113 * r726112;
double r726128 = r726126 * r726127;
double r726129 = cos(r726128);
double r726130 = r726125 * r726129;
double r726131 = r726124 * r726130;
double r726132 = 0.0;
double r726133 = r726131 + r726132;
double r726134 = a;
double r726135 = b;
double r726136 = r726135 * r726115;
double r726137 = r726134 / r726136;
double r726138 = r726133 - r726137;
double r726139 = 1.0;
double r726140 = 0.5;
double r726141 = 2.0;
double r726142 = pow(r726111, r726141);
double r726143 = r726140 * r726142;
double r726144 = r726139 - r726143;
double r726145 = r726124 * r726144;
double r726146 = r726145 - r726137;
double r726147 = r726120 ? r726138 : r726146;
return r726147;
}




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.8 |
| Herbie | 18.4 |
if (cos (- y (/ (* z t) 3.0))) < 0.9999915532121507Initial program 20.5
rmApplied cos-diff19.9
Applied distribute-lft-in19.9
Taylor expanded around inf 19.9
Taylor expanded around inf 19.9
Taylor expanded around 0 20.6
if 0.9999915532121507 < (cos (- y (/ (* z t) 3.0))) Initial program 21.2
Taylor expanded around 0 14.8
Final simplification18.4
herbie shell --seed 2020089 +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))))