Average Error: 7.8 → 5.9
Time: 23.1s
Precision: 64
\[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
\[\begin{array}{l} \mathbf{if}\;y \le -2.533105956566150453691798226802600655785 \cdot 10^{104}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \frac{-1}{a} \cdot \left(\frac{t}{2} \cdot \left(z \cdot 9\right)\right)\right)\\ \mathbf{elif}\;y \le -3.885985235426316444017397086779776257223 \cdot 10^{-193}:\\ \;\;\;\;\mathsf{fma}\left(x \cdot y, \frac{1}{a \cdot 2}, -\frac{t}{2} \cdot \frac{z \cdot 9}{a}\right) + \frac{z \cdot 9}{a} \cdot \left(\left(-\frac{t}{2}\right) + \frac{t}{2}\right)\\ \mathbf{elif}\;y \le 8.871629807142084181809158432334469804898 \cdot 10^{-27}:\\ \;\;\;\;\frac{x \cdot y}{a \cdot 2} - 4.5 \cdot \frac{t \cdot z}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \left(-\frac{t}{2}\right) \cdot \frac{z}{\frac{a}{9}}\right)\\ \end{array}\]
\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}
\begin{array}{l}
\mathbf{if}\;y \le -2.533105956566150453691798226802600655785 \cdot 10^{104}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \frac{-1}{a} \cdot \left(\frac{t}{2} \cdot \left(z \cdot 9\right)\right)\right)\\

\mathbf{elif}\;y \le -3.885985235426316444017397086779776257223 \cdot 10^{-193}:\\
\;\;\;\;\mathsf{fma}\left(x \cdot y, \frac{1}{a \cdot 2}, -\frac{t}{2} \cdot \frac{z \cdot 9}{a}\right) + \frac{z \cdot 9}{a} \cdot \left(\left(-\frac{t}{2}\right) + \frac{t}{2}\right)\\

\mathbf{elif}\;y \le 8.871629807142084181809158432334469804898 \cdot 10^{-27}:\\
\;\;\;\;\frac{x \cdot y}{a \cdot 2} - 4.5 \cdot \frac{t \cdot z}{a}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \left(-\frac{t}{2}\right) \cdot \frac{z}{\frac{a}{9}}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r576600 = x;
        double r576601 = y;
        double r576602 = r576600 * r576601;
        double r576603 = z;
        double r576604 = 9.0;
        double r576605 = r576603 * r576604;
        double r576606 = t;
        double r576607 = r576605 * r576606;
        double r576608 = r576602 - r576607;
        double r576609 = a;
        double r576610 = 2.0;
        double r576611 = r576609 * r576610;
        double r576612 = r576608 / r576611;
        return r576612;
}

