Average Error: 7.7 → 4.0
Time: 7.0s
Precision: 64
\[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
\[\begin{array}{l} \mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -4.160669233039557 \cdot 10^{306}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -1.1575439955519718 \cdot 10^{-74}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 1.06019818429476599 \cdot 10^{-116}:\\ \;\;\;\;\frac{x \cdot y}{a \cdot 2} - \left(\frac{9}{a} \cdot \frac{t}{2}\right) \cdot z\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 2.8684979825191242 \cdot 10^{241}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\\ \end{array}\]
\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}
\begin{array}{l}
\mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -4.160669233039557 \cdot 10^{306}:\\
\;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\\

\mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -1.1575439955519718 \cdot 10^{-74}:\\
\;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\\

\mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 1.06019818429476599 \cdot 10^{-116}:\\
\;\;\;\;\frac{x \cdot y}{a \cdot 2} - \left(\frac{9}{a} \cdot \frac{t}{2}\right) \cdot z\\

\mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 2.8684979825191242 \cdot 10^{241}:\\
\;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r858659 = x;
        double r858660 = y;
        double r858661 = r858659 * r858660;
        double r858662 = z;
        double r858663 = 9.0;
        double r858664 = r858662 * r858663;
        double r858665 = t;
        double r858666 = r858664 * r858665;
        double r858667 = r858661 - r858666;
        double r858668 = a;
        double r858669 = 2.0;
        double r858670 = r858668 * r858669;
        double r858671 = r858667 / r858670;
        return r858671;
}

double f(double x, double y, double z, double t, double a) {
        double r858672 = z;
        double r858673 = 9.0;
        double r858674 = r858672 * r858673;
        double r858675 = t;
        double r858676 = r858674 * r858675;
        double r858677 = -4.160669233039557e+306;
        bool r858678 = r858676 <= r858677;
        double r858679 = x;
        double r858680 = 2.0;
        double r858681 = a;
        double r858682 = y;
        double r858683 = r858681 / r858682;
        double r858684 = r858680 * r858683;
        double r858685 = r858679 / r858684;
        double r858686 = r858674 / r858681;
        double r858687 = r858675 / r858680;
        double r858688 = r858686 * r858687;
        double r858689 = r858685 - r858688;
        double r858690 = -1.1575439955519718e-74;
        bool r858691 = r858676 <= r858690;
        double r858692 = r858681 * r858680;
        double r858693 = r858676 / r858692;
        double r858694 = r858685 - r858693;
        double r858695 = 1.060198184294766e-116;
        bool r858696 = r858676 <= r858695;
        double r858697 = r858679 * r858682;
        double r858698 = r858697 / r858692;
        double r858699 = r858673 / r858681;
        double r858700 = r858699 * r858687;
        double r858701 = r858700 * r858672;
        double r858702 = r858698 - r858701;
        double r858703 = 2.868497982519124e+241;
        bool r858704 = r858676 <= r858703;
        double r858705 = r858704 ? r858694 : r858689;
        double r858706 = r858696 ? r858702 : r858705;
        double r858707 = r858691 ? r858694 : r858706;
        double r858708 = r858678 ? r858689 : r858707;
        return r858708;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original7.7
Target5.8
Herbie4.0
\[\begin{array}{l} \mathbf{if}\;a \lt -2.090464557976709 \cdot 10^{86}:\\ \;\;\;\;0.5 \cdot \frac{y \cdot x}{a} - 4.5 \cdot \frac{t}{\frac{a}{z}}\\ \mathbf{elif}\;a \lt 2.14403070783397609 \cdot 10^{99}:\\ \;\;\;\;\frac{x \cdot y - z \cdot \left(9 \cdot t\right)}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{y}{a} \cdot \left(x \cdot 0.5\right) - \frac{t}{a} \cdot \left(z \cdot 4.5\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (* (* z 9.0) t) < -4.160669233039557e+306 or 2.868497982519124e+241 < (* (* z 9.0) t)

    1. Initial program 46.1

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Using strategy rm
    3. Applied div-sub46.1

      \[\leadsto \color{blue}{\frac{x \cdot y}{a \cdot 2} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\]
    4. Using strategy rm
    5. Applied times-frac8.0

      \[\leadsto \frac{x \cdot y}{a \cdot 2} - \color{blue}{\frac{z \cdot 9}{a} \cdot \frac{t}{2}}\]
    6. Using strategy rm
    7. Applied associate-/l*1.4

      \[\leadsto \color{blue}{\frac{x}{\frac{a \cdot 2}{y}}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\]
    8. Simplified1.4

      \[\leadsto \frac{x}{\color{blue}{2 \cdot \frac{a}{y}}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\]

    if -4.160669233039557e+306 < (* (* z 9.0) t) < -1.1575439955519718e-74 or 1.060198184294766e-116 < (* (* z 9.0) t) < 2.868497982519124e+241

    1. Initial program 4.0

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Using strategy rm
    3. Applied div-sub4.0

      \[\leadsto \color{blue}{\frac{x \cdot y}{a \cdot 2} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\]
    4. Using strategy rm
    5. Applied associate-/l*3.3

      \[\leadsto \color{blue}{\frac{x}{\frac{a \cdot 2}{y}}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    6. Simplified3.3

      \[\leadsto \frac{x}{\color{blue}{2 \cdot \frac{a}{y}}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\]

    if -1.1575439955519718e-74 < (* (* z 9.0) t) < 1.060198184294766e-116

    1. Initial program 4.6

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Using strategy rm
    3. Applied div-sub4.6

      \[\leadsto \color{blue}{\frac{x \cdot y}{a \cdot 2} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\]
    4. Using strategy rm
    5. Applied times-frac5.3

      \[\leadsto \frac{x \cdot y}{a \cdot 2} - \color{blue}{\frac{z \cdot 9}{a} \cdot \frac{t}{2}}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity5.3

      \[\leadsto \frac{x \cdot y}{a \cdot 2} - \frac{z \cdot 9}{\color{blue}{1 \cdot a}} \cdot \frac{t}{2}\]
    8. Applied times-frac5.3

      \[\leadsto \frac{x \cdot y}{a \cdot 2} - \color{blue}{\left(\frac{z}{1} \cdot \frac{9}{a}\right)} \cdot \frac{t}{2}\]
    9. Applied associate-*l*5.4

      \[\leadsto \frac{x \cdot y}{a \cdot 2} - \color{blue}{\frac{z}{1} \cdot \left(\frac{9}{a} \cdot \frac{t}{2}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -4.160669233039557 \cdot 10^{306}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -1.1575439955519718 \cdot 10^{-74}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 1.06019818429476599 \cdot 10^{-116}:\\ \;\;\;\;\frac{x \cdot y}{a \cdot 2} - \left(\frac{9}{a} \cdot \frac{t}{2}\right) \cdot z\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 2.8684979825191242 \cdot 10^{241}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{2 \cdot \frac{a}{y}} - \frac{z \cdot 9}{a} \cdot \frac{t}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2020046 
(FPCore (x y z t a)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, I"
  :precision binary64

  :herbie-target
  (if (< a -2.090464557976709e+86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.144030707833976e+99) (/ (- (* x y) (* z (* 9 t))) (* a 2)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))

  (/ (- (* x y) (* (* z 9) t)) (* a 2)))