\frac{\cosh x \cdot \frac{y}{x}}{z}\begin{array}{l}
\mathbf{if}\;z \le -3.1569808277222708 \cdot 10^{-65}:\\
\;\;\;\;\frac{\left(\sqrt[3]{\cosh x} \cdot \sqrt[3]{\cosh x}\right) \cdot \left(y \cdot \sqrt[3]{\cosh x}\right)}{x \cdot z}\\
\mathbf{elif}\;z \le 2.102710110923131 \cdot 10^{-20}:\\
\;\;\;\;\frac{\left(\frac{\frac{1}{2}}{e^{x}} + \frac{1}{2} \cdot e^{x}\right) \cdot \frac{y}{z}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\sqrt[3]{\cosh x} \cdot \sqrt[3]{\cosh x}\right) \cdot \left(y \cdot \sqrt[3]{\cosh x}\right)}{x \cdot z}\\
\end{array}double f(double x, double y, double z) {
double r24793091 = x;
double r24793092 = cosh(r24793091);
double r24793093 = y;
double r24793094 = r24793093 / r24793091;
double r24793095 = r24793092 * r24793094;
double r24793096 = z;
double r24793097 = r24793095 / r24793096;
return r24793097;
}
double f(double x, double y, double z) {
double r24793098 = z;
double r24793099 = -3.1569808277222708e-65;
bool r24793100 = r24793098 <= r24793099;
double r24793101 = x;
double r24793102 = cosh(r24793101);
double r24793103 = cbrt(r24793102);
double r24793104 = r24793103 * r24793103;
double r24793105 = y;
double r24793106 = r24793105 * r24793103;
double r24793107 = r24793104 * r24793106;
double r24793108 = r24793101 * r24793098;
double r24793109 = r24793107 / r24793108;
double r24793110 = 2.102710110923131e-20;
bool r24793111 = r24793098 <= r24793110;
double r24793112 = 0.5;
double r24793113 = exp(r24793101);
double r24793114 = r24793112 / r24793113;
double r24793115 = r24793112 * r24793113;
double r24793116 = r24793114 + r24793115;
double r24793117 = r24793105 / r24793098;
double r24793118 = r24793116 * r24793117;
double r24793119 = r24793118 / r24793101;
double r24793120 = r24793111 ? r24793119 : r24793109;
double r24793121 = r24793100 ? r24793109 : r24793120;
return r24793121;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.4 |
|---|---|
| Target | 0.5 |
| Herbie | 0.4 |
if z < -3.1569808277222708e-65 or 2.102710110923131e-20 < z Initial program 10.3
rmApplied add-cube-cbrt10.3
Applied associate-*l*10.3
rmApplied associate-*r/10.3
Applied associate-*r/10.3
Applied associate-/l/0.5
if -3.1569808277222708e-65 < z < 2.102710110923131e-20Initial program 0.3
Taylor expanded around inf 22.4
Simplified0.3
Final simplification0.4
herbie shell --seed 2019162
(FPCore (x y z)
:name "Linear.Quaternion:$ctan from linear-1.19.1.3"
:herbie-target
(if (< y -4.618902267687042e-52) (* (/ (/ y z) x) (cosh x)) (if (< y 1.038530535935153e-39) (/ (/ (* (cosh x) y) x) z) (* (/ (/ y z) x) (cosh x))))
(/ (* (cosh x) (/ y x)) z))