\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}\;z \cdot t \le -1.428478097956767831303888965158296736042 \cdot 10^{226} \lor \neg \left(z \cdot t \le 7.274902941706250528826933509874936047753 \cdot 10^{294}\right):\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \mathsf{fma}\left({y}^{2}, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\cos y \cdot \mathsf{log1p}\left(\sqrt[3]{{\left(\mathsf{expm1}\left(\cos \left(0.3333333333333333148296162562473909929395 \cdot \left(t \cdot z\right)\right)\right)\right)}^{3}}\right)\right) \cdot \left(2 \cdot \sqrt{x}\right) + \left(2 \cdot \sqrt{x}\right) \cdot \left(\sin y \cdot \sin \left(\frac{z \cdot t}{3}\right)\right)\right) - \frac{a}{b \cdot 3}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r524114 = 2.0;
double r524115 = x;
double r524116 = sqrt(r524115);
double r524117 = r524114 * r524116;
double r524118 = y;
double r524119 = z;
double r524120 = t;
double r524121 = r524119 * r524120;
double r524122 = 3.0;
double r524123 = r524121 / r524122;
double r524124 = r524118 - r524123;
double r524125 = cos(r524124);
double r524126 = r524117 * r524125;
double r524127 = a;
double r524128 = b;
double r524129 = r524128 * r524122;
double r524130 = r524127 / r524129;
double r524131 = r524126 - r524130;
return r524131;
}
double f(double x, double y, double z, double t, double a, double b) {
double r524132 = z;
double r524133 = t;
double r524134 = r524132 * r524133;
double r524135 = -1.4284780979567678e+226;
bool r524136 = r524134 <= r524135;
double r524137 = 7.27490294170625e+294;
bool r524138 = r524134 <= r524137;
double r524139 = !r524138;
bool r524140 = r524136 || r524139;
double r524141 = 2.0;
double r524142 = x;
double r524143 = sqrt(r524142);
double r524144 = r524141 * r524143;
double r524145 = y;
double r524146 = 2.0;
double r524147 = pow(r524145, r524146);
double r524148 = -0.5;
double r524149 = 1.0;
double r524150 = fma(r524147, r524148, r524149);
double r524151 = r524144 * r524150;
double r524152 = a;
double r524153 = b;
double r524154 = 3.0;
double r524155 = r524153 * r524154;
double r524156 = r524152 / r524155;
double r524157 = r524151 - r524156;
double r524158 = cos(r524145);
double r524159 = 0.3333333333333333;
double r524160 = r524133 * r524132;
double r524161 = r524159 * r524160;
double r524162 = cos(r524161);
double r524163 = expm1(r524162);
double r524164 = 3.0;
double r524165 = pow(r524163, r524164);
double r524166 = cbrt(r524165);
double r524167 = log1p(r524166);
double r524168 = r524158 * r524167;
double r524169 = r524168 * r524144;
double r524170 = sin(r524145);
double r524171 = r524134 / r524154;
double r524172 = sin(r524171);
double r524173 = r524170 * r524172;
double r524174 = r524144 * r524173;
double r524175 = r524169 + r524174;
double r524176 = r524175 - r524156;
double r524177 = r524140 ? r524157 : r524176;
return r524177;
}




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 | 21.1 |
|---|---|
| Target | 19.0 |
| Herbie | 18.7 |
if (* z t) < -1.4284780979567678e+226 or 7.27490294170625e+294 < (* z t) Initial program 57.2
Taylor expanded around 0 45.8
Simplified45.8
if -1.4284780979567678e+226 < (* z t) < 7.27490294170625e+294Initial program 13.8
rmApplied cos-diff13.2
Applied distribute-lft-in13.2
Simplified13.2
Taylor expanded around inf 13.2
rmApplied log1p-expm1-u13.2
rmApplied add-cbrt-cube13.2
Simplified13.2
Final simplification18.7
herbie shell --seed 2019209 +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.379333748723514e129) (- (* (* 2 (sqrt x)) (cos (- (/ 1 y) (/ (/ 0.333333333333333315 z) t)))) (/ (/ a 3) b)) (if (< z 3.51629061355598715e106) (- (* (* (sqrt x) 2) (cos (- y (* (/ t 3) z)))) (/ (/ a 3) b)) (- (* (cos (- y (/ (/ 0.333333333333333315 z) t))) (* 2 (sqrt x))) (/ (/ a b) 3))))
(- (* (* 2 (sqrt x)) (cos (- y (/ (* z t) 3)))) (/ a (* b 3))))