Average Error: 7.7 → 0.5
Time: 5.2s
Precision: 64
\[\frac{\cosh x \cdot \frac{y}{x}}{z}\]
\[\begin{array}{l} \mathbf{if}\;y \le -5.01900006072222914379297612862204481415 \cdot 10^{-35} \lor \neg \left(y \le 2.115191367755841562647547400301365035298 \cdot 10^{-51}\right):\\ \;\;\;\;\frac{\frac{\cosh x \cdot y}{z}}{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(e^{-1 \cdot x} + e^{x}\right)}{\frac{x}{y}}}{z}\\ \end{array}\]
\frac{\cosh x \cdot \frac{y}{x}}{z}
\begin{array}{l}
\mathbf{if}\;y \le -5.01900006072222914379297612862204481415 \cdot 10^{-35} \lor \neg \left(y \le 2.115191367755841562647547400301365035298 \cdot 10^{-51}\right):\\
\;\;\;\;\frac{\frac{\cosh x \cdot y}{z}}{x}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(e^{-1 \cdot x} + e^{x}\right)}{\frac{x}{y}}}{z}\\

\end{array}
double f(double x, double y, double z) {
        double r445514 = x;
        double r445515 = cosh(r445514);
        double r445516 = y;
        double r445517 = r445516 / r445514;
        double r445518 = r445515 * r445517;
        double r445519 = z;
        double r445520 = r445518 / r445519;
        return r445520;
}

double f(double x, double y, double z) {
        double r445521 = y;
        double r445522 = -5.019000060722229e-35;
        bool r445523 = r445521 <= r445522;
        double r445524 = 2.1151913677558416e-51;
        bool r445525 = r445521 <= r445524;
        double r445526 = !r445525;
        bool r445527 = r445523 || r445526;
        double r445528 = x;
        double r445529 = cosh(r445528);
        double r445530 = r445529 * r445521;
        double r445531 = z;
        double r445532 = r445530 / r445531;
        double r445533 = r445532 / r445528;
        double r445534 = 0.5;
        double r445535 = -1.0;
        double r445536 = r445535 * r445528;
        double r445537 = exp(r445536);
        double r445538 = exp(r445528);
        double r445539 = r445537 + r445538;
        double r445540 = r445534 * r445539;
        double r445541 = r445528 / r445521;
        double r445542 = r445540 / r445541;
        double r445543 = r445542 / r445531;
        double r445544 = r445527 ? r445533 : r445543;
        return r445544;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original7.7
Target0.5
Herbie0.5
\[\begin{array}{l} \mathbf{if}\;y \lt -4.618902267687041990497740832940559043667 \cdot 10^{-52}:\\ \;\;\;\;\frac{\frac{y}{z}}{x} \cdot \cosh x\\ \mathbf{elif}\;y \lt 1.038530535935153018369520384190862667426 \cdot 10^{-39}:\\ \;\;\;\;\frac{\frac{\cosh x \cdot y}{x}}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{y}{z}}{x} \cdot \cosh x\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -5.019000060722229e-35 or 2.1151913677558416e-51 < y

    1. Initial program 17.1

      \[\frac{\cosh x \cdot \frac{y}{x}}{z}\]
    2. Using strategy rm
    3. Applied div-inv17.2

      \[\leadsto \color{blue}{\left(\cosh x \cdot \frac{y}{x}\right) \cdot \frac{1}{z}}\]
    4. Using strategy rm
    5. Applied associate-*r/17.2

      \[\leadsto \color{blue}{\frac{\cosh x \cdot y}{x}} \cdot \frac{1}{z}\]
    6. Applied associate-*l/0.9

      \[\leadsto \color{blue}{\frac{\left(\cosh x \cdot y\right) \cdot \frac{1}{z}}{x}}\]
    7. Simplified0.8

      \[\leadsto \frac{\color{blue}{\frac{\cosh x \cdot y}{z}}}{x}\]

    if -5.019000060722229e-35 < y < 2.1151913677558416e-51

    1. Initial program 0.3

      \[\frac{\cosh x \cdot \frac{y}{x}}{z}\]
    2. Taylor expanded around inf 0.3

      \[\leadsto \frac{\color{blue}{\frac{y \cdot \left(\frac{1}{2} \cdot e^{x} + \frac{1}{2} \cdot e^{-x}\right)}{x}}}{z}\]
    3. Simplified0.3

      \[\leadsto \frac{\color{blue}{\frac{\frac{1}{2} \cdot \left(e^{-1 \cdot x} + e^{x}\right)}{\frac{x}{y}}}}{z}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -5.01900006072222914379297612862204481415 \cdot 10^{-35} \lor \neg \left(y \le 2.115191367755841562647547400301365035298 \cdot 10^{-51}\right):\\ \;\;\;\;\frac{\frac{\cosh x \cdot y}{z}}{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(e^{-1 \cdot x} + e^{x}\right)}{\frac{x}{y}}}{z}\\ \end{array}\]

Reproduce

herbie shell --seed 2019322 
(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))