\frac{\cosh x \cdot \frac{y}{x}}{z}\cosh x \cdot \frac{y}{x \cdot z}double f(double x, double y, double z) {
double r376603 = x;
double r376604 = cosh(r376603);
double r376605 = y;
double r376606 = r376605 / r376603;
double r376607 = r376604 * r376606;
double r376608 = z;
double r376609 = r376607 / r376608;
return r376609;
}
double f(double x, double y, double z) {
double r376610 = x;
double r376611 = cosh(r376610);
double r376612 = y;
double r376613 = z;
double r376614 = r376610 * r376613;
double r376615 = r376612 / r376614;
double r376616 = r376611 * r376615;
return r376616;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.8 |
|---|---|
| Target | 0.4 |
| Herbie | 6.8 |
if y < -1.3966363234461108e-77 or 1.2004827862446334e-54 < y Initial program 16.1
rmApplied *-un-lft-identity16.1
Applied times-frac16.0
Simplified16.0
Simplified1.2
if -1.3966363234461108e-77 < y < 1.2004827862446334e-54Initial program 0.3
rmApplied div-inv0.4
Final simplification6.8
herbie shell --seed 2019297
(FPCore (x y z)
:name "Linear.Quaternion:$ctan from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< y -4.618902267687042e-52) (* (/ (/ y z) x) (cosh x)) (if (< y 1.03853053593515302e-39) (/ (/ (* (cosh x) y) x) z) (* (/ (/ y z) x) (cosh x))))
(/ (* (cosh x) (/ y x)) z))