\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, z \cdot \frac{t}{3}\right)\right) \cdot \cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{t}{3} \cdot \left(-z\right)\right)\right) - \sin \left(\mathsf{fma}\left(-\frac{t}{3}, z, z \cdot \frac{t}{3}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{t}{3} \cdot \left(-z\right)\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 r30386969 = 2.0;
double r30386970 = x;
double r30386971 = sqrt(r30386970);
double r30386972 = r30386969 * r30386971;
double r30386973 = y;
double r30386974 = z;
double r30386975 = t;
double r30386976 = r30386974 * r30386975;
double r30386977 = 3.0;
double r30386978 = r30386976 / r30386977;
double r30386979 = r30386973 - r30386978;
double r30386980 = cos(r30386979);
double r30386981 = r30386972 * r30386980;
double r30386982 = a;
double r30386983 = b;
double r30386984 = r30386983 * r30386977;
double r30386985 = r30386982 / r30386984;
double r30386986 = r30386981 - r30386985;
return r30386986;
}
double f(double x, double y, double z, double t, double a, double b) {
double r30386987 = y;
double r30386988 = -519168038.2262618;
bool r30386989 = r30386987 <= r30386988;
double r30386990 = 2.0;
double r30386991 = x;
double r30386992 = sqrt(r30386991);
double r30386993 = r30386990 * r30386992;
double r30386994 = sin(r30386987);
double r30386995 = t;
double r30386996 = 3.0;
double r30386997 = sqrt(r30386996);
double r30386998 = r30386995 / r30386997;
double r30386999 = z;
double r30387000 = r30386999 / r30386997;
double r30387001 = r30386998 * r30387000;
double r30387002 = sin(r30387001);
double r30387003 = r30386994 * r30387002;
double r30387004 = cos(r30386987);
double r30387005 = r30386995 * r30386999;
double r30387006 = r30387005 / r30386996;
double r30387007 = cos(r30387006);
double r30387008 = r30387004 * r30387007;
double r30387009 = r30387003 + r30387008;
double r30387010 = r30386993 * r30387009;
double r30387011 = a;
double r30387012 = b;
double r30387013 = r30387011 / r30387012;
double r30387014 = r30387013 / r30386996;
double r30387015 = r30387010 - r30387014;
double r30387016 = 1.1505339337432292e-20;
bool r30387017 = r30386987 <= r30387016;
double r30387018 = r30386995 / r30386996;
double r30387019 = -r30387018;
double r30387020 = r30386999 * r30387018;
double r30387021 = fma(r30387019, r30386999, r30387020);
double r30387022 = cos(r30387021);
double r30387023 = cbrt(r30386987);
double r30387024 = r30387023 * r30387023;
double r30387025 = -r30386999;
double r30387026 = r30387018 * r30387025;
double r30387027 = fma(r30387024, r30387023, r30387026);
double r30387028 = cos(r30387027);
double r30387029 = r30387022 * r30387028;
double r30387030 = sin(r30387021);
double r30387031 = sin(r30387027);
double r30387032 = r30387030 * r30387031;
double r30387033 = r30387029 - r30387032;
double r30387034 = r30386993 * r30387033;
double r30387035 = r30386996 * r30387012;
double r30387036 = r30387011 / r30387035;
double r30387037 = r30387034 - r30387036;
double r30387038 = r30387008 * r30387008;
double r30387039 = sin(r30387006);
double r30387040 = r30387039 * r30386994;
double r30387041 = r30387040 * r30387040;
double r30387042 = r30387038 - r30387041;
double r30387043 = r30387042 * r30386993;
double r30387044 = r30387008 - r30387040;
double r30387045 = r30387043 / r30387044;
double r30387046 = r30387045 - r30387014;
double r30387047 = r30387017 ? r30387037 : r30387046;
double r30387048 = r30386989 ? r30387015 : r30387047;
return r30387048;
}




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))))