double f(double x, double y, double z, double t, double a) {
        double r576613 = y;
        double r576614 = -2.5331059565661505e+104;
        bool r576615 = r576613 <= r576614;
        double r576616 = x;
        double r576617 = a;
        double r576618 = r576616 / r576617;
        double r576619 = 2.0;
        double r576620 = r576613 / r576619;
        double r576621 = -1.0;
        double r576622 = r576621 / r576617;
        double r576623 = t;
        double r576624 = r576623 / r576619;
        double r576625 = z;
        double r576626 = 9.0;
        double r576627 = r576625 * r576626;
        double r576628 = r576624 * r576627;
        double r576629 = r576622 * r576628;
        double r576630 = fma(r576618, r576620, r576629);
        double r576631 = -3.8859852354263164e-193;
        bool r576632 = r576613 <= r576631;
        double r576633 = r576616 * r576613;
        double r576634 = 1.0;
        double r576635 = r576617 * r576619;
        double r576636 = r576634 / r576635;
        double r576637 = r576627 / r576617;
        double r576638 = r576624 * r576637;
        double r576639 = -r576638;
        double r576640 = fma(r576633, r576636, r576639);
        double r576641 = -r576624;
        double r576642 = r576641 + r576624;
        double r576643 = r576637 * r576642;
        double r576644 = r576640 + r576643;
        double r576645 = 8.871629807142084e-27;
        bool r576646 = r576613 <= r576645;
        double r576647 = r576633 / r576635;
        double r576648 = 4.5;
        double r576649 = r576623 * r576625;
        double r576650 = r576649 / r576617;
        double r576651 = r576648 * r576650;
        double r576652 = r576647 - r576651;
        double r576653 = r576617 / r576626;
        double r576654 = r576625 / r576653;
        double r576655 = r576641 * r576654;
        double r576656 = fma(r576618, r576620, r576655);
        double r576657 = r576646 ? r576652 : r576656;
        double r576658 = r576632 ? r576644 : r576657;
        double r576659 = r576615 ? r576630 : r576658;
        return r576659;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original7.8
Target5.8
Herbie5.9
\[\begin{array}{l} \mathbf{if}\;a \lt -2.090464557976709043451944897028999329376 \cdot 10^{86}:\\ \;\;\;\;0.5 \cdot \frac{y \cdot x}{a} - 4.5 \cdot \frac{t}{\frac{a}{z}}\\ \mathbf{elif}\;a \lt 2.144030707833976090627817222818061808815 \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 4 regimes
  2. if y < -2.5331059565661505e+104

    1. Initial program 15.7

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

      \[\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.9

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, -\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\right)}\]
    7. Simplified6.6

      \[\leadsto \mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \color{blue}{\left(-\frac{t}{2}\right) \cdot \frac{z \cdot 9}{a}}\right)\]
    8. Using strategy rm
    9. Applied div-inv6.6

      \[\leadsto \mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \left(-\frac{t}{2}\right) \cdot \color{blue}{\left(\left(z \cdot 9\right) \cdot \frac{1}{a}\right)}\right)\]
    10. Applied associate-*r*8.9

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

    if -2.5331059565661505e+104 < y < -3.8859852354263164e-193

    1. Initial program 5.6

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Using strategy rm
    3. Applied div-sub5.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 add-cube-cbrt6.0

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

      \[\leadsto \color{blue}{\left(x \cdot y\right) \cdot \frac{1}{a \cdot 2}} - \left(\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\right) \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\]
    7. Applied prod-diff6.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(x \cdot y, \frac{1}{a \cdot 2}, -\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \left(\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}, \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}, \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \left(\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\right)\right)}\]
    8. Simplified9.5

      \[\leadsto \color{blue}{\mathsf{fma}\left(x \cdot y, \frac{1}{a \cdot 2}, -\frac{t}{2} \cdot \frac{z \cdot 9}{a}\right)} + \mathsf{fma}\left(-\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}, \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}, \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \left(\sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}} \cdot \sqrt[3]{\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\right)\right)\]
    9. Simplified5.7

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

    if -3.8859852354263164e-193 < y < 8.871629807142084e-27

    1. Initial program 4.7

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

      \[\leadsto \color{blue}{\frac{x \cdot y}{a \cdot 2} - \frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}}\]
    4. Taylor expanded around 0 4.7

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

    if 8.871629807142084e-27 < y

    1. Initial program 10.5

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

      \[\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-frac7.9

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, -\frac{\left(z \cdot 9\right) \cdot t}{a \cdot 2}\right)}\]
    7. Simplified6.4

      \[\leadsto \mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \color{blue}{\left(-\frac{t}{2}\right) \cdot \frac{z \cdot 9}{a}}\right)\]
    8. Using strategy rm
    9. Applied associate-/l*6.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -2.533105956566150453691798226802600655785 \cdot 10^{104}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \frac{-1}{a} \cdot \left(\frac{t}{2} \cdot \left(z \cdot 9\right)\right)\right)\\ \mathbf{elif}\;y \le -3.885985235426316444017397086779776257223 \cdot 10^{-193}:\\ \;\;\;\;\mathsf{fma}\left(x \cdot y, \frac{1}{a \cdot 2}, -\frac{t}{2} \cdot \frac{z \cdot 9}{a}\right) + \frac{z \cdot 9}{a} \cdot \left(\left(-\frac{t}{2}\right) + \frac{t}{2}\right)\\ \mathbf{elif}\;y \le 8.871629807142084181809158432334469804898 \cdot 10^{-27}:\\ \;\;\;\;\frac{x \cdot y}{a \cdot 2} - 4.5 \cdot \frac{t \cdot z}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{a}, \frac{y}{2}, \left(-\frac{t}{2}\right) \cdot \frac{z}{\frac{a}{9}}\right)\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< a -2.090464557976709e86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.14403070783397609e99) (/ (- (* x y) (* z (* 9 t))) (* a 2)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))

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