Average Error: 7.4 → 0.6
Time: 15.7s
Precision: 64
\[\frac{\cosh x \cdot \frac{y}{x}}{z}\]
\[\begin{array}{l} \mathbf{if}\;\frac{y}{x} \cdot \cosh x \le -5.426249605328372 \cdot 10^{+191}:\\ \;\;\;\;\frac{\frac{\left(e^{-x} + e^{x}\right) \cdot y}{z}}{x \cdot 2}\\ \mathbf{elif}\;\frac{y}{x} \cdot \cosh x \le 4.221442743175407 \cdot 10^{+198}:\\ \;\;\;\;\left(\frac{y}{x} \cdot \cosh x\right) \cdot \frac{1}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{z}}{x \cdot 2} \cdot \left(\left(e^{-x} + e^{x}\right) \cdot y\right)\\ \end{array}\]
\frac{\cosh x \cdot \frac{y}{x}}{z}
\begin{array}{l}
\mathbf{if}\;\frac{y}{x} \cdot \cosh x \le -5.426249605328372 \cdot 10^{+191}:\\
\;\;\;\;\frac{\frac{\left(e^{-x} + e^{x}\right) \cdot y}{z}}{x \cdot 2}\\

\mathbf{elif}\;\frac{y}{x} \cdot \cosh x \le 4.221442743175407 \cdot 10^{+198}:\\
\;\;\;\;\left(\frac{y}{x} \cdot \cosh x\right) \cdot \frac{1}{z}\\

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

\end{array}
double f(double x, double y, double z) {
        double r22936325 = x;
        double r22936326 = cosh(r22936325);
        double r22936327 = y;
        double r22936328 = r22936327 / r22936325;
        double r22936329 = r22936326 * r22936328;
        double r22936330 = z;
        double r22936331 = r22936329 / r22936330;
        return r22936331;
}

double f(double x, double y, double z) {
        double r22936332 = y;
        double r22936333 = x;
        double r22936334 = r22936332 / r22936333;
        double r22936335 = cosh(r22936333);
        double r22936336 = r22936334 * r22936335;
        double r22936337 = -5.426249605328372e+191;
        bool r22936338 = r22936336 <= r22936337;
        double r22936339 = -r22936333;
        double r22936340 = exp(r22936339);
        double r22936341 = exp(r22936333);
        double r22936342 = r22936340 + r22936341;
        double r22936343 = r22936342 * r22936332;
        double r22936344 = z;
        double r22936345 = r22936343 / r22936344;
        double r22936346 = 2.0;
        double r22936347 = r22936333 * r22936346;
        double r22936348 = r22936345 / r22936347;
        double r22936349 = 4.221442743175407e+198;
        bool r22936350 = r22936336 <= r22936349;
        double r22936351 = 1.0;
        double r22936352 = r22936351 / r22936344;
        double r22936353 = r22936336 * r22936352;
        double r22936354 = r22936352 / r22936347;
        double r22936355 = r22936354 * r22936343;
        double r22936356 = r22936350 ? r22936353 : r22936355;
        double r22936357 = r22936338 ? r22936348 : r22936356;
        return r22936357;
}

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.4
Target0.4
Herbie0.6
\[\begin{array}{l} \mathbf{if}\;y \lt -4.618902267687042 \cdot 10^{-52}:\\ \;\;\;\;\frac{\frac{y}{z}}{x} \cdot \cosh x\\ \mathbf{elif}\;y \lt 1.038530535935153 \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 3 regimes
  2. if (* (cosh x) (/ y x)) < -5.426249605328372e+191

    1. Initial program 25.7

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

      \[\leadsto \frac{\color{blue}{\frac{e^{x} + e^{-x}}{2}} \cdot \frac{y}{x}}{z}\]
    4. Applied frac-times25.7

      \[\leadsto \frac{\color{blue}{\frac{\left(e^{x} + e^{-x}\right) \cdot y}{2 \cdot x}}}{z}\]
    5. Applied associate-/l/1.0

      \[\leadsto \color{blue}{\frac{\left(e^{x} + e^{-x}\right) \cdot y}{z \cdot \left(2 \cdot x\right)}}\]
    6. Using strategy rm
    7. Applied div-inv1.1

      \[\leadsto \color{blue}{\left(\left(e^{x} + e^{-x}\right) \cdot y\right) \cdot \frac{1}{z \cdot \left(2 \cdot x\right)}}\]
    8. Using strategy rm
    9. Applied associate-/r*1.0

      \[\leadsto \left(\left(e^{x} + e^{-x}\right) \cdot y\right) \cdot \color{blue}{\frac{\frac{1}{z}}{2 \cdot x}}\]
    10. Using strategy rm
    11. Applied associate-*r/1.2

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

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

    if -5.426249605328372e+191 < (* (cosh x) (/ y x)) < 4.221442743175407e+198

    1. Initial program 0.2

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

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

    if 4.221442743175407e+198 < (* (cosh x) (/ y x))

    1. Initial program 27.7

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

      \[\leadsto \frac{\color{blue}{\frac{e^{x} + e^{-x}}{2}} \cdot \frac{y}{x}}{z}\]
    4. Applied frac-times27.7

      \[\leadsto \frac{\color{blue}{\frac{\left(e^{x} + e^{-x}\right) \cdot y}{2 \cdot x}}}{z}\]
    5. Applied associate-/l/0.7

      \[\leadsto \color{blue}{\frac{\left(e^{x} + e^{-x}\right) \cdot y}{z \cdot \left(2 \cdot x\right)}}\]
    6. Using strategy rm
    7. Applied div-inv1.1

      \[\leadsto \color{blue}{\left(\left(e^{x} + e^{-x}\right) \cdot y\right) \cdot \frac{1}{z \cdot \left(2 \cdot x\right)}}\]
    8. Using strategy rm
    9. Applied associate-/r*1.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{y}{x} \cdot \cosh x \le -5.426249605328372 \cdot 10^{+191}:\\ \;\;\;\;\frac{\frac{\left(e^{-x} + e^{x}\right) \cdot y}{z}}{x \cdot 2}\\ \mathbf{elif}\;\frac{y}{x} \cdot \cosh x \le 4.221442743175407 \cdot 10^{+198}:\\ \;\;\;\;\left(\frac{y}{x} \cdot \cosh x\right) \cdot \frac{1}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{z}}{x \cdot 2} \cdot \left(\left(e^{-x} + e^{x}\right) \cdot y\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019164 +o rules:numerics
(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))