Average Error: 2.6 → 0.2
Time: 21.3s
Precision: 64
\[\frac{x \cdot \frac{\sin y}{y}}{z}\]
\[\begin{array}{l} \mathbf{if}\;z \le -3.629406164941695116737539545868878186622 \cdot 10^{-19}:\\ \;\;\;\;\frac{\left(\frac{1}{y} \cdot \sin y\right) \cdot x}{z}\\ \mathbf{elif}\;z \le 67082210.6168034374713897705078125:\\ \;\;\;\;\frac{\frac{\sin y}{y}}{z} \cdot x\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{x}{\frac{y}{\sin y}}}{z}\\ \end{array}\]
\frac{x \cdot \frac{\sin y}{y}}{z}
\begin{array}{l}
\mathbf{if}\;z \le -3.629406164941695116737539545868878186622 \cdot 10^{-19}:\\
\;\;\;\;\frac{\left(\frac{1}{y} \cdot \sin y\right) \cdot x}{z}\\

\mathbf{elif}\;z \le 67082210.6168034374713897705078125:\\
\;\;\;\;\frac{\frac{\sin y}{y}}{z} \cdot x\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{\frac{y}{\sin y}}}{z}\\

\end{array}
double f(double x, double y, double z) {
        double r20433479 = x;
        double r20433480 = y;
        double r20433481 = sin(r20433480);
        double r20433482 = r20433481 / r20433480;
        double r20433483 = r20433479 * r20433482;
        double r20433484 = z;
        double r20433485 = r20433483 / r20433484;
        return r20433485;
}

double f(double x, double y, double z) {
        double r20433486 = z;
        double r20433487 = -3.629406164941695e-19;
        bool r20433488 = r20433486 <= r20433487;
        double r20433489 = 1.0;
        double r20433490 = y;
        double r20433491 = r20433489 / r20433490;
        double r20433492 = sin(r20433490);
        double r20433493 = r20433491 * r20433492;
        double r20433494 = x;
        double r20433495 = r20433493 * r20433494;
        double r20433496 = r20433495 / r20433486;
        double r20433497 = 67082210.61680344;
        bool r20433498 = r20433486 <= r20433497;
        double r20433499 = r20433492 / r20433490;
        double r20433500 = r20433499 / r20433486;
        double r20433501 = r20433500 * r20433494;
        double r20433502 = r20433490 / r20433492;
        double r20433503 = r20433494 / r20433502;
        double r20433504 = r20433503 / r20433486;
        double r20433505 = r20433498 ? r20433501 : r20433504;
        double r20433506 = r20433488 ? r20433496 : r20433505;
        return r20433506;
}

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

Original2.6
Target0.3
Herbie0.2
\[\begin{array}{l} \mathbf{if}\;z \lt -4.217372020342714661850238929213415773451 \cdot 10^{-29}:\\ \;\;\;\;\frac{x \cdot \frac{1}{\frac{y}{\sin y}}}{z}\\ \mathbf{elif}\;z \lt 4.446702369113811028051510715777703865332 \cdot 10^{64}:\\ \;\;\;\;\frac{x}{z \cdot \frac{y}{\sin y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \frac{1}{\frac{y}{\sin y}}}{z}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if z < -3.629406164941695e-19

    1. Initial program 0.1

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

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

    if -3.629406164941695e-19 < z < 67082210.61680344

    1. Initial program 5.6

      \[\frac{x \cdot \frac{\sin y}{y}}{z}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity5.6

      \[\leadsto \frac{x \cdot \frac{\sin y}{y}}{\color{blue}{1 \cdot z}}\]
    4. Applied times-frac0.3

      \[\leadsto \color{blue}{\frac{x}{1} \cdot \frac{\frac{\sin y}{y}}{z}}\]
    5. Simplified0.3

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

    if 67082210.61680344 < z

    1. Initial program 0.1

      \[\frac{x \cdot \frac{\sin y}{y}}{z}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.8

      \[\leadsto \frac{x \cdot \frac{\sin y}{y}}{\color{blue}{\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}}}\]
    4. Applied times-frac1.6

      \[\leadsto \color{blue}{\frac{x}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \frac{\frac{\sin y}{y}}{\sqrt[3]{z}}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity1.6

      \[\leadsto \color{blue}{\left(1 \cdot \frac{x}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right)} \cdot \frac{\frac{\sin y}{y}}{\sqrt[3]{z}}\]
    7. Applied associate-*l*1.6

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

      \[\leadsto 1 \cdot \color{blue}{\frac{\frac{x}{\frac{y}{\sin y}}}{z}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -3.629406164941695116737539545868878186622 \cdot 10^{-19}:\\ \;\;\;\;\frac{\left(\frac{1}{y} \cdot \sin y\right) \cdot x}{z}\\ \mathbf{elif}\;z \le 67082210.6168034374713897705078125:\\ \;\;\;\;\frac{\frac{\sin y}{y}}{z} \cdot x\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{x}{\frac{y}{\sin y}}}{z}\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z)
  :name "Linear.Quaternion:$ctanh from linear-1.19.1.3"

  :herbie-target
  (if (< z -4.2173720203427147e-29) (/ (* x (/ 1.0 (/ y (sin y)))) z) (if (< z 4.446702369113811e+64) (/ x (* z (/ y (sin y)))) (/ (* x (/ 1.0 (/ y (sin y)))) z)))

  (/ (* x (/ (sin y) y)) z))